diff options
author | Thomas McDonald <tom@conceptcoding.co.uk> | 2012-05-14 00:30:56 +0400 |
---|---|---|
committer | Thomas McDonald <tom@conceptcoding.co.uk> | 2012-05-14 00:30:56 +0400 |
commit | 2d3cfe1791ef2d05fd6c6bc7ea0b435221e8765d (patch) | |
tree | 7b8c4fdf527740bd126f27c9db0f252193863ed2 | |
parent | c47196e25193a4f0a2c146d5b62e5f8e30ec5ceb (diff) | |
parent | 76ddb93ccf66913c3b8c4d51933daa726705eaf4 (diff) |
Merge branch '2.0.3'v2.0.3
52 files changed, 1095 insertions, 701 deletions
@@ -1,2 +1,3 @@ *.gem - +.sass-cache +debug.css
\ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..6a649f6f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: ruby +rvm: + - 1.9.3 + - jruby-19mode +gemfile: + - test/gemfiles/sass_3_1.gemfile + - test/gemfiles/sass_head.gemfile
\ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0494a534..6b4e4e56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,17 @@ # Changelog +## 2.0.3 (Unreleased) +* Updated to Bootstrap 2.0.3 +* [#106] Support for Rails < 3.1 through Compass +* [#132] Add CI testing +* [#106] Support Rails w/Compass +* [#134] Fix support for Rails w/Compass + ## 2.0.2 * [#86] Updated to Bootstrap 2.0.2 Things of note: static navbars now have full width. (to be fixed in 2.0.3) `.navbar-inner > .container { width:940px; }` seems to work in the meanwhile * [#62] Fixed asset compilation taking a *very* long time. -* [#69, #79, #80] (Hopefully) clarified README. Now with less cat humour. +* [#69, #79, #80] \(Hopefully) clarified README. Now with less cat humour. * [#91] Removed doubled up Sass extensions for Rails. * [#63, #73] Allow for overriding of image-path * [[SO](http://stackoverflow.com/a/9909626/241212)] Added makeFluidColumn mixin for defining fluid columns. Fluid rows must use `@extend .row-fluid`, and any column inside it can use `@include makeFluidColumn(num)`, where `num` is the number of columns. Unfortunately, there is a rather major limitation to this: margins on first-child elements must be overriden. See the attached Stack Overflow answer for more information. @@ -1,11 +1,13 @@ # Bootstrap for Sass +[![Build Status](https://secure.travis-ci.org/thomas-mcdonald/bootstrap-sass.png?branch=master)](http://travis-ci.org/thomas-mcdonald/bootstrap-sass) + `bootstrap-sass` is an Sass-powered version of [Twitter's Bootstrap](http://github.com/twitter/bootstrap), ready to drop right into your Sass powered applications. Enjoy. ## Updating -Updating your application to a new version of `bootstrap-sass`? See [our changelog](https://github.com/thomas-mcdonald/bootstrap-sass/blob/master/CHANGELOG.md), [Bootstrap's changelog](https://github.com/twitter/bootstrap/wiki/Changelog), and this [guide to updating to Bootstrap 2.0](http://twitter.github.com/bootstrap/upgrading.html) +Updating your application to a new version of `bootstrap-sass`? See our [changelog](https://github.com/thomas-mcdonald/bootstrap-sass/blob/master/CHANGELOG.md), [Bootstrap's changelog](https://github.com/twitter/bootstrap/wiki/Changelog), and this [guide to updating to Bootstrap 2.0](http://twitter.github.com/bootstrap/upgrading.html) ## Usage @@ -14,7 +16,7 @@ Updating your application to a new version of `bootstrap-sass`? See [our changel In your Gemfile: gem 'sass-rails', '~> 3.1' - gem 'bootstrap-sass', '~> 2.0.2' + gem 'bootstrap-sass', '~> 2.0.3' #### CSS @@ -22,21 +24,6 @@ Import "bootstrap" in your SCSS file of choice to get all of Bootstrap's styles, @import "bootstrap"; -Need to configure a variable or two? Simple define the value of the variable you want to change *before* importing Bootstrap. Sass will respect your existing definition rather than overwriting it with the Bootstrap defaults. A list of customisable variables can be found in the [Bootstrap documentation](http://twitter.github.com/bootstrap/less.html#variables). - - $primaryButtonBackground: #f00; - @import "bootstrap"; - -**Note**: It's important that the file you are importing is not named `bootstrap`, since this will cause an import loop. As a general rule, errors are something you should try to avoid. - -##### Passing multiple values to mixins - -Some CSS3 properties take multiple values, such as `box-shadow` or `text-shadow`. To pass multiple values to the Bootstrap mixins, you must escape the values or else the Sass parser will choke on the commas. Here's how to escape the values in Sass: - - .selector { - @include box-shadow(#{0 2px 5px rgba(0,0,0,.25) inset, 0 -2px 5px rgba(0,0,0,.25) inset}); - } - #### Javascripts You can include the Bootstrap javascripts through two methods. In this case, Sprocket's `//= require` directives are useful, since there is no better alternative. @@ -84,6 +71,27 @@ Install the gem, add the require statement to the top of your configuration file You'll get the same benefits as those starting from scratch. Radical. ----- +## Configuration +Need to configure a variable or two? Simply define the value of the variable you want to change *before* importing Bootstrap. Sass will respect your existing definition rather than overwriting it with the Bootstrap defaults. A list of customisable variables can be found in the [Bootstrap documentation](http://twitter.github.com/bootstrap/less.html#variables). + $btnPrimaryBackground: #f00; + @import "bootstrap"; + +**Note**: It's important that the file you are importing is not named `bootstrap`, since this will cause an import loop. As a general rule, errors are something you should try to avoid. + +### Passing multiple values to mixins + +Some CSS3 properties take multiple values, such as `box-shadow` or `text-shadow`. To pass multiple values to the Bootstrap mixins, you must escape the values or else the Sass parser will choke on the commas. Here's how to escape the values in Sass: + + .selector { + @include box-shadow(#{0 2px 5px rgba(0,0,0,.25) inset, 0 -2px 5px rgba(0,0,0,.25) inset}); + } + +### Responsive styling? As per the Bootstrap project we don't include the responsive styles by default. `@import "bootstrap-responsive";` to get them. + +## Who +bootstrap-sass is a project by [Thomas McDonald](https://twitter.com/#!/thomasmcdonald_), with support from [other awesome people](https://github.com/thomas-mcdonald/bootstrap-sass/graphs/contributors). + +## You're in good company +bootstrap-sass is used to build some awesome projects, including [Diaspora](http://diasporaproject.org/), [rails_admin](https://github.com/sferik/rails_admin), Michael Hartl's [Rails Tutorial](http://railstutorial.org/) and [gitlabhq](http://gitlabhq.com/). Using bootstrap-sass? I'd love it if you let me know through Twitter. diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..b5dc5da5 --- /dev/null +++ b/Rakefile @@ -0,0 +1,18 @@ +require 'rake/testtask' +Rake::TestTask.new do |t| + t.libs << "test" + t.test_files = FileList['test/*_test.rb'] + t.verbose = true +end + +desc 'Dumps output to a CSS file for testing' +task :debug do + require 'sass' + require './lib/bootstrap-sass/compass_functions' + require './lib/bootstrap-sass/rails_functions' + path = './vendor/assets/stylesheets' + engine = Sass::Engine.for_file("#{path}/_bootstrap.scss", syntax: :scss, load_paths: [path]) + File.open('./debug.css', 'w') { |f| f.write(engine.render) } +end + +task default: :test
\ No newline at end of file diff --git a/bootstrap-sass.gemspec b/bootstrap-sass.gemspec index abd98f30..4d85c38d 100644 --- a/bootstrap-sass.gemspec +++ b/bootstrap-sass.gemspec @@ -1,6 +1,6 @@ Gem::Specification.new do |s| s.name = "bootstrap-sass" - s.version = '2.0.2' + s.version = '2.0.3' s.authors = ["Thomas McDonald"] s.email = 'tom@conceptcoding.co.uk' s.summary = "Twitter's Bootstrap, converted to Sass and ready to drop into Rails or Compass" diff --git a/lib/bootstrap-sass.rb b/lib/bootstrap-sass.rb index 05da7051..d6bea4f6 100644 --- a/lib/bootstrap-sass.rb +++ b/lib/bootstrap-sass.rb @@ -3,30 +3,41 @@ module Bootstrap # Inspired by Kaminari def self.load! - if rails? - require 'sass-rails' # See: https://github.com/thomas-mcdonald/bootstrap-sass/pull/4 - require 'bootstrap-sass/engine' - require 'bootstrap-sass/config/sass_extentions' + if compass? && asset_pipeline? + register_compass_extension + register_rails_engine elsif compass? - require 'bootstrap-sass/compass_extensions' - require 'bootstrap-sass/config/sass_extentions' - base = File.join(File.dirname(__FILE__), '..') - styles = File.join(base, 'vendor', 'assets', 'stylesheets') - templates = File.join(base, 'templates') - ::Compass::Frameworks.register('bootstrap', :stylesheets_directory => styles, :templates_directory => templates) + # Only require compass extension if a standalone project + require 'bootstrap-sass/compass_functions' + register_compass_extension + elsif asset_pipeline? + require 'sass-rails' # See: https://github.com/thomas-mcdonald/bootstrap-sass/pull/4 + register_rails_engine + require 'bootstrap-sass/rails_functions' else - raise Bootstrap::FrameworkNotFound, "bootstrap-sass requires either Rails or Compass, neither of which are loaded" + raise Bootstrap::FrameworkNotFound, "bootstrap-sass requires either Rails > 3.1 or Compass, neither of which are loaded" end end private - def self.rails? - defined?(::Rails) + def self.asset_pipeline? + defined?(::Rails) && ::Rails.version >= '3.1.0' end def self.compass? defined?(::Compass) end + + def self.register_compass_extension + base = File.join(File.dirname(__FILE__), '..') + styles = File.join(base, 'vendor', 'assets', 'stylesheets') + templates = File.join(base, 'templates') + ::Compass::Frameworks.register('bootstrap', :stylesheets_directory => styles, :templates_directory => templates) + end + + def self.register_rails_engine + require 'bootstrap-sass/engine' + end end Bootstrap.load! diff --git a/lib/bootstrap-sass/compass_extensions.rb b/lib/bootstrap-sass/compass_functions.rb index a579b8d0..a579b8d0 100644 --- a/lib/bootstrap-sass/compass_extensions.rb +++ b/lib/bootstrap-sass/compass_functions.rb diff --git a/lib/bootstrap-sass/engine.rb b/lib/bootstrap-sass/engine.rb index 4a9e9705..4bcdf18d 100644 --- a/lib/bootstrap-sass/engine.rb +++ b/lib/bootstrap-sass/engine.rb @@ -2,8 +2,6 @@ module Bootstrap module Rails class Engine < ::Rails::Engine # Rails, will you please look in our vendor? kthx - # also add our initializer. - # paths["config/initializers"] << 'lib/bootstrap-sass/config' end end end
\ No newline at end of file diff --git a/lib/bootstrap-sass/config/sass_extentions.rb b/lib/bootstrap-sass/rails_functions.rb index 51bb904f..51bb904f 100644 --- a/lib/bootstrap-sass/config/sass_extentions.rb +++ b/lib/bootstrap-sass/rails_functions.rb diff --git a/test/compilation_test.rb b/test/compilation_test.rb new file mode 100644 index 00000000..5a712d42 --- /dev/null +++ b/test/compilation_test.rb @@ -0,0 +1,11 @@ +require 'test_helper' + +class CompilationTest < Test::Unit::TestCase + def test_compilation + path = 'vendor/assets/stylesheets' + engine = Sass::Engine.for_file("#{path}/_bootstrap.scss", syntax: :scss, load_paths: [path]) + assert_nothing_raised do + engine.render + end + end +end
\ No newline at end of file diff --git a/test/gemfiles/sass_3_1.gemfile b/test/gemfiles/sass_3_1.gemfile new file mode 100644 index 00000000..16a8a047 --- /dev/null +++ b/test/gemfiles/sass_3_1.gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +gem 'sass', '~> 3.1.12' + +gemspec path: '../../'
\ No newline at end of file diff --git a/test/gemfiles/sass_head.gemfile b/test/gemfiles/sass_head.gemfile new file mode 100644 index 00000000..5963f496 --- /dev/null +++ b/test/gemfiles/sass_head.gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +gem 'sass', git: 'git://github.com/nex3/sass.git' + +gemspec path: '../../'
\ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 00000000..021d0d6a --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,7 @@ +$:.unshift("#{File.dirname(__FILE__)}/..") + +require 'test/unit' + +require 'sass' +require 'lib/bootstrap-sass/compass_functions' +require 'lib/bootstrap-sass/rails_functions'
\ No newline at end of file diff --git a/vendor/assets/images/glyphicons-halflings-white.png b/vendor/assets/images/glyphicons-halflings-white.png Binary files differindex a20760bf..3bf6484a 100644 --- a/vendor/assets/images/glyphicons-halflings-white.png +++ b/vendor/assets/images/glyphicons-halflings-white.png diff --git a/vendor/assets/images/glyphicons-halflings.png b/vendor/assets/images/glyphicons-halflings.png Binary files differindex 92d4445d..79bc568c 100644 --- a/vendor/assets/images/glyphicons-halflings.png +++ b/vendor/assets/images/glyphicons-halflings.png diff --git a/vendor/assets/javascripts/bootstrap-alert.js b/vendor/assets/javascripts/bootstrap-alert.js index d17f44e1..fa0806ea 100644 --- a/vendor/assets/javascripts/bootstrap-alert.js +++ b/vendor/assets/javascripts/bootstrap-alert.js @@ -1,5 +1,5 @@ /* ========================================================== - * bootstrap-alert.js v2.0.2 + * bootstrap-alert.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#alerts * ========================================================== * Copyright 2012 Twitter, Inc. @@ -18,61 +18,57 @@ * ========================================================== */ -!function( $ ){ +!function ($) { + + "use strict"; // jshint ;_; - "use strict" /* ALERT CLASS DEFINITION * ====================== */ var dismiss = '[data-dismiss="alert"]' - , Alert = function ( el ) { + , Alert = function (el) { $(el).on('click', dismiss, this.close) } - Alert.prototype = { - - constructor: Alert + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent - , close: function ( e ) { - var $this = $(this) - , selector = $this.attr('data-target') - , $parent + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } + $parent = $(selector) - $parent = $(selector) - $parent.trigger('close') + e && e.preventDefault() - e && e.preventDefault() + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) - $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + $parent.trigger(e = $.Event('close')) - $parent - .trigger('close') - .removeClass('in') + if (e.isDefaultPrevented()) return - function removeElement() { - $parent - .trigger('closed') - .remove() - } + $parent.removeClass('in') - $.support.transition && $parent.hasClass('fade') ? - $parent.on($.support.transition.end, removeElement) : - removeElement() + function removeElement() { + $parent + .trigger('closed') + .remove() } + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() } /* ALERT PLUGIN DEFINITION * ======================= */ - $.fn.alert = function ( option ) { + $.fn.alert = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('alert') @@ -91,4 +87,4 @@ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-button.js b/vendor/assets/javascripts/bootstrap-button.js index 6b36753d..a9e6ba7b 100644 --- a/vendor/assets/javascripts/bootstrap-button.js +++ b/vendor/assets/javascripts/bootstrap-button.js @@ -1,5 +1,5 @@ /* ============================================================ - * bootstrap-button.js v2.0.2 + * bootstrap-button.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#buttons * ============================================================ * Copyright 2012 Twitter, Inc. @@ -17,58 +17,54 @@ * limitations under the License. * ============================================================ */ -!function( $ ){ - "use strict" +!function ($) { + + "use strict"; // jshint ;_; + /* BUTTON PUBLIC CLASS DEFINITION * ============================== */ - var Button = function ( element, options ) { + var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, $.fn.button.defaults, options) } - Button.prototype = { - - constructor: Button + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' - , setState: function ( state ) { - var d = 'disabled' - , $el = this.$element - , data = $el.data() - , val = $el.is('input') ? 'val' : 'html' + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) - state = state + 'Text' - data.resetText || $el.data('resetText', $el[val]()) + $el[val](data[state] || this.options[state]) - $el[val](data[state] || this.options[state]) - - // push to event loop to allow forms to submit - setTimeout(function () { - state == 'loadingText' ? - $el.addClass(d).attr(d, d) : - $el.removeClass(d).removeAttr(d) - }, 0) - } - - , toggle: function () { - var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } - $parent && $parent - .find('.active') - .removeClass('active') + Button.prototype.toggle = function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') - this.$element.toggleClass('active') - } + $parent && $parent + .find('.active') + .removeClass('active') + this.$element.toggleClass('active') } /* BUTTON PLUGIN DEFINITION * ======================== */ - $.fn.button = function ( option ) { + $.fn.button = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('button') @@ -97,4 +93,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-carousel.js b/vendor/assets/javascripts/bootstrap-carousel.js index 8c0723d2..96e5a819 100644 --- a/vendor/assets/javascripts/bootstrap-carousel.js +++ b/vendor/assets/javascripts/bootstrap-carousel.js @@ -1,5 +1,5 @@ /* ========================================================== - * bootstrap-carousel.js v2.0.2 + * bootstrap-carousel.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#carousel * ========================================================== * Copyright 2012 Twitter, Inc. @@ -18,16 +18,17 @@ * ========================================================== */ -!function( $ ){ +!function ($) { + + "use strict"; // jshint ;_; - "use strict" /* CAROUSEL CLASS DEFINITION * ========================= */ var Carousel = function (element, options) { this.$element = $(element) - this.options = $.extend({}, $.fn.carousel.defaults, options) + this.options = options this.options.slide && this.slide(this.options.slide) this.options.pause == 'hover' && this.$element .on('mouseenter', $.proxy(this.pause, this)) @@ -36,8 +37,11 @@ Carousel.prototype = { - cycle: function () { - this.interval = setInterval($.proxy(this.next, this), this.options.interval) + cycle: function (e) { + if (!e) this.paused = false + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } @@ -62,7 +66,8 @@ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) } - , pause: function () { + , pause: function (e) { + if (!e) this.paused = true clearInterval(this.interval) this.interval = null return this @@ -85,6 +90,7 @@ , direction = type == 'next' ? 'left' : 'right' , fallback = type == 'next' ? 'first' : 'last' , that = this + , e = $.Event('slide') this.sliding = true @@ -94,24 +100,26 @@ if ($next.hasClass('active')) return - if (!$.support.transition && this.$element.hasClass('slide')) { - this.$element.trigger('slide') - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger('slid') - } else { + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) - this.$element.trigger('slide') this.$element.one($.support.transition.end, function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger('slid') }, 0) }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') } isCycling && this.cycle() @@ -125,15 +133,15 @@ /* CAROUSEL PLUGIN DEFINITION * ========================== */ - $.fn.carousel = function ( option ) { + $.fn.carousel = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('carousel') - , options = typeof option == 'object' && option + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) if (!data) $this.data('carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (typeof option == 'string' || (option = options.slide)) data[option]() - else data.cycle() + else if (options.interval) data.cycle() }) } @@ -158,4 +166,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-collapse.js b/vendor/assets/javascripts/bootstrap-collapse.js index 9a364468..d02f6fda 100644 --- a/vendor/assets/javascripts/bootstrap-collapse.js +++ b/vendor/assets/javascripts/bootstrap-collapse.js @@ -1,5 +1,5 @@ /* ============================================================= - * bootstrap-collapse.js v2.0.2 + * bootstrap-collapse.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#collapse * ============================================================= * Copyright 2012 Twitter, Inc. @@ -17,16 +17,21 @@ * limitations under the License. * ============================================================ */ -!function( $ ){ - "use strict" +!function ($) { - var Collapse = function ( element, options ) { - this.$element = $(element) + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) this.options = $.extend({}, $.fn.collapse.defaults, options) - if (this.options["parent"]) { - this.$parent = $(this.options["parent"]) + if (this.options.parent) { + this.$parent = $(this.options.parent) } this.options.toggle && this.toggle() @@ -42,31 +47,39 @@ } , show: function () { - var dimension = this.dimension() - , scroll = $.camelCase(['scroll', dimension].join('-')) - , actives = this.$parent && this.$parent.find('.in') + var dimension + , scroll + , actives , hasData + if (this.transitioning) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + if (actives && actives.length) { hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return actives.collapse('hide') hasData || actives.data('collapse', null) } this.$element[dimension](0) - this.transition('addClass', 'show', 'shown') + this.transition('addClass', $.Event('show'), 'shown') this.$element[dimension](this.$element[0][scroll]) - } , hide: function () { - var dimension = this.dimension() + var dimension + if (this.transitioning) return + dimension = this.dimension() this.reset(this.$element[dimension]()) - this.transition('removeClass', 'hide', 'hidden') + this.transition('removeClass', $.Event('hide'), 'hidden') this.$element[dimension](0) } - , reset: function ( size ) { + , reset: function (size) { var dimension = this.dimension() this.$element @@ -74,37 +87,43 @@ [dimension](size || 'auto') [0].offsetWidth - this.$element[size ? 'addClass' : 'removeClass']('collapse') + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') return this } - , transition: function ( method, startEvent, completeEvent ) { + , transition: function (method, startEvent, completeEvent) { var that = this , complete = function () { - if (startEvent == 'show') that.reset() + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 that.$element.trigger(completeEvent) } - this.$element - .trigger(startEvent) - [method]('in') + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') $.support.transition && this.$element.hasClass('collapse') ? this.$element.one($.support.transition.end, complete) : complete() - } + } , toggle: function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() - } + } } - /* COLLAPSIBLE PLUGIN DEFINITION + + /* COLLAPSIBLE PLUGIN DEFINITION * ============================== */ - $.fn.collapse = function ( option ) { + $.fn.collapse = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('collapse') @@ -135,4 +154,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-dropdown.js b/vendor/assets/javascripts/bootstrap-dropdown.js index 54b61c5e..ec0588dc 100644 --- a/vendor/assets/javascripts/bootstrap-dropdown.js +++ b/vendor/assets/javascripts/bootstrap-dropdown.js @@ -1,5 +1,5 @@ /* ============================================================ - * bootstrap-dropdown.js v2.0.2 + * bootstrap-dropdown.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#dropdowns * ============================================================ * Copyright 2012 Twitter, Inc. @@ -18,15 +18,16 @@ * ============================================================ */ -!function( $ ){ +!function ($) { + + "use strict"; // jshint ;_; - "use strict" /* DROPDOWN CLASS DEFINITION * ========================= */ var toggle = '[data-toggle="dropdown"]' - , Dropdown = function ( element ) { + , Dropdown = function (element) { var $el = $(element).on('click.dropdown.data-api', this.toggle) $('html').on('click.dropdown.data-api', function () { $el.parent().removeClass('open') @@ -37,12 +38,16 @@ constructor: Dropdown - , toggle: function ( e ) { + , toggle: function (e) { var $this = $(this) - , selector = $this.attr('data-target') , $parent + , selector , isActive + if ($this.is('.disabled, :disabled')) return + + selector = $this.attr('data-target') + if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 @@ -54,7 +59,8 @@ isActive = $parent.hasClass('open') clearMenus() - !isActive && $parent.toggleClass('open') + + if (!isActive) $parent.toggleClass('open') return false } @@ -69,7 +75,7 @@ /* DROPDOWN PLUGIN DEFINITION * ========================== */ - $.fn.dropdown = function ( option ) { + $.fn.dropdown = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('dropdown') @@ -86,7 +92,9 @@ $(function () { $('html').on('click.dropdown.data-api', clearMenus) - $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + $('body') + .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-modal.js b/vendor/assets/javascripts/bootstrap-modal.js index e9297062..c831de6b 100644 --- a/vendor/assets/javascripts/bootstrap-modal.js +++ b/vendor/assets/javascripts/bootstrap-modal.js @@ -1,5 +1,5 @@ /* ========================================================= - * bootstrap-modal.js v2.0.2 + * bootstrap-modal.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#modals * ========================================================= * Copyright 2012 Twitter, Inc. @@ -18,14 +18,15 @@ * ========================================================= */ -!function( $ ){ +!function ($) { + + "use strict"; // jshint ;_; - "use strict" /* MODAL CLASS DEFINITION * ====================== */ - var Modal = function ( content, options ) { + var Modal = function (content, options) { this.options = options this.$element = $(content) .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) @@ -41,19 +42,23 @@ , show: function () { var that = this + , e = $.Event('show') + + this.$element.trigger(e) - if (this.isShown) return + if (this.isShown || e.isDefaultPrevented()) return $('body').addClass('modal-open') this.isShown = true - this.$element.trigger('show') escape.call(this) backdrop.call(this, function () { var transition = $.support.transition && that.$element.hasClass('fade') - !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } that.$element .show() @@ -71,21 +76,24 @@ }) } - , hide: function ( e ) { + , hide: function (e) { e && e.preventDefault() - if (!this.isShown) return - var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + this.isShown = false $('body').removeClass('modal-open') escape.call(this) - this.$element - .trigger('hide') - .removeClass('in') + this.$element.removeClass('in') $.support.transition && this.$element.hasClass('fade') ? hideWithTransition.call(this) : @@ -111,7 +119,7 @@ }) } - function hideModal( that ) { + function hideModal(that) { this.$element .hide() .trigger('hidden') @@ -119,7 +127,7 @@ backdrop.call(this) } - function backdrop( callback ) { + function backdrop(callback) { var that = this , animate = this.$element.hasClass('fade') ? 'fade' : '' @@ -173,7 +181,7 @@ /* MODAL PLUGIN DEFINITION * ======================= */ - $.fn.modal = function ( option ) { + $.fn.modal = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('modal') @@ -207,4 +215,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-popover.js b/vendor/assets/javascripts/bootstrap-popover.js index e1aa5ac3..d5ecfa92 100644 --- a/vendor/assets/javascripts/bootstrap-popover.js +++ b/vendor/assets/javascripts/bootstrap-popover.js @@ -1,5 +1,5 @@ /* =========================================================== - * bootstrap-popover.js v2.0.2 + * bootstrap-popover.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#popovers * =========================================================== * Copyright 2012 Twitter, Inc. @@ -18,14 +18,19 @@ * =========================================================== */ -!function( $ ) { +!function ($) { - "use strict" + "use strict"; // jshint ;_; + + + /* POPOVER PUBLIC CLASS DEFINITION + * =============================== */ var Popover = function ( element, options ) { this.init('popover', element, options) } + /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js ========================================== */ @@ -38,8 +43,8 @@ , title = this.getTitle() , content = this.getContent() - $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title) - $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content) + $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title) + $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content) $tip.removeClass('fade top bottom left right in') } @@ -56,12 +61,10 @@ content = $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) - content = content.toString().replace(/(^\s*|\s*$)/, "") - return content } - , tip: function() { + , tip: function () { if (!this.$tip) { this.$tip = $(this.options.template) } @@ -74,7 +77,7 @@ /* POPOVER PLUGIN DEFINITION * ======================= */ - $.fn.popover = function ( option ) { + $.fn.popover = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('popover') @@ -92,4 +95,4 @@ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>' }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-scrollspy.js b/vendor/assets/javascripts/bootstrap-scrollspy.js index ea29f2f8..f6a24b00 100644 --- a/vendor/assets/javascripts/bootstrap-scrollspy.js +++ b/vendor/assets/javascripts/bootstrap-scrollspy.js @@ -1,5 +1,5 @@ /* ============================================================= - * bootstrap-scrollspy.js v2.0.2 + * bootstrap-scrollspy.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#scrollspy * ============================================================= * Copyright 2012 Twitter, Inc. @@ -17,9 +17,11 @@ * limitations under the License. * ============================================================== */ -!function ( $ ) { - "use strict" +!function ($) { + + "use strict"; // jshint ;_; + /* SCROLLSPY CLASS DEFINITION * ========================== */ @@ -43,25 +45,43 @@ constructor: ScrollSpy , refresh: function () { - this.targets = this.$body + var self = this + , $targets + + this.offsets = $([]) + this.targets = $([]) + + $targets = this.$body .find(this.selector) .map(function () { - var href = $(this).attr('href') - return /^#\w/.test(href) && $(href).length ? href : null + var $el = $(this) + , href = $el.data('target') || $el.attr('href') + , $href = /^#\w/.test(href) && $(href) + return ( $href + && href.length + && [[ $href.position().top, href ]] ) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) }) - - this.offsets = $.map(this.targets, function (id) { - return $(id).position().top - }) } , process: function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + , maxScroll = scrollHeight - this.$scrollElement.height() , offsets = this.offsets , targets = this.targets , activeTarget = this.activeTarget , i + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) + && this.activate ( i ) + } + for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] @@ -72,21 +92,27 @@ , activate: function (target) { var active + , selector this.activeTarget = target - this.$body - .find(this.selector).parent('.active') + $(this.selector) + .parent('.active') .removeClass('active') - active = this.$body - .find(this.selector + '[href="' + target + '"]') + selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + active = $(selector) .parent('li') .addClass('active') - if ( active.parent('.dropdown-menu') ) { - active.closest('li.dropdown').addClass('active') + if (active.parent('.dropdown-menu')) { + active = active.closest('li.dropdown').addClass('active') } + + active.trigger('activate') } } @@ -122,4 +148,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-tab.js b/vendor/assets/javascripts/bootstrap-tab.js index b3938f67..88641de8 100644 --- a/vendor/assets/javascripts/bootstrap-tab.js +++ b/vendor/assets/javascripts/bootstrap-tab.js @@ -1,5 +1,5 @@ /* ======================================================== - * bootstrap-tab.js v2.0.2 + * bootstrap-tab.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#tabs * ======================================================== * Copyright 2012 Twitter, Inc. @@ -18,9 +18,10 @@ * ======================================================== */ -!function( $ ){ +!function ($) { + + "use strict"; // jshint ;_; - "use strict" /* TAB CLASS DEFINITION * ==================== */ @@ -39,6 +40,7 @@ , selector = $this.attr('data-target') , previous , $target + , e if (!selector) { selector = $this.attr('href') @@ -49,11 +51,14 @@ previous = $ul.find('.active a').last()[0] - $this.trigger({ - type: 'show' - , relatedTarget: previous + e = $.Event('show', { + relatedTarget: previous }) + $this.trigger(e) + + if (e.isDefaultPrevented()) return + $target = $(selector) this.activate($this.parent('li'), $ul) @@ -127,4 +132,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-tooltip.js b/vendor/assets/javascripts/bootstrap-tooltip.js index 49b5f728..577ead48 100644 --- a/vendor/assets/javascripts/bootstrap-tooltip.js +++ b/vendor/assets/javascripts/bootstrap-tooltip.js @@ -1,5 +1,5 @@ /* =========================================================== - * bootstrap-tooltip.js v2.0.2 + * bootstrap-tooltip.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#tooltips * Inspired by the original jQuery.tipsy by Jason Frame * =========================================================== @@ -18,14 +18,16 @@ * limitations under the License. * ========================================================== */ -!function( $ ) { - "use strict" +!function ($) { + + "use strict"; // jshint ;_; + /* TOOLTIP PUBLIC CLASS DEFINITION * =============================== */ - var Tooltip = function ( element, options ) { + var Tooltip = function (element, options) { this.init('tooltip', element, options) } @@ -33,7 +35,7 @@ constructor: Tooltip - , init: function ( type, element, options ) { + , init: function (type, element, options) { var eventIn , eventOut @@ -54,7 +56,7 @@ this.fixTitle() } - , getOptions: function ( options ) { + , getOptions: function (options) { options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) if (options.delay && typeof options.delay == 'number') { @@ -67,34 +69,28 @@ return options } - , enter: function ( e ) { + , enter: function (e) { var self = $(e.currentTarget)[this.type](this._options).data(this.type) - if (!self.options.delay || !self.options.delay.show) { - self.show() - } else { - self.hoverState = 'in' - setTimeout(function() { - if (self.hoverState == 'in') { - self.show() - } - }, self.options.delay.show) - } + if (!self.options.delay || !self.options.delay.show) return self.show() + + clearTimeout(this.timeout) + self.hoverState = 'in' + this.timeout = setTimeout(function() { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) } - , leave: function ( e ) { + , leave: function (e) { var self = $(e.currentTarget)[this.type](this._options).data(this.type) - if (!self.options.delay || !self.options.delay.hide) { - self.hide() - } else { - self.hoverState = 'out' - setTimeout(function() { - if (self.hoverState == 'out') { - self.hide() - } - }, self.options.delay.hide) - } + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + clearTimeout(this.timeout) + self.hoverState = 'out' + this.timeout = setTimeout(function() { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) } , show: function () { @@ -152,9 +148,20 @@ } } + , isHTML: function(text) { + // html string detection logic adapted from jQuery + return typeof text != 'string' + || ( text.charAt(0) === "<" + && text.charAt( text.length - 1 ) === ">" + && text.length >= 3 + ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text) + } + , setContent: function () { var $tip = this.tip() - $tip.find('.tooltip-inner').html(this.getTitle()) + , title = this.getTitle() + + $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') } @@ -206,8 +213,6 @@ title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - title = (title || '').toString().replace(/(^\s*|\s*$)/, "") - return title } @@ -259,12 +264,12 @@ $.fn.tooltip.defaults = { animation: true - , delay: 0 - , selector: false , placement: 'top' + , selector: false + , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' , trigger: 'hover' , title: '' - , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + , delay: 0 } -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-transition.js b/vendor/assets/javascripts/bootstrap-transition.js index f5226f96..7e29b2fd 100644 --- a/vendor/assets/javascripts/bootstrap-transition.js +++ b/vendor/assets/javascripts/bootstrap-transition.js @@ -1,5 +1,5 @@ /* =================================================== - * bootstrap-transition.js v2.0.2 + * bootstrap-transition.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#transitions * =================================================== * Copyright 2012 Twitter, Inc. @@ -17,35 +17,45 @@ * limitations under the License. * ========================================================== */ -!function( $ ) { + +!function ($) { $(function () { - "use strict" + "use strict"; // jshint ;_; + - /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) * ======================================================= */ $.support.transition = (function () { - var thisBody = document.body || document.documentElement - , thisStyle = thisBody.style - , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined - - return support && { - end: (function () { - var transitionEnd = "TransitionEnd" - if ( $.browser.webkit ) { - transitionEnd = "webkitTransitionEnd" - } else if ( $.browser.mozilla ) { - transitionEnd = "transitionend" - } else if ( $.browser.opera ) { - transitionEnd = "oTransitionEnd" + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd' + , 'msTransition' : 'MSTransitionEnd' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] } - return transitionEnd - }()) + } + + }()) + + return transitionEnd && { + end: transitionEnd } + })() }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-typeahead.js b/vendor/assets/javascripts/bootstrap-typeahead.js index dc2f8822..95a0fcdb 100644 --- a/vendor/assets/javascripts/bootstrap-typeahead.js +++ b/vendor/assets/javascripts/bootstrap-typeahead.js @@ -1,5 +1,5 @@ /* ============================================================= - * bootstrap-typeahead.js v2.0.2 + * bootstrap-typeahead.js v2.0.3 * http://twitter.github.com/bootstrap/javascript.html#typeahead * ============================================================= * Copyright 2012 Twitter, Inc. @@ -17,16 +17,22 @@ * limitations under the License. * ============================================================ */ -!function( $ ){ - "use strict" +!function($){ - var Typeahead = function ( element, options ) { + "use strict"; // jshint ;_; + + + /* TYPEAHEAD PUBLIC CLASS DEFINITION + * ================================= */ + + var Typeahead = function (element, options) { this.$element = $(element) this.options = $.extend({}, $.fn.typeahead.defaults, options) this.matcher = this.options.matcher || this.matcher this.sorter = this.options.sorter || this.sorter this.highlighter = this.options.highlighter || this.highlighter + this.updater = this.options.updater || this.updater this.$menu = $(this.options.menu).appendTo('body') this.source = this.options.source this.shown = false @@ -39,11 +45,16 @@ , select: function () { var val = this.$menu.find('.active').attr('data-value') - this.$element.val(val) - this.$element.change(); + this.$element + .val(this.updater(val)) + .change() return this.hide() } + , updater: function (item) { + return item + } + , show: function () { var pos = $.extend({}, this.$element.offset(), { height: this.$element[0].offsetHeight @@ -77,7 +88,7 @@ } items = $.grep(this.source, function (item) { - if (that.matcher(item)) return item + return that.matcher(item) }) items = this.sorter(items) @@ -109,7 +120,8 @@ } , highlighter: function (item) { - return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) { + var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') + return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { return '<strong>' + match + '</strong>' }) } @@ -201,11 +213,13 @@ break case 38: // up arrow + if (e.type != 'keydown') break e.preventDefault() this.prev() break case 40: // down arrow + if (e.type != 'keydown') break e.preventDefault() this.next() break @@ -236,7 +250,7 @@ /* TYPEAHEAD PLUGIN DEFINITION * =========================== */ - $.fn.typeahead = function ( option ) { + $.fn.typeahead = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('typeahead') @@ -268,4 +282,4 @@ }) }) -}( window.jQuery );
\ No newline at end of file +}(window.jQuery);
\ No newline at end of file diff --git a/vendor/assets/stylesheets/_bootstrap-responsive.scss b/vendor/assets/stylesheets/_bootstrap-responsive.scss index c7e64099..75fbbcfb 100644 --- a/vendor/assets/stylesheets/_bootstrap-responsive.scss +++ b/vendor/assets/stylesheets/_bootstrap-responsive.scss @@ -22,34 +22,35 @@ } // Visibility utilities + // For desktops -.visible-phone { display: none; } -.visible-tablet { display: none; } -.visible-desktop { display: block; } -.hidden-phone { display: block; } -.hidden-tablet { display: block; } -.hidden-desktop { display: none; } +.visible-phone { display: none !important; } +.visible-tablet { display: none !important; } +.visible-desktop { } // Don't set initially +.hidden-phone { } +.hidden-tablet { } +.hidden-desktop { display: none !important; } // Phones only -@media (max-width: 767px) { +@media (max-width : 767px) { // Show - .visible-phone { display: block; } + .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior // Hide - .hidden-phone { display: none; } + .hidden-phone { display: none !important; } // Hide everything else - .hidden-desktop { display: block; } - .visible-desktop { display: none; } + .hidden-desktop { display: inherit !important; } + .visible-desktop { display: none !important; } } // Tablets & small desktops only @media (min-width: 768px) and (max-width: 979px) { // Show - .visible-tablet { display: block; } + .visible-tablet { display: inherit !important; } // Hide - .hidden-tablet { display: none; } + .hidden-tablet { display: none !important; } // Hide everything else - .hidden-desktop { display: block; } - .visible-desktop { display: none; } + .hidden-desktop { display: inherit !important; } + .visible-desktop { display: none !important ; } } // UP TO LANDSCAPE PHONE @@ -121,17 +122,37 @@ // LANDSCAPE PHONE TO SMALL DESKTOP & PORTRAIT TABLET // -------------------------------------------------- -@media (max-width: 767px) { +@media (max-width: 768px) { // Padding to set content in a bit body { padding-left: 20px; padding-right: 20px; } - .navbar-fixed-top { + // Negative indent the now static "fixed" navbar + .navbar-fixed-top, .navbar-fixed-bottom { margin-left: -20px; margin-right: -20px; } + // Remove padding on container given explicit padding set on body + .container-fluid { + padding: 0; + } + + // TYPOGRAPHY + // ---------- + // Reset horizontal dl + .dl-horizontal { + dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + dd { + margin-left: 0; + } + } // GRID & CONTAINERS // ----------------- @@ -143,32 +164,27 @@ .row-fluid { width: 100%; } - // Undo negative margin on rows - .row { + // Undo negative margin on rows and thumbnails + .row, .thumbnails { margin-left: 0; } - // Make all columns even - .row > [class*="span"], .row-fluid > [class*="span"] { + // Make all grid-sized elements block level again + [class*="span"], .row-fluid [class*="span"] { float: none; display: block; width: auto; - margin: 0; - } - - // THUMBNAILS - // ---------- - .thumbnails [class*="span"] { - width: auto; + margin-left: 0; } // FORM FIELDS // ----------- // Make span* classes full width - input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { + .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { @include input-block-level(); } // But don't let it screw up prepend/append inputs - .input-prepend input[class*="span"], .input-append input[class*="span"] { + .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { + display: inline-block; // redeclare so they don't wrap to new lines width: auto; } } @@ -181,13 +197,15 @@ @media (min-width: 768px) and (max-width: 979px) { // Fixed grid - @include gridCore(42px, 20px); + @include gridCore($gridColumnWidthTablet, $gridGutterWidthTablet); // Fluid grid - @include gridFluid(5.801104972%, 2.762430939%); + @include gridFluid($fluidGridColumnWidthTablet, $fluidGridGutterWidthTablet); // Input grid - @include gridInput(42px, 20px); + @include gridInput($gridColumnWidthTablet, $gridGutterWidthTablet); + + // No need to reset .thumbnails here since it's the same $gridGutterWidth } @@ -221,43 +239,57 @@ padding-right: 10px; margin: 0 0 0 -5px; } + + // COLLAPSIBLE NAVBAR + // ------------------ // Nav collapse clears brand - .navbar .nav-collapse { - clear: left; + .nav-collapse { + clear: both; } // Block-level the nav - .navbar .nav { + .nav-collapse .nav { float: none; margin: 0 0 ($baseLineHeight / 2); } - .navbar .nav > li { + .nav-collapse .nav > li { float: none; } - .navbar .nav > li > a { + .nav-collapse .nav > li > a { margin-bottom: 2px; } - .navbar .nav > .divider-vertical { + .nav-collapse .nav > .divider-vertical { display: none; } - .navbar .nav .nav-header { + .nav-collapse .nav .nav-header { color: $navbarText; text-shadow: none; } // Nav and dropdown links in navbar - .navbar .nav > li > a, .navbar .dropdown-menu a { + .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { padding: 6px 15px; font-weight: bold; color: $navbarLinkColor; @include border-radius(3px); } - .navbar .dropdown-menu li + li a { + // Buttons + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + @include border-radius(4px); + } + .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; } - .navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover { + .nav-collapse .nav > li > a:hover, .nav-collapse .dropdown-menu a:hover { background-color: $navbarBackground; } + // Buttons in the navbar + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } // Dropdowns in the navbar - .navbar .dropdown-menu { + .nav-collapse .dropdown-menu { position: static; top: auto; left: auto; @@ -271,49 +303,49 @@ @include border-radius(0); @include box-shadow(none); } - .navbar .dropdown-menu:before, .navbar .dropdown-menu:after { + .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { display: none; } - .navbar .dropdown-menu .divider { + .nav-collapse .dropdown-menu .divider { display: none; } // Forms in navbar - .navbar-form, .navbar-search { + .nav-collapse .navbar-form, .nav-collapse .navbar-search { float: none; padding: ($baseLineHeight / 2) 15px; margin: ($baseLineHeight / 2) 0; border-top: 1px solid $navbarBackground; border-bottom: 1px solid $navbarBackground; - $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - @include box-shadow($shadow); + @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)}); } // Pull right (secondary) nav content - .navbar .nav.pull-right { + .navbar .nav-collapse .nav.pull-right { float: none; margin-left: 0; } - // Static navbar - .navbar-static .navbar-inner { - padding-left: 10px; - padding-right: 10px; + // Hide everything in the navbar save .brand and toggle button */ + .nav-collapse, .nav-collapse.collapse { + overflow: hidden; + height: 0; } // Navbar button - .btn-navbar { + .navbar .btn-navbar { display: block; } - // Hide everything in the navbar save .brand and toggle button - .nav-collapse { - overflow: hidden; - height: 0; + // STATIC NAVBAR + // ------------- + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; } } - // DEFAULT DESKTOP // --------------- +// Required to make the collapsing navbar work on regular desktops @media (min-width: 980px) { .nav-collapse.collapse { height: auto !important; @@ -321,28 +353,28 @@ } } - - // LARGE DESKTOP & UP // ------------------ @media (min-width: 1200px) { // Fixed grid - @include gridCore(70px, 30px); + @include gridCore($gridColumnWidthLarge, $gridGutterWidthLarge); // Fluid grid - @include gridFluid(5.982905983%, 2.564102564%); + @include gridFluid($fluidGridColumnWidthLarge, $fluidGridGutterWidthLarge); // Input grid - @include gridInput(70px, 30px); + @include gridInput($gridColumnWidthLarge, $gridGutterWidthLarge); // Thumbnails .thumbnails { - margin-left: -30px; + margin-left: -$gridGutterWidthLarge; } .thumbnails > li { - margin-left: 30px; + margin-left: $gridGutterWidthLarge; + } + .row-fluid .thumbnails { + margin-left: 0; } - }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/_bootstrap.scss b/vendor/assets/stylesheets/_bootstrap.scss index b754748b..17ec4400 100644 --- a/vendor/assets/stylesheets/_bootstrap.scss +++ b/vendor/assets/stylesheets/_bootstrap.scss @@ -1,3 +1,13 @@ +// +// Bootstrap v2.0.3 +// +// Copyright 2012 Twitter, Inc +// Licensed under the Apache License v2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Designed and built with all the love in the world @twitter by @mdo and @fat. +// Converted to Sass by @thomasmcdonald_, and distributed as bootstrap-sass + // Core variables and mixins @import "bootstrap/variables"; // Modify this for custom colors, font-sizes, etc @import "bootstrap/mixins"; @@ -42,8 +52,7 @@ // Components: Misc @import "bootstrap/thumbnails"; -@import "bootstrap/labels"; -@import "bootstrap/badges"; +@import "bootstrap/labels-badges"; @import "bootstrap/progress-bars"; @import "bootstrap/accordion"; @import "bootstrap/carousel"; diff --git a/vendor/assets/stylesheets/bootstrap/_accordion.scss b/vendor/assets/stylesheets/bootstrap/_accordion.scss index bb199439..91e0b966 100644 --- a/vendor/assets/stylesheets/bootstrap/_accordion.scss +++ b/vendor/assets/stylesheets/bootstrap/_accordion.scss @@ -21,6 +21,11 @@ padding: 8px 15px; } +// General toggle styles +.accordion-toggle { + cursor: pointer; +} + // Inner needs the styles because you can't animate properly with any styles on the element .accordion-inner { padding: 9px 15px; diff --git a/vendor/assets/stylesheets/bootstrap/_badges.scss b/vendor/assets/stylesheets/bootstrap/_badges.scss deleted file mode 100644 index 936c7570..00000000 --- a/vendor/assets/stylesheets/bootstrap/_badges.scss +++ /dev/null @@ -1,36 +0,0 @@ -// BADGES -// ------ - -// Base -.badge { - padding: 1px 9px 2px; - font-size: $baseFontSize * .925; - font-weight: bold; - white-space: nowrap; - color: $white; - background-color: $grayLight; - @include border-radius(9px); -} - -// Hover state -.badge:hover { - color: $white; - text-decoration: none; - cursor: pointer; -} - -// Colors -.badge-error { background-color: $errorText; } -.badge-error:hover { background-color: darken($errorText, 10%); } - -.badge-warning { background-color: $orange; } -.badge-warning:hover { background-color: darken($orange, 10%); } - -.badge-success { background-color: $successText; } -.badge-success:hover { background-color: darken($successText, 10%); } - -.badge-info { background-color: $infoText; } -.badge-info:hover { background-color: darken($infoText, 10%); } - -.badge-inverse { background-color: $grayDark; } -.badge-inverse:hover { background-color: darken($grayDark, 10%); }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_button-groups.scss b/vendor/assets/stylesheets/bootstrap/_button-groups.scss index f3ecb7fc..cbbb7fe7 100644 --- a/vendor/assets/stylesheets/bootstrap/_button-groups.scss +++ b/vendor/assets/stylesheets/bootstrap/_button-groups.scss @@ -25,14 +25,14 @@ } // Float them, remove border radius, then re-add to first and last elements -.btn-group .btn { +.btn-group > .btn { position: relative; float: left; margin-left: -1px; @include border-radius(0); } // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match -.btn-group .btn:first-child { +.btn-group > .btn:first-child { margin-left: 0; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; @@ -41,7 +41,8 @@ -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } -.btn-group .btn:last-child, .btn-group .dropdown-toggle { +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; @@ -50,7 +51,7 @@ border-bottom-right-radius: 4px; } // Reset corners for large buttons -.btn-group .btn.large:first-child { +.btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; @@ -59,7 +60,7 @@ -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } -.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { +.btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; @@ -69,7 +70,7 @@ } // On hover/focus/active, bring the proper btn to front -.btn-group .btn:hover, .btn-group .btn:focus, .btn-group .btn:active, .btn-group .btn.active { +.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } @@ -84,48 +85,60 @@ // ---------------------- // Give the line between buttons some depth -.btn-group .dropdown-toggle { +.btn-group > .dropdown-toggle { padding-left: 8px; padding-right: 8px; - $shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - @include box-shadow($shadow); - *padding-top: 3px; - *padding-bottom: 3px; + @include box-shadow(#{inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)}); + *padding-top: 4px; + *padding-bottom: 4px; } -.btn-group .btn-mini.dropdown-toggle { +.btn-group > .btn-mini.dropdown-toggle { padding-left: 5px; padding-right: 5px; - *padding-top: 1px; - *padding-bottom: 1px; } -.btn-group .btn-small.dropdown-toggle { +.btn-group > .btn-small.dropdown-toggle { *padding-top: 4px; *padding-bottom: 4px; } -.btn-group .btn-large.dropdown-toggle { +.btn-group > .btn-large.dropdown-toggle { padding-left: 12px; padding-right: 12px; } .btn-group.open { - // IE7's z-index only goes to the nearest positioned ancestor, which would - // make the menu appear below buttons that appeared later on the page - *z-index: $zindexDropdown; - - // Reposition menu on open and round all corners - .dropdown-menu { - display: block; - margin-top: 1px; - @include border-radius(5px); - } + // The clickable button for toggling the menu + // Remove the gradient and set the same inset shadow as the :active state .dropdown-toggle { background-image: none; - $shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - @include box-shadow($shadow); + @include box-shadow(#{inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)}); + } + + // Keep the hover's background when dropdown is open + .btn.dropdown-toggle { + background-color: $btnBackgroundHighlight; + } + .btn-primary.dropdown-toggle { + background-color: $btnPrimaryBackgroundHighlight; + } + .btn-warning.dropdown-toggle { + background-color: $btnWarningBackgroundHighlight; + } + .btn-danger.dropdown-toggle { + background-color: $btnDangerBackgroundHighlight; + } + .btn-success.dropdown-toggle { + background-color: $btnSuccessBackgroundHighlight; + } + .btn-info.dropdown-toggle { + background-color: $btnInfoBackgroundHighlight; + } + .btn-inverse.dropdown-toggle { + background-color: $btnInverseBackgroundHighlight; } } + // Reposition the caret .btn .caret { margin-top: 7px; @@ -143,10 +156,17 @@ } .btn-large .caret { margin-top: 6px; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 5px solid $black; + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; } +// Upside down carets for .dropup +.dropup .btn-large .caret { + border-bottom: 5px solid $black; + border-top: 0; +} + + // Account for other colors .btn-primary, .btn-warning, .btn-danger, .btn-info, .btn-success, .btn-inverse { diff --git a/vendor/assets/stylesheets/bootstrap/_buttons.scss b/vendor/assets/stylesheets/bootstrap/_buttons.scss index b771cd61..6cd3ba0d 100644 --- a/vendor/assets/stylesheets/bootstrap/_buttons.scss +++ b/vendor/assets/stylesheets/bootstrap/_buttons.scss @@ -13,20 +13,19 @@ margin-bottom: 0; // For input.btn font-size: $baseFontSize; line-height: $baseLineHeight; + *line-height: 20px; color: $grayDark; text-align: center; text-shadow: 0 1px 1px rgba(255,255,255,.75); vertical-align: middle; + cursor: pointer; @include buttonBackground($btnBackground, $btnBackgroundHighlight); border: 1px solid $btnBorder; + *border: 0; // Remove the border to prevent IE7's black border on input:focus border-bottom-color: darken($btnBorder, 10%); @include border-radius(4px); - $shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - @include box-shadow($shadow); - cursor: pointer; - - // Give IE7 some love - @include ie7-restore-left-whitespace(); + @include ie7-restore-left-whitespace(); // Give IE7 some love + @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)}); } // Hover state @@ -34,6 +33,7 @@ color: $grayDark; text-decoration: none; background-color: darken($white, 10%); + *background-color: darken($white, 15%); // Buttons in IE7 don't get borders, so darken on hover background-position: 0 -15px; // transition is only when going to hover, otherwise the background @@ -48,19 +48,18 @@ // Active state .btn.active, .btn:active { - background-image: none; - $shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - @include box-shadow($shadow); background-color: darken($white, 10%); background-color: darken($white, 15%) \9; + background-image: none; outline: 0; + @include box-shadow(#{inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)}); } // Disabled state .btn.disabled, .btn[disabled] { cursor: default; - background-image: none; background-color: darken($white, 10%); + background-image: none; @include opacity(0.65); @include box-shadow(none); } @@ -104,8 +103,8 @@ // Set text color // ------------------------- .btn-primary, .btn-primary:hover, .btn-warning, .btn-warning:hover, .btn-danger, .btn-danger:hover, .btn-success, .btn-success:hover, .btn-info, .btn-info:hover, .btn-inverse, .btn-inverse:hover { - text-shadow: 0 -1px 0 rgba(0,0,0,.25); color: $white; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); } // Provide *some* extra contrast for those who can get it .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { @@ -114,6 +113,11 @@ // Set the backgrounds // ------------------------- +.btn { + // reset here as of 2.0.3 due to Recess property order + border-color: #ccc; + border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25); +} .btn-primary { @include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight); } diff --git a/vendor/assets/stylesheets/bootstrap/_close.scss b/vendor/assets/stylesheets/bootstrap/_close.scss index c57f01d3..25bfe001 100644 --- a/vendor/assets/stylesheets/bootstrap/_close.scss +++ b/vendor/assets/stylesheets/bootstrap/_close.scss @@ -12,7 +12,18 @@ &:hover { color: $black; text-decoration: none; - @include opacity(0.4); cursor: pointer; + @include opacity(0.4); } } + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +button.close { + padding: 0; + cursor: pointer; + background-color: transparent; + border: 0; + -webkit-appearance: none; +}
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_code.scss b/vendor/assets/stylesheets/bootstrap/_code.scss index d6ca6ea2..e2d4b965 100644 --- a/vendor/assets/stylesheets/bootstrap/_code.scss +++ b/vendor/assets/stylesheets/bootstrap/_code.scss @@ -26,14 +26,14 @@ pre { margin: 0 0 $baseLineHeight / 2; font-size: $baseFontSize * .925; // 13px to 12px line-height: $baseLineHeight; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; // fallback for IE7-8 border: 1px solid rgba(0,0,0,.15); @include border-radius(4px); - white-space: pre; - white-space: pre-wrap; - word-break: break-all; - word-wrap: break-word; // Make prettyprint styles more spaced out for readability &.prettyprint { diff --git a/vendor/assets/stylesheets/bootstrap/_component-animations.scss b/vendor/assets/stylesheets/bootstrap/_component-animations.scss index d573a013..772efe66 100644 --- a/vendor/assets/stylesheets/bootstrap/_component-animations.scss +++ b/vendor/assets/stylesheets/bootstrap/_component-animations.scss @@ -2,18 +2,18 @@ // -------------------- .fade { + @include opacity(0); @include transition(opacity .15s linear); - opacity: 0; &.in { - opacity: 1; + @include opacity(1); } } .collapse { - @include transition(height .35s ease); position:relative; - overflow:hidden; height: 0; + overflow:hidden; + @include transition(height .35s ease); &.in { height: auto; } diff --git a/vendor/assets/stylesheets/bootstrap/_dropdowns.scss b/vendor/assets/stylesheets/bootstrap/_dropdowns.scss index 18d101ba..6b62f916 100644 --- a/vendor/assets/stylesheets/bootstrap/_dropdowns.scss +++ b/vendor/assets/stylesheets/bootstrap/_dropdowns.scss @@ -2,7 +2,7 @@ // -------------- // Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns -.dropdown { +.dropup, .dropdown { position: relative; } .dropdown-toggle { @@ -20,11 +20,11 @@ width: 0; height: 0; vertical-align: top; - border-left: 4px solid transparent; - border-right: 4px solid transparent; border-top: 4px solid $black; - @include opacity(0.3); + border-right: 4px solid transparent; + border-left: 4px solid transparent; content: ""; + @include opacity(0.3); } // Place the caret @@ -32,7 +32,7 @@ margin-top: 8px; margin-left: 2px; } -.dropdown:hover .caret, .open.dropdown .caret { +.dropdown:hover .caret, .open .caret { @include opacity(1); } @@ -43,24 +43,22 @@ top: 100%; left: 0; z-index: $zindexDropdown; - float: left; display: none; // none by default, but block on "open" of the menu + float: left; min-width: 160px; padding: 4px 0; - margin: 0; // override default ul + margin: 1px 0 0; // override default ul list-style: none; background-color: $dropdownBackground; - border-color: #ccc; - border-color: rgba(0,0,0,.2); - border-style: solid; - border-width: 1px; - @include border-radius(0 0 5px 5px); + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + @include border-radius(5px); @include box-shadow(0 5px 10px rgba(0,0,0,.2)); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; // Aligns the dropdown menu to right &.pull-right { @@ -95,25 +93,21 @@ // Open state for the dropdown // --------------------------- -.dropdown.open { +.open { // IE7's z-index only goes to the nearest positioned ancestor, which would // make the menu appear below buttons that appeared later on the page *z-index: $zindexDropdown; - .dropdown-toggle { - color: $white; - background: #ccc; - background: rgba(0,0,0,.3); - } .dropdown-menu { display: block; } } // Right aligned dropdowns +// --------------------------- .pull-right .dropdown-menu { - left: auto; right: 0; + left: auto; } // Allow for dropdowns to go bottom up (aka, dropup-menu) @@ -140,4 +134,4 @@ .typeahead { margin-top: 2px; // give it some space to breathe @include border-radius(4px); -} +}
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_forms.scss b/vendor/assets/stylesheets/bootstrap/_forms.scss index bf1f31e9..d72bc42a 100644 --- a/vendor/assets/stylesheets/bootstrap/_forms.scss +++ b/vendor/assets/stylesheets/bootstrap/_forms.scss @@ -40,7 +40,6 @@ legend { label, input, button, select, textarea { @include font-shorthand($baseFontSize, normal, $baseLineHeight); // Set size, weight, line-height here } - input, button, select, textarea { font-family: $baseFontFamily; // And only set font-family here for those that need it (note the missing label element) } @@ -62,8 +61,9 @@ input, textarea, select, .uneditable-input { font-size: $baseFontSize; line-height: $baseLineHeight; color: $gray; + background-color: $inputBackground; border: 1px solid $inputBorder; - @include border-radius(3px); + @include border-radius($inputBorderRadius); } .uneditable-textarea { width: auto; @@ -84,8 +84,9 @@ input[type="image"], input[type="checkbox"], input[type="radio"] { *margin-top: 0; /* IE7 */ line-height: normal; cursor: pointer; - @include border-radius(0); + background-color: transparent; border: 0 \9; /* IE9 and down */ + @include border-radius(0); } input[type="image"] { border: 0; @@ -96,9 +97,9 @@ input[type="file"] { width: auto; padding: initial; line-height: initial; - border: initial; background-color: $inputBackground; background-color: initial; + border: initial; @include box-shadow(none); } @@ -153,6 +154,7 @@ input[type="hidden"] { // Indent the labels to position radios/checkboxes as hanging .radio, .checkbox { + min-height: 18px; // clear the floating input if there is no label text padding-left: 18px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { @@ -184,19 +186,17 @@ input[type="hidden"] { input, textarea { @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); - $transition: border linear .2s, box-shadow linear .2s; - @include transition($transition); + @include transition(#{border linear .2s, box-shadow linear .2s}); } input:focus, textarea:focus { border-color: rgba(82,168,236,.8); - $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - @include box-shadow($shadow); outline: 0; outline: thin dotted \9; /* IE6-9 */ + @include box-shadow(#{inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)}); } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus, select:focus { - @include box-shadow(none); // override for file inputs @include tab-focus(); + @include box-shadow(none); // override for file inputs } @@ -213,7 +213,9 @@ input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focu .input-xxlarge { width: 530px; } // Grid style input sizes -input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { +input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], +// Redeclare since the fluid row class is more specific +.row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } @@ -233,9 +235,13 @@ input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditabl // Disabled and read-only inputs input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { + cursor: not-allowed; background-color: $inputDisabledBackground; border-color: #ddd; - cursor: not-allowed; +} +// Explicitly reset the colors here +input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { + background-color: transparent; } @@ -277,18 +283,19 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ padding: ($baseLineHeight - 1) 20px $baseLineHeight; margin-top: $baseLineHeight; margin-bottom: $baseLineHeight; - background-color: $grayLighter; + background-color: $formActionsBackground; border-top: 1px solid #ddd; @include clearfix(); // Adding clearfix to allow for .pull-right button containers } // For text that needs to appear as an input but should not be an input .uneditable-input { - display: block; + overflow: hidden; // prevent text from wrapping, but still cut it off like an input does + white-space: nowrap; + cursor: not-allowed; background-color: $inputBackground; border-color: #eee; @include box-shadow(inset 0 1px 2px rgba(0,0,0,.025)); - cursor: not-allowed; } // Placeholder text gets special styles; can't be bundled together though for some reason @@ -300,7 +307,7 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ // --------- .help-block, .help-inline { - color: $gray; // lighten the text for some contrast + color: $gray; // lighten the text some for contrast } .help-block { @@ -324,22 +331,24 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ .input-prepend, .input-append { margin-bottom: 5px; input, select, .uneditable-input { + position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness + margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms *margin-left: 0; - @include border-radius(0 3px 3px 0); + vertical-align: middle; + @include border-radius(0 $inputBorderRadius $inputBorderRadius 0); + // Make input on top when focused so blue border and shadow always show &:focus { - position: relative; z-index: 2; } } .uneditable-input { - border-left-color: #eee; - border-right-color: #ccc; + border-left-color: #ccc; } .add-on { display: inline-block; width: auto; - min-width: 16px; height: $baseLineHeight; + min-width: 16px; padding: 4px 5px; font-weight: normal; line-height: $baseLineHeight; @@ -350,7 +359,8 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ border: 1px solid #ccc; } .add-on, .btn { - @include border-radius(3px 0 0 3px); + margin-left: -1px; + @include border-radius(0); } .active { background-color: lighten($green, 30); @@ -361,17 +371,20 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ .add-on, .btn { margin-right: -1px; } + .add-on:first-child, .btn:first-child { + @include border-radius($inputBorderRadius 0 0 $inputBorderRadius); + } } .input-append { input, select, .uneditable-input { - @include border-radius(3px 0 0 3px); + @include border-radius($inputBorderRadius 0 0 $inputBorderRadius); } .uneditable-input { border-right-color: #ccc; + border-left-color: #eee; } - .add-on, .btn { - margin-left: -1px; - @include border-radius(0 3px 3px 0); + .add-on:last-child, .btn:last-child { + @include border-radius(0 $inputBorderRadius $inputBorderRadius 0); } } // Remove all border-radius for inputs with both prepend and append @@ -381,11 +394,11 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ } .add-on:first-child, .btn:first-child { margin-right: -1px; - @include border-radius(3px 0 0 3px); + @include border-radius($inputBorderRadius 0 0 $inputBorderRadius); } .add-on:last-child, .btn:last-child { margin-left: -1px; - @include border-radius(0 3px 3px 0); + @include border-radius(0 $inputBorderRadius $inputBorderRadius 0); } } @@ -395,8 +408,10 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ // ----------- .search-query { - padding-left: 14px; padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom: 0; // remove the default margin on all inputs @include border-radius(14px); } @@ -412,10 +427,13 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ .form-search, .form-inline, .form-horizontal { input, textarea, select, .help-inline, .uneditable-input, .input-prepend, .input-append { display: inline-block; + @include ie7-inline-block(); margin-bottom: 0; } - // Re-hide elemnts due to specifity - .hide { display: none; } + // Re-hide hidden elements due to specifity + .hide { + display: none; + } } .form-search label, .form-inline label { display: inline-block; @@ -433,18 +451,17 @@ input:focus:required:invalid, textarea:focus:required:invalid, select:focus:requ // Remove float and margin, set to inline-block .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; - margin-left: 0; margin-right: 3px; + margin-left: 0; } - // Margin to space out fieldsets .control-group { margin-bottom: $baseLineHeight / 2; } -// Legend collapses margin, so next elements is responsible for spacing +// Legend collapses margin, so next element is responsible for spacing legend + .control-group { margin-top: $baseLineHeight; -webkit-margin-top-collapse: separate; @@ -468,11 +485,15 @@ legend + .control-group { } // Move over all input controls and content .controls { - margin-left: 160px; - /* Super jank IE7 fix to ensure the inputs in .input-append and input-prepend don't inherit the margin of the parent, in this case .controls */ + // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend + // don't inherit the margin of the parent, in this case .controls *display: inline-block; - *margin-left: 0; *padding-left: 20px; + margin-left: 160px; + *margin-left: 0; + &:first-child { + *padding-left: 160px; + } } // Remove bottom margin on block level help text since that's accounted for on .control-group .help-block { @@ -483,4 +504,4 @@ legend + .control-group { .form-actions { padding-left: 160px; } -} +}
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_labels-badges.scss b/vendor/assets/stylesheets/bootstrap/_labels-badges.scss new file mode 100644 index 00000000..981222a0 --- /dev/null +++ b/vendor/assets/stylesheets/bootstrap/_labels-badges.scss @@ -0,0 +1,50 @@ +// LABELS & BADGES +// --------------- + +// Base classes +.label, .badge { + font-size: $baseFontSize * .846; + font-weight: bold; + line-height: 14px; // ensure proper line-height if floated + color: $white; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + background-color: $grayLight; +} +// Set unique padding and border-radii +.label { + padding: 1px 4px 2px; + @include border-radius(3px); +} +.badge { + padding: 1px 9px 2px; + @include border-radius(9px); +} + +// Hover state, but only for links +a { + &.label:hover, &.badge:hover { + color: $white; + text-decoration: none; + cursor: pointer; + } +} + +// Colors +// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute) +// Important (red) +.label-important, .badge-important { background-color: $errorText; } +.label-important[href], .badge-important[href] { background-color: darken($errorText, 10%); } +// Warnings (orange) +.label-warning, .badge-warning { background-color: $orange; } +.label-warning[href], .badge-warning[href] { background-color: darken($orange, 10%); } +// Success (green) +.label-success, .badge-success { background-color: $successText; } +.label-success[href], .badge-success[href] { background-color: darken($successText, 10%); } +// Info (turquoise) +.label-info, .badge-info { background-color: $infoText; } +.label-info[href], .badge-info[href] { background-color: darken($infoText, 10%); } +// Inverse (black) +.label-inverse, .badge-inverse { background-color: $grayDark; } +.label-inverse[href], .badge-inverse[href] { background-color: darken($grayDark, 10%); }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_labels.scss b/vendor/assets/stylesheets/bootstrap/_labels.scss deleted file mode 100644 index 721a3c78..00000000 --- a/vendor/assets/stylesheets/bootstrap/_labels.scss +++ /dev/null @@ -1,38 +0,0 @@ -// LABELS -// ------ - -// Base -.label { - padding: 1px 4px 2px; - font-size: $baseFontSize * .846; - font-weight: bold; - line-height: 13px; // ensure proper line-height if floated - color: $white; - vertical-align: middle; - white-space: nowrap; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - background-color: $grayLight; - @include border-radius(3px); -} - -// Hover state -.label:hover { - color: $white; - text-decoration: none; -} - -// Colors -.label-important { background-color: $errorText; } -.label-important:hover { background-color: darken($errorText, 10%); } - -.label-warning { background-color: $orange; } -.label-warning:hover { background-color: darken($orange, 10%); } - -.label-success { background-color: $successText; } -.label-success:hover { background-color: darken($successText, 10%); } - -.label-info { background-color: $infoText; } -.label-info:hover { background-color: darken($infoText, 10%); } - -.label-inverse { background-color: $grayDark; } -.label-inverse:hover { background-color: darken($grayDark, 10%); }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_layouts.scss b/vendor/assets/stylesheets/bootstrap/_layouts.scss index c600522d..b00312dc 100644 --- a/vendor/assets/stylesheets/bootstrap/_layouts.scss +++ b/vendor/assets/stylesheets/bootstrap/_layouts.scss @@ -11,7 +11,7 @@ // Fluid layouts (left aligned, with sidebar, min- & max-width content) .container-fluid { - padding-left: $gridGutterWidth; padding-right: $gridGutterWidth; + padding-left: $gridGutterWidth; @include clearfix(); }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_mixins.scss b/vendor/assets/stylesheets/bootstrap/_mixins.scss index 50869d2a..2385a543 100644 --- a/vendor/assets/stylesheets/bootstrap/_mixins.scss +++ b/vendor/assets/stylesheets/bootstrap/_mixins.scss @@ -71,11 +71,11 @@ // Sizing shortcuts // ------------------------- -@mixin size($height: 5px, $width: 5px) { +@mixin size($height, $width) { width: $width; height: $height; } -@mixin square($size: 5px) { +@mixin square($size) { @include size($size, $size); } @@ -98,26 +98,28 @@ white-space: nowrap; } -// New image replacement +// CSS image replacement // ------------------------- -// Source: http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/ +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 @mixin hide-text() { - overflow: hidden; - text-indent: 100%; - white-space: nowrap; + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } // FONTS // -------------------------------------------------- @mixin font-family-serif() { - font-family: Georgia, "Times New Roman", Times, serif; + font-family: $serifFontFamily; } @mixin font-family-sans-serif() { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: $sansFontFamily; } @mixin font-family-monospace() { - font-family: Menlo, Monaco, "Courier New", monospace; + font-family: $monoFontFamily; } @mixin font-shorthand($size: $baseFontSize, $weight: normal, $lineHeight: $baseLineHeight) { font-size: $size; @@ -145,9 +147,8 @@ @mixin input-block-level() { display: block; width: 100%; - min-height: 28px; /* Make inputs at least the height of their button counterpart */ - /* Makes inputs behave like true block-level elements */ - @include box-sizing(border-box); + min-height: 28px; // Make inputs at least the height of their button counterpart + @include box-sizing(border-box); // Makes inputs behave like true block-level elements } @@ -179,14 +180,14 @@ // -------------------------------------------------- // Border Radius -@mixin border-radius($radius: 5px) { +@mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } // Drop shadows -@mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) { +@mixin box-shadow($shadow) { -webkit-box-shadow: $shadow; -moz-box-shadow: $shadow; box-shadow: $shadow; @@ -216,7 +217,7 @@ -o-transform: scale($ratio); transform: scale($ratio); } -@mixin translate($x: 0, $y: 0) { +@mixin translate($x, $y) { -webkit-transform: translate($x, $y); -moz-transform: translate($x, $y); -ms-transform: translate($x, $y); @@ -224,7 +225,7 @@ transform: translate($x, $y); } -@mixin skew($x: 0, $y: 0) { +@mixin skew($x, $y) { -webkit-transform: skew($x, $y); -moz-transform: skew($x, $y); -ms-transform: skew($x, $y); @@ -232,7 +233,7 @@ transform: skew($x, $y); } -@mixin translate3d($x: 0, $y: 0, $z: 0) { +@mixin translate3d($x, $y, $z) { -webkit-transform: translate($x, $y, $z); -moz-transform: translate($x, $y, $z); -ms-transform: translate($x, $y, $z); @@ -240,6 +241,17 @@ transform: translate($x, $y, $z); } +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden +// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples +@mixin backface-visibility($visibility){ + -webkit-backface-visibility: $visibility; + -moz-backface-visibility: $visibility; + -ms-backface-visibility: $visibility; + backface-visibility: $visibility; +} + // Background clipping // Heads up: FF 3.6 and under need "padding" instead of "padding-box" @mixin background-clip($clip) { @@ -270,18 +282,19 @@ @mixin user-select($select) { -webkit-user-select: $select; -moz-user-select: $select; + -ms-user-select: $select; -o-user-select: $select; user-select: $select; } // Resize anything -@mixin resizable($direction: both) { +@mixin resizable($direction) { resize: $direction; // Options: horizontal, vertical, both overflow: auto; // Safari fix } // CSS3 Content Columns -@mixin content-columns($columnCount, $columnGap: $gridColumnGutter) { +@mixin content-columns($columnCount, $columnGap: $gridGutterWidth) { -webkit-column-count: $columnCount; -moz-column-count: $columnCount; column-count: $columnCount; @@ -293,7 +306,7 @@ // Opacity @mixin opacity($opacity: 1) { opacity: $opacity; - filter: alpha(opacity=$opacity * 100); + filter: alpha(opacity=#{$opacity * 100}); } @@ -391,18 +404,17 @@ // ------------------- // Dividers (basically an hr) within dropdowns and nav lists @mixin nav-divider() { - height: 1px; - margin: (($baseLineHeight / 2) - 1) 1px; // 8px 1px - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid $white; - // IE7 needs a set width since we gave a height. Restricting just // to IE7 to keep the 1px left/right space in other browsers. // It is unclear where IE is getting the extra space that we need // to negative-margin away, but so it goes. *width: 100%; + height: 1px; + margin: (($baseLineHeight / 2) - 1) 1px; // 8px 1px *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid $white; } // Button backgrounds @@ -410,11 +422,13 @@ @mixin buttonBackground($startColor, $endColor) { // gradientBar will set the background to a pleasing blend of these, to support IE<=9 @include gradientBar($startColor, $endColor); + *background-color: $endColor; // Darken IE7 buttons by default so they stand out more given they won't have borders @include reset-filter(); // in these cases the gradient won't cover the background, so we override &:hover, &:active, &.active, &.disabled, &[disabled] { background-color: $endColor; + *background-color: darken($endColor, 5%); } // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves @@ -472,8 +486,8 @@ // Centered container element @mixin container-fixed() { - margin-left: auto; margin-right: auto; + margin-left: auto; @include clearfix(); } @@ -490,83 +504,95 @@ margin-left: $gridGutterWidth * -1; @include clearfix(); } -@mixin makeColumn($columns: 1) { +@mixin makeColumn($columns: 1, $offset: 0) { float: left; - margin-left: $gridGutterWidth; + margin-left: ($gridColumnWidth * $offset) + ($gridGutterWidth * ($offset - 1)) + ($gridGutterWidth * 2); width: ($gridColumnWidth * $columns) + ($gridGutterWidth * ($columns - 1)); } // The Grid -@mixin gridCore($gridColumnWidth, $gridGutterWidth) { - [class*="span"] { - float: left; - margin-left: $gridGutterWidth; - } - - @for $i from 1 through $gridColumns { - .span#{$i} { @include gridCoreSpan($i, $gridColumnWidth, $gridGutterWidth) } +@mixin gridCore($columnWidth, $gutterWidth) { + .row { + margin-left: $gutterWidth * -1; + @include clearfix(); } - @for $i from 1 through $gridColumns { - .offset#{$i} { @include gridCoreOffset($i, $gridColumnWidth, $gridGutterWidth) } + [class*="span"] { + float: left; + margin-left: $gutterWidth; } - .row { - margin-left: $gridGutterWidth * -1; - @include clearfix(); - } + // Set the container width, and override it for fixed navbars in media queries + .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { @include gridCoreSpan($gridColumns, $columnWidth, $gutterWidth); } - .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { - @include gridCoreSpan($gridColumns, $gridColumnWidth, $gridGutterWidth); + @include gridCoreSpanX($gridColumns, $columnWidth, $gutterWidth); + @include gridCoreOffsetX($gridColumns, $columnWidth, $gutterWidth); +} +@mixin gridCoreSpanX($cols, $columnWidth, $gutterWidth) { + @for $i from 1 through $cols { + .span#{$i} { @include gridCoreSpan($i, $columnWidth, $gutterWidth) }; } } - -@mixin gridCoreSpan($columns, $gridColumnWidth, $gridGutterWidth) { - width: ($gridColumnWidth * $columns) + ($gridGutterWidth * ($columns - 1)); +@mixin gridCoreSpan($columns, $columnWidth, $gutterWidth) { + width: ($columnWidth * $columns) + ($gutterWidth * ($columns - 1)); } - -@mixin gridCoreOffset($columns, $gridColumnWidth, $gridGutterWidth) { - margin-left: ($gridColumnWidth * $columns) + ($gridGutterWidth * ($columns - 1)) + ($gridGutterWidth * 2); +@mixin gridCoreOffsetX($cols, $columnWidth, $gutterWidth) { + @for $i from 1 through $cols { + .offset#{$i} { @include gridCoreOffset($i, $columnWidth, $gutterWidth); }; + } +} +@mixin gridCoreOffset($columns, $columnWidth, $gutterWidth) { + margin-left: ($columnWidth * $columns) + ($gutterWidth * ($columns + 1)); } -@mixin gridFluid($fluidGridColumnWidth, $fluidGridGutterWidth) { +@mixin gridFluid($columnWidth, $gutterWidth) { .row-fluid { width: 100%; @include clearfix(); - > [class*="span"] { + [class*="span"] { + @include input-block-level(); float: left; - margin-left: $fluidGridGutterWidth; + margin-left: $gutterWidth; + *margin-left: $gutterWidth - (.5 / ($gridRowWidth/1px) * 100 * 1%); } - > [class*="span"]:first-child { + [class*="span"]:first-child { margin-left: 0; } - @for $i from 1 through $gridColumns { - > .span#{$i} { @include gridFluidSpan($i, $fluidGridColumnWidth, $fluidGridGutterWidth); } - } - } -} -@mixin gridFluidSpan($columns, $fluidGridColumnWidth, $fluidGridGutterWidth) { - width: ($fluidGridColumnWidth * $columns) + ($fluidGridGutterWidth * ($columns - 1)); + // generate .spanX + @include gridFluidSpanX($gridColumns, $columnWidth, $gutterWidth); + } } - -@mixin gridInput($gridColumnWidth, $gridGutterWidth) { - @for $i from 1 through $gridColumns { - input.span#{$i}, textarea.span#{$i}, .uneditable-input.span#{$i} { @include gridInputSpan($i, $gridColumnWidth, $gridGutterWidth); } +@mixin gridFluidSpanX($cols, $columnWidth, $gutterWidth) { + @for $i from 1 through $cols { + .span#{$i} { @include gridFluidSpan($i, $columnWidth, $gutterWidth) }; } +} +@mixin gridFluidSpan($columns, $columnWidth, $gutterWidth) { + width: ($columnWidth * $columns) + ($gutterWidth * ($columns - 1)); + *width: ($columnWidth * $columns) + ($gutterWidth * ($columns - 1)) - (.5 / ($gridRowWidth/1px) * 100 * 1%); +} +@mixin gridInput($columnWidth, $gutterWidth) { input, textarea, .uneditable-input { margin-left: 0; // override margin-left from core grid system } -} -@mixin gridInputSpan($columns, $gridColumWidth, $gridGutterWidth) { - width: (($gridColumnWidth) * $columns) + ($gridGutterWidth * ($columns - 1)) - 10; + // generate .spanX + @include gridInputSpanX($gridColumns, $columnWidth, $gutterWidth); +} +@mixin gridInputSpanX($cols, $columnWidth, $gutterWidth) { + @for $i from 1 through $cols { + input.span#{$i}, textarea.span#{$i}, .uneditable-input.span#{$i} { @include gridInputSpan($i, $columnWidth, $gutterWidth); } + } +} +@mixin gridInputSpan($columns, $columnWidth, $gutterWidth) { + width: (($columnWidth) * $columns) + ($gutterWidth * ($columns - 1)) - 10; } -@mixin makeFluidColumn($columns) { +@mixin makeFluidColumn($columns, $columnWidth, $gutterWidth) { // This isn't perfect, but it's better than nothing. float: left; - margin-left: $fluidGridGutterWidth; - @include gridFluidSpan($columns, $fluidGridColumnWidth, $fluidGridGutterWidth); + margin-left: $gutterWidth; + @include gridFluidSpan($columns, $columnWidth, $gutterWidth); }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_navbar.scss b/vendor/assets/stylesheets/bootstrap/_navbar.scss index 0de839e7..102c9a1a 100644 --- a/vendor/assets/stylesheets/bootstrap/_navbar.scss +++ b/vendor/assets/stylesheets/bootstrap/_navbar.scss @@ -16,12 +16,12 @@ // Gradient is applied to it's own element because overflow visible is not honored by IE when filter is present .navbar-inner { + min-height: $navbarHeight; padding-left: 20px; padding-right: 20px; @include gradient-vertical($navbarBackgroundHighlight, $navbarBackground); @include border-radius(4px); - $shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1); - @include box-shadow($shadow); + @include box-shadow(#{0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1)}); } // Set width to auto for default container @@ -30,28 +30,6 @@ width: auto; } -// Navbar button for toggling navbar items in responsive layouts -.btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - @include buttonBackground($navbarBackgroundHighlight, $navbarBackground); - $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - @include box-shadow($shadow); -} -.btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - @include border-radius(1px); - @include box-shadow(0 1px 0 rgba(0,0,0,.25)); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} // Override the default collapsed state .nav-collapse.collapse { height: auto; @@ -69,24 +47,33 @@ .brand { float: left; display: block; - padding: 8px 20px 12px; + // Vertically center the text given $navbarHeight + $elementHeight: 20px; + padding: (($navbarHeight - $elementHeight) / 2 - 2) 20px (($navbarHeight - $elementHeight) / 2 + 2); margin-left: -20px; // negative indent to left-align the text down the page font-size: 20px; font-weight: 200; line-height: 1; - color: $white; + color: $navbarBrandColor; } // Plain text in topbar .navbar-text { margin-bottom: 0; line-height: $navbarHeight; } + // Janky solution for now to account for links outside the .nav + .navbar-link { + color: $navbarLinkColor; + &:hover { + color: $navbarLinkColorHover; + } + } // Buttons in navbar .btn, .btn-group { @include navbarVerticalAlign(30px); // Vertically center in navbar } .btn-group .btn { - margin-top: 0; // then undo the margin here so we don't accidentally double it + margin: 0; // then undo the margin here so we don't accidentally double it } } @@ -125,8 +112,7 @@ color: $white; background-color: $navbarSearchBackground; border: 1px solid $navbarSearchBorder; - $shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0px rgba(255,255,255,.15); - @include box-shadow($shadow); + @include box-shadow(#{inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0px rgba(255,255,255,.15)}); @include transition(none); // Placeholder text gets special styles; can't be a grouped selector @@ -198,12 +184,29 @@ // Links .navbar .nav > li > a { float: none; - padding: 10px 10px 11px; + // Vertically center the text given $navbarHeight + $elementHeight: 20px; + padding: (($navbarHeight - $elementHeight) / 2 - 1) 10px (($navbarHeight - $elementHeight) / 2 + 1); line-height: 19px; color: $navbarLinkColor; text-decoration: none; text-shadow: 0 -1px 0 rgba(0,0,0,.25); } +// Buttons +.navbar .btn { + display: inline-block; + padding: 4px 10px 4px; + // Vertically center the button given $navbarHeight + $elementHeight: 20px; + margin: (($navbarHeight - $elementHeight) / 2 - 1) 5px (($navbarHeight - $elementHeight) / 2); + line-height: $baseLineHeight; +} +.navbar .btn-group { + margin: 0; + // Vertically center the button given @navbarHeight + $elementHeight: 28px; + padding: (($navbarHeight - $elementHeight) / 2 - 1) 5px (($navbarHeight - $elementHeight) / 2); +} // Hover .navbar .nav > li > a:hover { background-color: $navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from :active @@ -234,22 +237,40 @@ margin-right: 0; } - +// Navbar button for toggling navbar items in responsive layouts +// These definitions need to come after '.navbar .btn' +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + @include buttonBackground($navbarBackgroundHighlight, $navbarBackground); + @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)}); +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + @include border-radius(1px); + @include box-shadow(0 1px 0 rgba(0,0,0,.25)); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} // Dropdown menus // -------------- // Menu position and menu carets .navbar .dropdown-menu { - margin-top: 1px; - @include border-radius(4px); &:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: $dropdownBackground; + border-bottom: 7px solid $dropdownBorder; position: absolute; top: -7px; left: 9px; @@ -284,27 +305,27 @@ } // Dropdown toggle caret -.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret { +.navbar .nav li.dropdown .dropdown-toggle .caret, .navbar .nav li.dropdown.open .caret { border-top-color: $white; border-bottom-color: $white; } -.navbar .nav .active .caret { +.navbar .nav li.dropdown.active .caret { @include opacity(1); } // Remove background color from open dropdown -.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle { +.navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { background-color: transparent; } // Dropdown link on hover -.navbar .nav .active > .dropdown-toggle:hover { +.navbar .nav li.dropdown.active > .dropdown-toggle:hover { color: $white; } // Right aligned menus need alt position // TODO: rejigger this at some point to simplify the selectors -.navbar .nav.pull-right .dropdown-menu, .navbar .nav .dropdown-menu.pull-right { +.navbar .pull-right .dropdown-menu, .navbar .dropdown-menu.pull-right { left: auto; right: 0; &:before { diff --git a/vendor/assets/stylesheets/bootstrap/_navs.scss b/vendor/assets/stylesheets/bootstrap/_navs.scss index 05493463..a83a95cb 100644 --- a/vendor/assets/stylesheets/bootstrap/_navs.scss +++ b/vendor/assets/stylesheets/bootstrap/_navs.scss @@ -21,6 +21,11 @@ background-color: $grayLighter; } +// Redeclare pull classes because of specifity +.nav > .pull-right { + float: right; +} + // Nav headers (for dropdowns and lists) .nav .nav-header { display: block; @@ -93,12 +98,10 @@ .nav-tabs { border-bottom: 1px solid #ddd; } - // Make the list-items overlay the bottom border .nav-tabs > li { margin-bottom: -1px; } - // Actual tabs (as links) .nav-tabs > li > a { padding-top: 8px; @@ -119,6 +122,7 @@ cursor: default; } + // PILLS // ----- @@ -182,13 +186,11 @@ // DROPDOWNS // --------- -// Position the menu -.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu { - margin-top: 1px; - border-width: 1px; +.nav-tabs .dropdown-menu { + @include border-radius(0 0 5px 5px); // remove the top rounded corners here since there is a hard edge above the menu } .nav-pills .dropdown-menu { - @include border-radius(4px); + @include border-radius(4px); // make rounded corners match the pills } // Default dropdown links @@ -220,12 +222,12 @@ // Open dropdowns // ------------------------- -.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover { +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover { color: $white; background-color: $grayLight; border-color: $grayLight; } -.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret { +.nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret { border-top-color: $white; border-bottom-color: $white; @include opacity(1); @@ -250,12 +252,11 @@ @include clearfix(); } .tab-content { - display: table; // prevent content from running below tabs - width: 100%; + overflow: auto; // prevent content from running below tabs } // Remove border on bottom, left, right -.tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs { +.tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } @@ -271,21 +272,21 @@ // BOTTOM // ------ -.tabs-below .nav-tabs { +.tabs-below > .nav-tabs { border-top: 1px solid #ddd; } -.tabs-below .nav-tabs > li { +.tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } -.tabs-below .nav-tabs > li > a { +.tabs-below > .nav-tabs > li > a { @include border-radius(0 0 4px 4px); &:hover { border-bottom-color: transparent; border-top-color: #ddd; } } -.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover { +.tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover { border-color: transparent #ddd #ddd #ddd; } @@ -293,47 +294,47 @@ // ------------ // Common styles -.tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li { +.tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } -.tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a { +.tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } // Tabs on the left -.tabs-left .nav-tabs { +.tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } -.tabs-left .nav-tabs > li > a { +.tabs-left > .nav-tabs > li > a { margin-right: -1px; @include border-radius(4px 0 0 4px); } -.tabs-left .nav-tabs > li > a:hover { +.tabs-left > .nav-tabs > li > a:hover { border-color: $grayLighter #ddd $grayLighter $grayLighter; } -.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover { +.tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover { border-color: #ddd transparent #ddd #ddd; *border-right-color: $white; } // Tabs on the right -.tabs-right .nav-tabs { +.tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } -.tabs-right .nav-tabs > li > a { +.tabs-right > .nav-tabs > li > a { margin-left: -1px; @include border-radius(0 4px 4px 0); } -.tabs-right .nav-tabs > li > a:hover { +.tabs-right > .nav-tabs > li > a:hover { border-color: $grayLighter $grayLighter $grayLighter #ddd; } -.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover { +.tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover { border-color: #ddd #ddd #ddd transparent; *border-left-color: $white; } diff --git a/vendor/assets/stylesheets/bootstrap/_progress-bars.scss b/vendor/assets/stylesheets/bootstrap/_progress-bars.scss index a6f74c3d..e1fa27a4 100644 --- a/vendor/assets/stylesheets/bootstrap/_progress-bars.scss +++ b/vendor/assets/stylesheets/bootstrap/_progress-bars.scss @@ -7,25 +7,32 @@ // Webkit @-webkit-keyframes progress-bar-stripes { - from { background-position: 0 0; } - to { background-position: 40px 0; } + from { background-position: 40px 0; } + to { background-position: 0 0 } } // Firefox @-moz-keyframes progress-bar-stripes { - from { background-position: 0 0; } - to { background-position: 40px 0; } + from { background-position: 40px 0; } + to { background-position: 0 0; } } +// IE9 @-ms-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Opera +@-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } // Spec @keyframes progress-bar-stripes { - from { background-position: 0 0; } - to { background-position: 40px 0; } + from { background-position: 40px 0; } + to { background-position: 0 0; } } @@ -67,6 +74,8 @@ .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } diff --git a/vendor/assets/stylesheets/bootstrap/_reset.scss b/vendor/assets/stylesheets/bootstrap/_reset.scss index b1d9157a..1d9a62b2 100644 --- a/vendor/assets/stylesheets/bootstrap/_reset.scss +++ b/vendor/assets/stylesheets/bootstrap/_reset.scss @@ -62,10 +62,10 @@ sub { // ------------------------- img { - height: auto; + max-width: 100%; // Make images inherently responsive + vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; - vertical-align: middle; } // Forms @@ -90,10 +90,10 @@ button, input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; // Style clickable inputs in iOS } input[type="search"] { // Appearance in Safari/Chrome - -webkit-appearance: textfield; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; + -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { diff --git a/vendor/assets/stylesheets/bootstrap/_sprites.scss b/vendor/assets/stylesheets/bootstrap/_sprites.scss index a26b15f9..dbda614f 100644 --- a/vendor/assets/stylesheets/bootstrap/_sprites.scss +++ b/vendor/assets/stylesheets/bootstrap/_sprites.scss @@ -18,13 +18,12 @@ display: inline-block; width: 14px; height: 14px; + @include ie7-restore-right-whitespace(); line-height: 14px; vertical-align: text-top; background-image: $iconSpritePath; background-position: 14px 14px; background-repeat: no-repeat; - - @include ie7-restore-right-whitespace(); } .icon-white { background-image: $iconWhiteSpritePath; @@ -148,10 +147,31 @@ .icon-comment { background-position: -240px -120px; } .icon-magnet { background-position: -264px -120px; } .icon-chevron-up { background-position: -288px -120px; } -.icon-chevron-down { background-position: -313px -119px; } // 1px off +.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off .icon-retweet { background-position: -336px -120px; } .icon-shopping-cart { background-position: -360px -120px; } .icon-folder-close { background-position: -384px -120px; } .icon-folder-open { background-position: -408px -120px; } -.icon-resize-vertical { background-position: -432px -119px; } -.icon-resize-horizontal { background-position: -456px -118px; } +.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off +.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off + +.icon-hdd { background-position: 0 -144px; } +.icon-bullhorn { background-position: -24px -144px; } +.icon-bell { background-position: -48px -144px; } +.icon-certificate { background-position: -72px -144px; } +.icon-thumbs-up { background-position: -96px -144px; } +.icon-thumbs-down { background-position: -120px -144px; } +.icon-hand-right { background-position: -144px -144px; } +.icon-hand-left { background-position: -168px -144px; } +.icon-hand-up { background-position: -192px -144px; } +.icon-hand-down { background-position: -216px -144px; } +.icon-circle-arrow-right { background-position: -240px -144px; } +.icon-circle-arrow-left { background-position: -264px -144px; } +.icon-circle-arrow-up { background-position: -288px -144px; } +.icon-circle-arrow-down { background-position: -312px -144px; } +.icon-globe { background-position: -336px -144px; } +.icon-wrench { background-position: -360px -144px; } +.icon-tasks { background-position: -384px -144px; } +.icon-filter { background-position: -408px -144px; } +.icon-briefcase { background-position: -432px -144px; } +.icon-fullscreen { background-position: -456px -144px; }
\ No newline at end of file diff --git a/vendor/assets/stylesheets/bootstrap/_tables.scss b/vendor/assets/stylesheets/bootstrap/_tables.scss index a1ca4a17..36c7687d 100644 --- a/vendor/assets/stylesheets/bootstrap/_tables.scss +++ b/vendor/assets/stylesheets/bootstrap/_tables.scss @@ -9,9 +9,9 @@ table { max-width: 100%; + background-color: $tableBackground; border-collapse: collapse; border-spacing: 0; - background-color: $tableBackground; } // BASELINE STYLES @@ -36,6 +36,7 @@ table { vertical-align: bottom; } // Remove top border from thead by default + caption + thead tr:first-child th, caption + thead tr:first-child td, colgroup + thead tr:first-child th, colgroup + thead tr:first-child td, thead:first-child tr:first-child th, thead:first-child tr:first-child td { border-top: 0; @@ -63,30 +64,40 @@ table { .table-bordered { border: 1px solid $tableBorder; - border-left: 0; border-collapse: separate; // Done so we can round those corners! *border-collapse: collapsed; // IE7 can't round corners anyway + border-left: 0; @include border-radius(4px); th, td { border-left: 1px solid $tableBorder; } // Prevent a double border + caption + thead tr:first-child th, caption + tbody tr:first-child th, caption + tbody tr:first-child td, + colgroup + thead tr:first-child th, colgroup + tbody tr:first-child th, colgroup + tbody tr:first-child td, thead:first-child tr:first-child th, tbody:first-child tr:first-child th, tbody:first-child tr:first-child td { border-top: 0; } // For first th or td in the first row in the first thead or tbody thead:first-child tr:first-child th:first-child, tbody:first-child tr:first-child td:first-child { - @include border-radius(4px 0 0 0); + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; } thead:first-child tr:first-child th:last-child, tbody:first-child tr:first-child td:last-child { - @include border-radius(0 4px 0 0); + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; } // For first th or td in the first row in the first thead or tbody thead:last-child tr:last-child th:first-child, tbody:last-child tr:last-child td:first-child { - @include border-radius(0 0 0 4px); + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; } thead:last-child tr:last-child th:last-child, tbody:last-child tr:last-child td:last-child { - @include border-radius(0 0 4px 0); + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; } } diff --git a/vendor/assets/stylesheets/bootstrap/_thumbnails.scss b/vendor/assets/stylesheets/bootstrap/_thumbnails.scss index 4a434b17..93f2ce63 100644 --- a/vendor/assets/stylesheets/bootstrap/_thumbnails.scss +++ b/vendor/assets/stylesheets/bootstrap/_thumbnails.scss @@ -1,15 +1,28 @@ // THUMBNAILS // ---------- +// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files +// Make wrapper ul behave like the grid .thumbnails { margin-left: -$gridGutterWidth; list-style: none; @include clearfix(); } +// Fluid rows have no left margin +.row-fluid .thumbnails { + margin-left: 0; +} + +// Float li to make thumbnails appear in a row .thumbnails > li { float: left; margin: 0 0 $baseLineHeight $gridGutterWidth; + float: left; // Explicity set the float since we don't require .span* classes + margin-bottom: $baseLineHeight; + margin-left: $gridGutterWidth; } + +// The actual thumbnail (can be `a` or `div`) .thumbnail { display: block; padding: 4px; @@ -18,6 +31,7 @@ @include border-radius(4px); @include box-shadow(0 1px 1px rgba(0,0,0,.075)); } + // Add a hover state for linked versions only a.thumbnail:hover { border-color: $linkColor; diff --git a/vendor/assets/stylesheets/bootstrap/_type.scss b/vendor/assets/stylesheets/bootstrap/_type.scss index 3dae535b..76ac40c3 100644 --- a/vendor/assets/stylesheets/bootstrap/_type.scss +++ b/vendor/assets/stylesheets/bootstrap/_type.scss @@ -52,8 +52,8 @@ h2 { } } h3 { - line-height: $baseLineHeight * 1.5; font-size: 18px; + line-height: $baseLineHeight * 1.5; small { font-size: 14px; } @@ -131,9 +131,10 @@ dd { .dl-horizontal { dt { float: left; - clear: left; width: 120px; + clear: left; text-align: right; + @include text-overflow(); } dd { margin-left: 130px; @@ -164,8 +165,8 @@ em { // Abbreviations and acronyms abbr[title] { - border-bottom: 1px dotted #ddd; cursor: help; + border-bottom: 1px dotted #ddd; } abbr.initialism { @@ -194,10 +195,10 @@ blockquote { // Float right with text-align: right &.pull-right { float: right; - padding-left: 0; padding-right: 15px; - border-left: 0; + padding-left: 0; border-right: 5px solid $grayLighter; + border-left: 0; p, small { text-align: right; } @@ -213,8 +214,8 @@ q:before, q:after, blockquote:before, blockquote:after { address { display: block; margin-bottom: $baseLineHeight; - line-height: $baseLineHeight; font-style: normal; + line-height: $baseLineHeight; } // Misc diff --git a/vendor/assets/stylesheets/bootstrap/_variables.scss b/vendor/assets/stylesheets/bootstrap/_variables.scss index 024cb78c..c68ba185 100644 --- a/vendor/assets/stylesheets/bootstrap/_variables.scss +++ b/vendor/assets/stylesheets/bootstrap/_variables.scss @@ -41,15 +41,20 @@ $linkColorHover: darken($linkColor, 15%) !default; // Typography // ------------------------- +$sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif !default; +$serifFontFamily: Georgia, "Times New Roman", Times, serif !default; +$monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace !default; + $baseFontSize: 13px !default; -$baseFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif !default; +$baseFontFamily: $sansFontFamily !default; $baseLineHeight: 18px !default; -$altFontFamily: Georgia, "Times New Roman", Times, serif !default; +$altFontFamily: $serifFontFamily !default; $headingsFontFamily: inherit !default; // empty to use BS default, @baseFontFamily $headingsFontWeight: bold !default; // instead of browser default, bold $headingsColor: inherit !default; // empty to use BS default, @textColor + // Tables // ------------------------- $tableBackground: transparent !default; // overall background-color @@ -61,7 +66,7 @@ $tableBorder: #ddd !default; // table and cell border // ------------------------- $btnBackground: $white !default; $btnBackgroundHighlight: darken($white, 10%) !default; -$btnBorder: darken($white, 20%) !default; +$btnBorder: #ccc !default; $btnPrimaryBackground: $linkColor !default; $btnPrimaryBackgroundHighlight: adjust-hue($btnPrimaryBackground, 15%) !default; @@ -85,7 +90,9 @@ $btnInverseBackgroundHighlight: $grayDarker !default; // ------------------------- $inputBackground: $white !default; $inputBorder: #ccc !default; +$inputBorderRadius: 3px !default; $inputDisabledBackground: $grayLighter !default; +$formActionsBackground: #f5f5f5 !default; // Dropdowns @@ -145,6 +152,7 @@ $navbarSearchBackground: lighten($navbarBackground, 25%) !default; $navbarSearchBackgroundFocus: $white !default; $navbarSearchBorder: darken($navbarSearchBackground, 30%) !default; $navbarSearchPlaceholderColor: #ccc !default; +$navbarBrandColor: $navbarLinkColor !default; // Hero unit @@ -173,19 +181,54 @@ $infoBackground: #d9edf7 !default; $infoBorder: darken(adjust-hue($infoBackground, -10), 7%) !default; - -// GRID +// FIXED GRID // -------------------------------------------------- -// Default 940px grid +// Default, 940px // ------------------------- $gridColumns: 12 !default; $gridColumnWidth: 60px !default; $gridGutterWidth: 20px !default; $gridRowWidth: ($gridColumns * $gridColumnWidth) + ($gridGutterWidth * ($gridColumns - 1)) !default; +// Portrait tablet to default desktop +// ------------------------- +$gridColumnWidthTablet: 42px !default; +$gridGutterWidthTablet: 20px !default; + +// Large desktop and up +// ------------------------- +$gridColumnWidthLarge: 70px !default; +$gridGutterWidthLarge: 30px !default; + + +// FLUID GRID +// -------------------------------------------------- + +// Default +// ------------------------- +$fluidGridColumnWidth: 6.382978723% !default; +$fluidGridGutterWidth: 2.127659574% !default; + +// Portrait tablet to default desktop +// ------------------------- +$fluidGridColumnWidthTablet: 5.801104972% !default; +$fluidGridGutterWidthTablet: 2.762430939% !default; + +// Large desktop and up +// ------------------------- +$fluidGridColumnWidthLarge: 5.982905983% !default; +$fluidGridGutterWidthLarge: 2.564102564% !default; + + + +// RESPONSIVE DESIGN +// -------------------------------------------------- -// Fluid grid +// Media widths // ------------------------- -$fluidGridColumnWidth: 6.382978723% !default; -$fluidGridGutterWidth: 2.127659574% !default;
\ No newline at end of file +// Not supported Sass < 3.2 :( +// $mediaPhone: 480px !default; +// $mediaTablet: 768px !default; +// $mediaDesktop: 980px !default; +// $mediaLarge: 1200px !default; // and upper |