Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap-sass.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas McDonald <tom@conceptcoding.co.uk>2012-05-14 00:30:56 +0400
committerThomas McDonald <tom@conceptcoding.co.uk>2012-05-14 00:30:56 +0400
commit2d3cfe1791ef2d05fd6c6bc7ea0b435221e8765d (patch)
tree7b8c4fdf527740bd126f27c9db0f252193863ed2
parentc47196e25193a4f0a2c146d5b62e5f8e30ec5ceb (diff)
parent76ddb93ccf66913c3b8c4d51933daa726705eaf4 (diff)
Merge branch '2.0.3'v2.0.3
-rw-r--r--.gitignore3
-rw-r--r--.travis.yml7
-rw-r--r--CHANGELOG.md9
-rw-r--r--README.md44
-rw-r--r--Rakefile18
-rw-r--r--bootstrap-sass.gemspec2
-rw-r--r--lib/bootstrap-sass.rb37
-rw-r--r--lib/bootstrap-sass/compass_functions.rb (renamed from lib/bootstrap-sass/compass_extensions.rb)0
-rw-r--r--lib/bootstrap-sass/engine.rb2
-rw-r--r--lib/bootstrap-sass/rails_functions.rb (renamed from lib/bootstrap-sass/config/sass_extentions.rb)0
-rw-r--r--test/compilation_test.rb11
-rw-r--r--test/gemfiles/sass_3_1.gemfile5
-rw-r--r--test/gemfiles/sass_head.gemfile5
-rw-r--r--test/test_helper.rb7
-rw-r--r--vendor/assets/images/glyphicons-halflings-white.pngbin4352 -> 8777 bytes
-rw-r--r--vendor/assets/images/glyphicons-halflings.pngbin4352 -> 13826 bytes
-rw-r--r--vendor/assets/javascripts/bootstrap-alert.js60
-rw-r--r--vendor/assets/javascripts/bootstrap-button.js62
-rw-r--r--vendor/assets/javascripts/bootstrap-carousel.js46
-rw-r--r--vendor/assets/javascripts/bootstrap-collapse.js71
-rw-r--r--vendor/assets/javascripts/bootstrap-dropdown.js28
-rw-r--r--vendor/assets/javascripts/bootstrap-modal.js42
-rw-r--r--vendor/assets/javascripts/bootstrap-popover.js23
-rw-r--r--vendor/assets/javascripts/bootstrap-scrollspy.js60
-rw-r--r--vendor/assets/javascripts/bootstrap-tab.js19
-rw-r--r--vendor/assets/javascripts/bootstrap-tooltip.js75
-rw-r--r--vendor/assets/javascripts/bootstrap-transition.js50
-rw-r--r--vendor/assets/javascripts/bootstrap-typeahead.js34
-rw-r--r--vendor/assets/stylesheets/_bootstrap-responsive.scss168
-rw-r--r--vendor/assets/stylesheets/_bootstrap.scss13
-rw-r--r--vendor/assets/stylesheets/bootstrap/_accordion.scss5
-rw-r--r--vendor/assets/stylesheets/bootstrap/_badges.scss36
-rw-r--r--vendor/assets/stylesheets/bootstrap/_button-groups.scss82
-rw-r--r--vendor/assets/stylesheets/bootstrap/_buttons.scss26
-rw-r--r--vendor/assets/stylesheets/bootstrap/_close.scss13
-rw-r--r--vendor/assets/stylesheets/bootstrap/_code.scss8
-rw-r--r--vendor/assets/stylesheets/bootstrap/_component-animations.scss8
-rw-r--r--vendor/assets/stylesheets/bootstrap/_dropdowns.scss38
-rw-r--r--vendor/assets/stylesheets/bootstrap/_forms.scss95
-rw-r--r--vendor/assets/stylesheets/bootstrap/_labels-badges.scss50
-rw-r--r--vendor/assets/stylesheets/bootstrap/_labels.scss38
-rw-r--r--vendor/assets/stylesheets/bootstrap/_layouts.scss2
-rw-r--r--vendor/assets/stylesheets/bootstrap/_mixins.scss172
-rw-r--r--vendor/assets/stylesheets/bootstrap/_navbar.scss101
-rw-r--r--vendor/assets/stylesheets/bootstrap/_navs.scss53
-rw-r--r--vendor/assets/stylesheets/bootstrap/_progress-bars.scss21
-rw-r--r--vendor/assets/stylesheets/bootstrap/_reset.scss6
-rw-r--r--vendor/assets/stylesheets/bootstrap/_sprites.scss30
-rw-r--r--vendor/assets/stylesheets/bootstrap/_tables.scss23
-rw-r--r--vendor/assets/stylesheets/bootstrap/_thumbnails.scss14
-rw-r--r--vendor/assets/stylesheets/bootstrap/_type.scss13
-rw-r--r--vendor/assets/stylesheets/bootstrap/_variables.scss61
52 files changed, 1095 insertions, 701 deletions
diff --git a/.gitignore b/.gitignore
index a3a6afd6..bc239884 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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.
diff --git a/README.md b/README.md
index 7418f1f8..e3ca25b1 100644
--- a/README.md
+++ b/README.md
@@ -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
index a20760bf..3bf6484a 100644
--- a/vendor/assets/images/glyphicons-halflings-white.png
+++ b/vendor/assets/images/glyphicons-halflings-white.png
Binary files differ
diff --git a/vendor/assets/images/glyphicons-halflings.png b/vendor/assets/images/glyphicons-halflings.png
index 92d4445d..79bc568c 100644
--- a/vendor/assets/images/glyphicons-halflings.png
+++ b/vendor/assets/images/glyphicons-halflings.png
Binary files differ
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