Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Apply 2.3.1 update #307

Closed
wants to merge 6 commits into from

3 participants

@tcaddy

Updated to Bootstrap v2.3.1, trying to do it the "right" way:

  1. Modify update-bootstrap.sh to use a different git repo for sass-twitter-bootstrap (a fork that has been updated to 2.3.1), but make it pretty obvious and easy to change it back in future.
  2. Run the script
  3. Bump version in bootstrap-sass.gemspec
@m5o m5o commented on the diff
update-bootstrap.sh
@@ -2,8 +2,17 @@
ROOT=`pwd`"/vendor/assets"
TMP='tmp/sass-twitter-bootstrap'
+
+# the normal sass-twitter-bootstrap repo hasn't been updated to 3.2.1 yet
@m5o
m5o added a note

sorry for the delay - now we are ready

jlong/sass-bootstrap-defunct#56

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@trisweb

I appreciate that you used the script! I will be running it again now so I apologize in advance if I use the official repo and close this pull.

@trisweb trisweb referenced this pull request from a commit in trisweb/bootstrap-sass
@trisweb trisweb Upgrade to 2.3.1 from official upstream. 4884e9a
@trisweb

I checked my updates against yours and all looks good - though this wasn't current with our master - just so you're aware we've had a couple fixes since you forked. Going to close this and open a new pull based on the official.

@trisweb trisweb closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
Showing with 461 additions and 226 deletions.
  1. +1 −1  bootstrap-sass.gemspec
  2. +11 −2 update-bootstrap.sh
  3. +1 −1  vendor/assets/javascripts/bootstrap-affix.js
  4. +1 −1  vendor/assets/javascripts/bootstrap-alert.js
  5. +1 −1  vendor/assets/javascripts/bootstrap-button.js
  6. +32 −10 vendor/assets/javascripts/bootstrap-carousel.js
  7. +4 −4 vendor/assets/javascripts/bootstrap-collapse.js
  8. +14 −10 vendor/assets/javascripts/bootstrap-dropdown.js
  9. +14 −12 vendor/assets/javascripts/bootstrap-modal.js
  10. +5 −5 vendor/assets/javascripts/bootstrap-popover.js
  11. +2 −2 vendor/assets/javascripts/bootstrap-scrollspy.js
  12. +1 −1  vendor/assets/javascripts/bootstrap-tab.js
  13. +104 −30 vendor/assets/javascripts/bootstrap-tooltip.js
  14. +1 −1  vendor/assets/javascripts/bootstrap-transition.js
  15. +16 −4 vendor/assets/javascripts/bootstrap-typeahead.js
  16. +4 −2 vendor/assets/stylesheets/bootstrap/_button-groups.scss
  17. +8 −10 vendor/assets/stylesheets/bootstrap/_buttons.scss
  18. +33 −6 vendor/assets/stylesheets/bootstrap/_carousel.scss
  19. +2 −1  vendor/assets/stylesheets/bootstrap/_close.scss
  20. +16 −12 vendor/assets/stylesheets/bootstrap/_dropdowns.scss
  21. +5 −2 vendor/assets/stylesheets/bootstrap/_forms.scss
  22. +4 −2 vendor/assets/stylesheets/bootstrap/_labels-badges.scss
  23. +2 −2 vendor/assets/stylesheets/bootstrap/_media.scss
  24. +8 −2 vendor/assets/stylesheets/bootstrap/_mixins.scss
  25. +3 −3 vendor/assets/stylesheets/bootstrap/_modals.scss
  26. +18 −11 vendor/assets/stylesheets/bootstrap/_navbar.scss
  27. +39 −21 vendor/assets/stylesheets/bootstrap/_navs.scss
  28. +3 −1 vendor/assets/stylesheets/bootstrap/_pager.scss
  29. +3 −1 vendor/assets/stylesheets/bootstrap/_pagination.scss
  30. +5 −1 vendor/assets/stylesheets/bootstrap/_popovers.scss
  31. +6 −2 vendor/assets/stylesheets/bootstrap/_responsive-navbar.scss
  32. +29 −13 vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss
  33. +2 −1  vendor/assets/stylesheets/bootstrap/_scaffolding.scss
  34. +7 −3 vendor/assets/stylesheets/bootstrap/_sprites.scss
  35. +24 −17 vendor/assets/stylesheets/bootstrap/_tables.scss
  36. +3 −2 vendor/assets/stylesheets/bootstrap/_thumbnails.scss
  37. +6 −6 vendor/assets/stylesheets/bootstrap/_tooltip.scss
  38. +20 −8 vendor/assets/stylesheets/bootstrap/_type.scss
  39. +1 −1  vendor/assets/stylesheets/bootstrap/_variables.scss
  40. +1 −1  vendor/assets/stylesheets/bootstrap/bootstrap.scss
  41. +1 −10 vendor/assets/stylesheets/bootstrap/responsive.scss
View
2  bootstrap-sass.gemspec
@@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = "bootstrap-sass"
- s.version = '2.2.2.0'
+ s.version = '2.3.1.0'
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"
View
13 update-bootstrap.sh
@@ -2,8 +2,17 @@
ROOT=`pwd`"/vendor/assets"
TMP='tmp/sass-twitter-bootstrap'
+
+# the normal sass-twitter-bootstrap repo hasn't been updated to 3.2.1 yet
@m5o
m5o added a note

sorry for the delay - now we are ready

jlong/sass-bootstrap-defunct#56

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+# REPO='https://github.com/jlong/sass-twitter-bootstrap.git'
+# BRANCH='master'
+
+# here is a forked repo that has been updated to 3.2.1
+REPO='https://github.com/roverwolf/sass-twitter-bootstrap.git'
+BRANCH='2.3.1-updates'
+
# Pull down sass-twitter-bootstrap sources
-git clone https://github.com/jlong/sass-twitter-bootstrap.git tmp/sass-twitter-bootstrap
+git clone -b $BRANCH $REPO tmp/sass-twitter-bootstrap
# Copy lib/ to stylesheets/
mkdir -p $ROOT/stylesheets/bootstrap
cp -r $TMP/lib/* $ROOT/stylesheets/bootstrap
@@ -19,7 +28,7 @@ rm -r $ROOT/stylesheets/bootstrap/tests
patch -f vendor/assets/stylesheets/bootstrap/_variables.scss < asseturl.patch
# Patch paths in bootstrap.scss and responsive.scss
-sed -i .bak 's_@import \"_@import \"bootstrap/_g' $ROOT/stylesheets/bootstrap/{bootstrap,responsive}.scss
+sed --in-place=.bak 's_@import \"_@import \"bootstrap/_g' $ROOT/stylesheets/bootstrap/{bootstrap,responsive}.scss
rm $ROOT/stylesheets/bootstrap/*.bak
rm -rf $TMP
View
2  vendor/assets/javascripts/bootstrap-affix.js
@@ -1,5 +1,5 @@
/* ==========================================================
- * bootstrap-affix.js v2.2.2
+ * bootstrap-affix.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.
View
2  vendor/assets/javascripts/bootstrap-alert.js
@@ -1,5 +1,5 @@
/* ==========================================================
- * bootstrap-alert.js v2.2.2
+ * bootstrap-alert.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#alerts
* ==========================================================
* Copyright 2012 Twitter, Inc.
View
2  vendor/assets/javascripts/bootstrap-button.js
@@ -1,5 +1,5 @@
/* ============================================================
- * bootstrap-button.js v2.2.2
+ * bootstrap-button.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.
View
42 vendor/assets/javascripts/bootstrap-carousel.js
@@ -1,5 +1,5 @@
/* ==========================================================
- * bootstrap-carousel.js v2.2.2
+ * bootstrap-carousel.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#carousel
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -28,6 +28,7 @@
var Carousel = function (element, options) {
this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this))
@@ -38,19 +39,24 @@
cycle: function (e) {
if (!e) this.paused = false
+ if (this.interval) clearInterval(this.interval);
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
+ , getActiveIndex: function () {
+ this.$active = this.$element.find('.item.active')
+ this.$items = this.$active.parent().children()
+ return this.$items.index(this.$active)
+ }
+
, to: function (pos) {
- var $active = this.$element.find('.item.active')
- , children = $active.parent().children()
- , activePos = children.index($active)
+ var activeIndex = this.getActiveIndex()
, that = this
- if (pos > (children.length - 1) || pos < 0) return
+ if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) {
return this.$element.one('slid', function () {
@@ -58,18 +64,18 @@
})
}
- if (activePos == pos) {
+ if (activeIndex == pos) {
return this.pause().cycle()
}
- return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
}
, pause: function (e) {
if (!e) this.paused = true
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
this.$element.trigger($.support.transition.end)
- this.cycle()
+ this.cycle(true)
}
clearInterval(this.interval)
this.interval = null
@@ -103,10 +109,19 @@
e = $.Event('slide', {
relatedTarget: $next[0]
+ , direction: direction
})
if ($next.hasClass('active')) return
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ this.$element.one('slid', function () {
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+ $nextIndicator && $nextIndicator.addClass('active')
+ })
+ }
+
if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
@@ -151,7 +166,7 @@
if (!data) $this.data('carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
- else if (options.interval) data.cycle()
+ else if (options.interval) data.pause().cycle()
})
}
@@ -174,11 +189,18 @@
/* CAROUSEL DATA-API
* ================= */
- $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
+ $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
var $this = $(this), href
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
, options = $.extend({}, $target.data(), $this.data())
+ , slideIndex
+
$target.carousel(options)
+
+ if (slideIndex = $this.attr('data-slide-to')) {
+ $target.data('carousel').pause().to(slideIndex).cycle()
+ }
+
e.preventDefault()
})
View
8 vendor/assets/javascripts/bootstrap-collapse.js
@@ -1,5 +1,5 @@
/* =============================================================
- * bootstrap-collapse.js v2.2.2
+ * bootstrap-collapse.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -52,7 +52,7 @@
, actives
, hasData
- if (this.transitioning) return
+ if (this.transitioning || this.$element.hasClass('in')) return
dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-'))
@@ -72,7 +72,7 @@
, hide: function () {
var dimension
- if (this.transitioning) return
+ if (this.transitioning || !this.$element.hasClass('in')) return
dimension = this.dimension()
this.reset(this.$element[dimension]())
this.transition('removeClass', $.Event('hide'), 'hidden')
@@ -129,7 +129,7 @@
return this.each(function () {
var $this = $(this)
, data = $this.data('collapse')
- , options = typeof option == 'object' && option
+ , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
View
24 vendor/assets/javascripts/bootstrap-dropdown.js
@@ -1,5 +1,5 @@
/* ============================================================
- * bootstrap-dropdown.js v2.2.2
+ * bootstrap-dropdown.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -81,7 +81,10 @@
isActive = $parent.hasClass('open')
- if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
+ if (!isActive || (isActive && e.keyCode == 27)) {
+ if (e.which == 27) $parent.find(toggle).focus()
+ return $this.click()
+ }
$items = $('[role=menu] li:not(.divider):visible a', $parent)
@@ -115,8 +118,9 @@
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
- $parent = $(selector)
- $parent.length || ($parent = $this.parent())
+ $parent = selector && $(selector)
+
+ if (!$parent || !$parent.length) $parent = $this.parent()
return $parent
}
@@ -152,10 +156,10 @@
* =================================== */
$(document)
- .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
- .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
- .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })
- .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
- .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+ .on('click.dropdown.data-api', clearMenus)
+ .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown-menu', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-}(window.jQuery);
+}(window.jQuery);
View
26 vendor/assets/javascripts/bootstrap-modal.js
@@ -1,5 +1,5 @@
/* =========================================================
- * bootstrap-modal.js v2.2.2
+ * bootstrap-modal.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#modals
* =========================================================
* Copyright 2012 Twitter, Inc.
@@ -60,8 +60,7 @@
that.$element.appendTo(document.body) //don't move modals dom position
}
- that.$element
- .show()
+ that.$element.show()
if (transition) {
that.$element[0].offsetWidth // force reflow
@@ -139,16 +138,17 @@
})
}
- , hideModal: function (that) {
- this.$element
- .hide()
- .trigger('hidden')
-
- this.backdrop()
+ , hideModal: function () {
+ var that = this
+ this.$element.hide()
+ this.backdrop(function () {
+ that.removeBackdrop()
+ that.$element.trigger('hidden')
+ })
}
, removeBackdrop: function () {
- this.$backdrop.remove()
+ this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}
@@ -172,6 +172,8 @@
this.$backdrop.addClass('in')
+ if (!callback) return
+
doAnimate ?
this.$backdrop.one($.support.transition.end, callback) :
callback()
@@ -180,8 +182,8 @@
this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')?
- this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
- this.removeBackdrop()
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
} else if (callback) {
callback()
View
10 vendor/assets/javascripts/bootstrap-popover.js
@@ -1,5 +1,5 @@
/* ===========================================================
- * bootstrap-popover.js v2.2.2
+ * bootstrap-popover.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#popovers
* ===========================================================
* Copyright 2012 Twitter, Inc.
@@ -58,8 +58,8 @@
, $e = this.$element
, o = this.options
- content = $e.attr('data-content')
- || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+ content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+ || $e.attr('data-content')
return content
}
@@ -99,7 +99,7 @@
placement: 'right'
, trigger: 'click'
, content: ''
- , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'
+ , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
@@ -111,4 +111,4 @@
return this
}
-}(window.jQuery);
+}(window.jQuery);
View
4 vendor/assets/javascripts/bootstrap-scrollspy.js
@@ -1,5 +1,5 @@
/* =============================================================
- * bootstrap-scrollspy.js v2.2.2
+ * bootstrap-scrollspy.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -59,7 +59,7 @@
, $href = /^#\w/.test(href) && $(href)
return ( $href
&& $href.length
- && [[ $href.position().top + self.$scrollElement.scrollTop(), href ]] ) || null
+ && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
View
2  vendor/assets/javascripts/bootstrap-tab.js
@@ -1,5 +1,5 @@
/* ========================================================
- * bootstrap-tab.js v2.2.2
+ * bootstrap-tab.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.
View
134 vendor/assets/javascripts/bootstrap-tooltip.js
@@ -1,5 +1,5 @@
/* ===========================================================
- * bootstrap-tooltip.js v2.2.2
+ * bootstrap-tooltip.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame
* ===========================================================
@@ -38,19 +38,27 @@
, init: function (type, element, options) {
var eventIn
, eventOut
+ , triggers
+ , trigger
+ , i
this.type = type
this.$element = $(element)
this.options = this.getOptions(options)
this.enabled = true
- if (this.options.trigger == 'click') {
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
- } else if (this.options.trigger != 'manual') {
- eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
- eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ triggers = this.options.trigger.split(' ')
+
+ for (i = triggers.length; i--;) {
+ trigger = triggers[i]
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
}
this.options.selector ?
@@ -59,7 +67,7 @@
}
, getOptions: function (options) {
- options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+ options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
if (options.delay && typeof options.delay == 'number') {
options.delay = {
@@ -72,7 +80,15 @@
}
, enter: function (e) {
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+ var defaults = $.fn[this.type].defaults
+ , options = {}
+ , self
+
+ this._options && $.each(this._options, function (key, value) {
+ if (defaults[key] != value) options[key] = value
+ }, this)
+
+ self = $(e.currentTarget)[this.type](options).data(this.type)
if (!self.options.delay || !self.options.delay.show) return self.show()
@@ -97,14 +113,16 @@
, show: function () {
var $tip
- , inside
, pos
, actualWidth
, actualHeight
, placement
, tp
+ , e = $.Event('show')
if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
$tip = this.tip()
this.setContent()
@@ -116,19 +134,18 @@
this.options.placement.call(this, $tip[0], this.$element[0]) :
this.options.placement
- inside = /in/.test(placement)
-
$tip
.detach()
.css({ top: 0, left: 0, display: 'block' })
- .insertAfter(this.$element)
- pos = this.getPosition(inside)
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+ pos = this.getPosition()
actualWidth = $tip[0].offsetWidth
actualHeight = $tip[0].offsetHeight
- switch (inside ? placement.split(' ')[1] : placement) {
+ switch (placement) {
case 'bottom':
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
break
@@ -143,13 +160,58 @@
break
}
- $tip
- .offset(tp)
- .addClass(placement)
- .addClass('in')
+ this.applyPlacement(tp, placement)
+ this.$element.trigger('shown')
}
}
+ , applyPlacement: function(offset, placement){
+ var $tip = this.tip()
+ , width = $tip[0].offsetWidth
+ , height = $tip[0].offsetHeight
+ , actualWidth
+ , actualHeight
+ , delta
+ , replace
+
+ $tip
+ .offset(offset)
+ .addClass(placement)
+ .addClass('in')
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ if (placement == 'top' && actualHeight != height) {
+ offset.top = offset.top + height - actualHeight
+ replace = true
+ }
+
+ if (placement == 'bottom' || placement == 'top') {
+ delta = 0
+
+ if (offset.left < 0){
+ delta = offset.left * -2
+ offset.left = 0
+ $tip.offset(offset)
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+ }
+
+ this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+ } else {
+ this.replaceArrow(actualHeight - height, actualHeight, 'top')
+ }
+
+ if (replace) $tip.offset(offset)
+ }
+
+ , replaceArrow: function(delta, dimension, position){
+ this
+ .arrow()
+ .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
+ }
+
, setContent: function () {
var $tip = this.tip()
, title = this.getTitle()
@@ -161,6 +223,10 @@
, hide: function () {
var that = this
, $tip = this.tip()
+ , e = $.Event('hide')
+
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
$tip.removeClass('in')
@@ -179,13 +245,15 @@
removeWithAnimation() :
$tip.detach()
+ this.$element.trigger('hidden')
+
return this
}
, fixTitle: function () {
var $e = this.$element
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
- $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
}
}
@@ -193,11 +261,12 @@
return this.getTitle()
}
- , getPosition: function (inside) {
- return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
- width: this.$element[0].offsetWidth
- , height: this.$element[0].offsetHeight
- })
+ , getPosition: function () {
+ var el = this.$element[0]
+ return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+ width: el.offsetWidth
+ , height: el.offsetHeight
+ }, this.$element.offset())
}
, getTitle: function () {
@@ -215,6 +284,10 @@
return this.$tip = this.$tip || $(this.options.template)
}
+ , arrow: function(){
+ return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
+ }
+
, validate: function () {
if (!this.$element[0].parentNode) {
this.hide()
@@ -236,8 +309,8 @@
}
, toggle: function (e) {
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
- self[self.tip().hasClass('in') ? 'hide' : 'show']()
+ var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
+ self.tip().hasClass('in') ? self.hide() : self.show()
}
, destroy: function () {
@@ -269,10 +342,11 @@
, placement: 'top'
, selector: false
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
- , trigger: 'hover'
+ , trigger: 'hover focus'
, title: ''
, delay: 0
, html: false
+ , container: false
}
@@ -284,4 +358,4 @@
return this
}
-}(window.jQuery);
+}(window.jQuery);
View
2  vendor/assets/javascripts/bootstrap-transition.js
@@ -1,5 +1,5 @@
/* ===================================================
- * bootstrap-transition.js v2.2.2
+ * bootstrap-transition.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* Copyright 2012 Twitter, Inc.
View
20 vendor/assets/javascripts/bootstrap-typeahead.js
@@ -1,5 +1,5 @@
/* =============================================================
- * bootstrap-typeahead.js v2.2.2
+ * bootstrap-typeahead.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#typeahead
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -172,6 +172,7 @@
, listen: function () {
this.$element
+ .on('focus', $.proxy(this.focus, this))
.on('blur', $.proxy(this.blur, this))
.on('keypress', $.proxy(this.keypress, this))
.on('keyup', $.proxy(this.keyup, this))
@@ -183,6 +184,7 @@
this.$menu
.on('click', $.proxy(this.click, this))
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
}
, eventSupported: function(eventName) {
@@ -256,22 +258,33 @@
e.preventDefault()
}
+ , focus: function (e) {
+ this.focused = true
+ }
+
, blur: function (e) {
- var that = this
- setTimeout(function () { that.hide() }, 150)
+ this.focused = false
+ if (!this.mousedover && this.shown) this.hide()
}
, click: function (e) {
e.stopPropagation()
e.preventDefault()
this.select()
+ this.$element.focus()
}
, mouseenter: function (e) {
+ this.mousedover = true
this.$menu.find('.active').removeClass('active')
$(e.currentTarget).addClass('active')
}
+ , mouseleave: function (e) {
+ this.mousedover = false
+ if (!this.focused && this.shown) this.hide()
+ }
+
}
@@ -316,7 +329,6 @@
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
var $this = $(this)
if ($this.data('typeahead')) return
- e.preventDefault()
$this.typeahead($this.data())
})
View
6 vendor/assets/stylesheets/bootstrap/_button-groups.scss
@@ -164,8 +164,6 @@
margin-left: 0;
}
// Carets in other button sizes
-.btn-mini .caret,
-.btn-small .caret,
.btn-large .caret {
margin-top: 6px;
}
@@ -174,6 +172,10 @@
border-right-width: 5px;
border-top-width: 5px;
}
+.btn-mini .caret,
+.btn-small .caret {
+ margin-top: 8px;
+}
// Upside down carets for .dropup
.dropup .btn-large .caret {
border-bottom-width: 5px;
View
18 vendor/assets/stylesheets/bootstrap/_buttons.scss
@@ -25,13 +25,14 @@
@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
- &:hover {
+ // Hover/focus state
+ &:hover,
+ &:focus {
color: $grayDark;
text-decoration: none;
background-position: 0 -15px;
- // transition is only when going to hover, otherwise the background
+ // transition is only when going to hover/focus, otherwise the background
// behind the gradient (there for IE<=9 fallback) gets mismatched
@include transition(background-position .1s linear);
}
@@ -141,11 +142,6 @@ input[type="button"] {
// Set the backgrounds
// -------------------------
-.btn {
- // reset here as of 2.0.3 due to Recess property order
- border-color: #c5c5c5;
- border-color: rgba(0,0,0,.15) rgba(0,0,0,.15) rgba(0,0,0,.25);
-}
.btn-primary {
@include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight);
}
@@ -219,12 +215,14 @@ input[type="submit"].btn {
color: $linkColor;
@include border-radius(0);
}
-.btn-link:hover {
+.btn-link:hover,
+.btn-link:focus {
color: $linkColorHover;
text-decoration: underline;
background-color: transparent;
}
-.btn-link[disabled]:hover {
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
color: $grayDark;
text-decoration: none;
}
View
39 vendor/assets/stylesheets/bootstrap/_carousel.scss
@@ -21,12 +21,13 @@
display: none;
position: relative;
@include transition(.6s ease-in-out left);
- }
// Account for jankitude on images
- > .item > img {
- display: block;
- line-height: 1;
+ > img,
+ > a > img {
+ display: block;
+ line-height: 1;
+ }
}
> .active,
@@ -97,14 +98,40 @@
right: 15px;
}
- // Hover state
- &:hover {
+ // Hover/focus state
+ &:hover,
+ &:focus {
color: $white;
text-decoration: none;
@include opacity(90);
}
}
+// Carousel indicator pips
+// -----------------------------
+.carousel-indicators {
+ position: absolute;
+ top: 15px;
+ right: 15px;
+ z-index: 5;
+ margin: 0;
+ list-style: none;
+
+ li {
+ display: block;
+ float: left;
+ width: 10px;
+ height: 10px;
+ margin-left: 5px;
+ text-indent: -999px;
+ background-color: #ccc;
+ background-color: rgba(255,255,255,.25);
+ border-radius: 5px;
+ }
+ .active {
+ background-color: #fff;
+ }
+}
// Caption for text below images
// -----------------------------
View
3  vendor/assets/stylesheets/bootstrap/_close.scss
@@ -11,7 +11,8 @@
color: $black;
text-shadow: 0 1px 0 rgba(255,255,255,1);
@include opacity(20);
- &:hover {
+ &:hover,
+ &:focus {
color: $black;
text-decoration: none;
cursor: pointer;
View
28 vendor/assets/stylesheets/bootstrap/_dropdowns.scss
@@ -72,7 +72,7 @@
}
// Links within the dropdown menu
- li > a {
+ > li > a {
display: block;
padding: 3px 20px;
clear: both;
@@ -83,11 +83,12 @@
}
}
-// Hover state
+// Hover/Focus state
// -----------
-.dropdown-menu li > a:hover,
-.dropdown-menu li > a:focus,
-.dropdown-submenu:hover > a {
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
text-decoration: none;
color: $dropdownLinkColorHover;
@include gradient-vertical($dropdownLinkBackgroundHover, darken($dropdownLinkBackgroundHover, 5%));
@@ -95,8 +96,9 @@
// Active state
// ------------
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
color: $dropdownLinkColorActive;
text-decoration: none;
outline: 0;
@@ -105,13 +107,15 @@
// Disabled state
// --------------
-// Gray out text and ensure the hover state remains gray
-.dropdown-menu .disabled > a,
-.dropdown-menu .disabled > a:hover {
+// Gray out text and ensure the hover/focus state remains gray
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
color: $grayLight;
}
-// Nuke hover effects
-.dropdown-menu .disabled > a:hover {
+// Nuke hover/focus effects
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
text-decoration: none;
background-color: transparent;
background-image: none; // Remove CSS gradient
View
7 vendor/assets/stylesheets/bootstrap/_forms.scss
@@ -421,7 +421,9 @@ select:focus:invalid {
// Allow us to put symbols and text within the input field for a cleaner look
.input-append,
.input-prepend {
- margin-bottom: 5px;
+ display: inline-block;
+ margin-bottom: $baseLineHeight / 2;
+ vertical-align: middle;
font-size: 0; // white space collapse hack
white-space: nowrap; // Prevent span and input from separating
@@ -429,7 +431,8 @@ select:focus:invalid {
input,
select,
.uneditable-input,
- .dropdown-menu {
+ .dropdown-menu,
+ .popover {
font-size: $baseFontSize;
}
View
6 vendor/assets/stylesheets/bootstrap/_labels-badges.scss
@@ -35,10 +35,12 @@
}
}
-// Hover state, but only for links
+// Hover/focus state, but only for links
a {
&.label:hover,
- &.badge:hover {
+ &.label:focus,
+ &.badge:hover,
+ &.badge:focus {
color: $white;
text-decoration: none;
cursor: pointer;
View
4 vendor/assets/stylesheets/bootstrap/_media.scss
@@ -37,10 +37,10 @@
// Media image alignment
// -------------------------
-.media .pull-left {
+.media > .pull-left {
margin-right: 10px;
}
-.media .pull-right {
+.media > .pull-right {
margin-left: 10px;
}
View
10 vendor/assets/stylesheets/bootstrap/_mixins.scss
@@ -244,7 +244,7 @@
}
// Drop shadows
-@mixin box-shadow($shadow...) {
+@mixin box-shadow($shadow...) {
-webkit-box-shadow: $shadow;
-moz-box-shadow: $shadow;
box-shadow: $shadow;
@@ -263,6 +263,12 @@
-o-transition-delay: $transition-delay;
transition-delay: $transition-delay;
}
+@mixin transition-duration($transition-duration) {
+ -webkit-transition-duration: $transition-duration;
+ -moz-transition-duration: $transition-duration;
+ -o-transition-duration: $transition-duration;
+ transition-duration: $transition-duration;
+}
// Transformations
@mixin rotate($degrees) {
@@ -493,7 +499,7 @@
@include reset-filter();
// in these cases the gradient won't cover the background, so we override
- &:hover, &:active, &.active, &.disabled, &[disabled] {
+ &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
color: $textColor;
background-color: $endColor;
*background-color: darken($endColor, 5%);
View
6 vendor/assets/stylesheets/bootstrap/_modals.scss
@@ -23,11 +23,11 @@
// Base modal
.modal {
position: fixed;
- top: 50%;
+ top: 10%;
left: 50%;
z-index: $zindexModal;
width: 560px;
- margin: -250px 0 0 -280px;
+ margin-left: -280px;
background-color: $white;
border: 1px solid #999;
border: 1px solid rgba(0,0,0,.3);
@@ -42,7 +42,7 @@
@include transition(opacity .3s linear, top .3s ease-out);
top: -25%;
}
- &.fade.in { top: 50%; }
+ &.fade.in { top: 10%; }
}
.modal-header {
padding: 9px 15px;
View
29 vendor/assets/stylesheets/bootstrap/_navbar.scss
@@ -56,7 +56,8 @@
font-weight: 200;
color: $navbarBrandColor;
text-shadow: 0 1px 0 $navbarBackgroundHighlight;
- &:hover {
+ &:hover,
+ &:focus {
text-decoration: none;
}
}
@@ -73,7 +74,8 @@
// -------------------------
.navbar-link {
color: $navbarLinkColor;
- &:hover {
+ &:hover,
+ &:focus {
color: $navbarLinkColorHover;
}
}
@@ -95,7 +97,9 @@
}
.navbar .btn-group .btn,
.navbar .input-prepend .btn,
-.navbar .input-append .btn {
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
margin-top: 0; // then undo the margin here so we don't accidentally double it
}
@@ -245,13 +249,12 @@
}
.navbar .nav .dropdown-toggle .caret {
margin-top: 8px;
-
}
-// Hover
+// Hover/focus
.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
- background-color: $navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active
+ background-color: $navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
color: $navbarLinkColorHover;
text-decoration: none;
}
@@ -335,8 +338,9 @@
}
}
-// Caret should match text color on hover
-.navbar .nav li.dropdown > a:hover .caret {
+// Caret should match text color on hover/focus
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
border-top-color: $navbarLinkColorActive;
border-bottom-color: $navbarLinkColorActive;
}
@@ -396,7 +400,8 @@
.nav > li > a {
color: $navbarInverseLinkColor;
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- &:hover {
+ &:hover,
+ &:focus {
color: $navbarInverseLinkColorHover;
}
}
@@ -425,7 +430,8 @@
// Inline text links
.navbar-link {
color: $navbarInverseLinkColor;
- &:hover {
+ &:hover,
+ &:focus {
color: $navbarInverseLinkColorHover;
}
}
@@ -443,7 +449,8 @@
background-color: $navbarInverseLinkBackgroundActive;
color: $navbarInverseLinkColorActive;
}
- .nav li.dropdown > a:hover .caret {
+ .nav li.dropdown > a:hover .caret,
+ .nav li.dropdown > a:focus .caret {
border-top-color: $navbarInverseLinkColorActive;
color: $navbarInverseLinkColorActive;
}
View
60 vendor/assets/stylesheets/bootstrap/_navs.scss
@@ -16,7 +16,8 @@
.nav > li > a {
display: block;
}
-.nav > li > a:hover {
+.nav > li > a:hover,
+.nav > li > a:focus {
text-decoration: none;
background-color: $grayLighter;
}
@@ -68,7 +69,8 @@
padding: 3px 15px;
}
.nav-list > .active > a,
-.nav-list > .active > a:hover {
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
color: $white;
text-shadow: 0 -1px 0 rgba(0,0,0,.2);
background-color: $linkColor;
@@ -122,13 +124,15 @@
line-height: $baseLineHeight;
border: 1px solid transparent;
@include border-radius(4px 4px 0 0);
- &:hover {
+ &:hover,
+ &:focus {
border-color: $grayLighter $grayLighter #ddd;
}
}
-// Active state, and it's :hover to override normal :hover
+// Active state, and it's :hover/:focus to override normal :hover/:focus
.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
color: $gray;
background-color: $bodyBackground;
border: 1px solid #ddd;
@@ -151,7 +155,8 @@
// Active state
.nav-pills > .active > a,
-.nav-pills > .active > a:hover {
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
color: $white;
background-color: $linkColor;
}
@@ -183,7 +188,8 @@
.nav-tabs.nav-stacked > li:last-child > a {
@include border-bottom-radius(4px);
}
-.nav-tabs.nav-stacked > li > a:hover {
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
border-color: #ddd;
z-index: 2;
}
@@ -216,7 +222,8 @@
border-bottom-color: $linkColor;
margin-top: 6px;
}
-.nav .dropdown-toggle:hover .caret {
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
border-top-color: $linkColorHover;
border-bottom-color: $linkColorHover;
}
@@ -236,9 +243,10 @@
border-bottom-color: $gray;
}
-// Active:hover dropdown links
+// Active:hover/:focus dropdown links
// -------------------------
-.nav > .dropdown.active > a:hover {
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
cursor: pointer;
}
@@ -246,21 +254,24 @@
// -------------------------
.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover {
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
color: $white;
background-color: $grayLight;
border-color: $grayLight;
}
.nav li.dropdown.open .caret,
.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret {
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
border-top-color: $white;
border-bottom-color: $white;
@include opacity(100);
}
// Dropdowns in stacked tabs
-.tabs-stacked .open > a:hover {
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
border-color: $grayLight;
}
@@ -311,13 +322,15 @@
}
.tabs-below > .nav-tabs > li > a {
@include border-radius(0 0 4px 4px);
- &:hover {
+ &:hover,
+ &:focus {
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:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
border-color: transparent #ddd #ddd #ddd;
}
@@ -346,11 +359,13 @@
margin-right: -1px;
@include border-radius(4px 0 0 4px);
}
-.tabs-left > .nav-tabs > li > a:hover {
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
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:hover,
+.tabs-left > .nav-tabs .active > a:focus {
border-color: #ddd transparent #ddd #ddd;
*border-right-color: $white;
}
@@ -365,11 +380,13 @@
margin-left: -1px;
@include border-radius(0 4px 4px 0);
}
-.tabs-right > .nav-tabs > li > a:hover {
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
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:hover,
+.tabs-right > .nav-tabs .active > a:focus {
border-color: #ddd #ddd #ddd transparent;
*border-left-color: $white;
}
@@ -383,8 +400,9 @@
.nav > .disabled > a {
color: $grayLight;
}
-// Nuke hover effects
-.nav > .disabled > a:hover {
+// Nuke hover/focus effects
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
text-decoration: none;
background-color: transparent;
cursor: default;
View
4 vendor/assets/stylesheets/bootstrap/_pager.scss
@@ -20,7 +20,8 @@
border: 1px solid #ddd;
@include border-radius(15px);
}
-.pager li > a:hover {
+.pager li > a:hover,
+.pager li > a:focus {
text-decoration: none;
background-color: #f5f5f5;
}
@@ -34,6 +35,7 @@
}
.pager .disabled > a,
.pager .disabled > a:hover,
+.pager .disabled > a:focus,
.pager .disabled > span {
color: $grayLight;
background-color: #fff;
View
4 vendor/assets/stylesheets/bootstrap/_pagination.scss
@@ -32,6 +32,7 @@
border-left-width: 0;
}
.pagination ul > li > a:hover,
+.pagination ul > li > a:focus,
.pagination ul > .active > a,
.pagination ul > .active > span {
background-color: $paginationActiveBackground;
@@ -43,7 +44,8 @@
}
.pagination ul > .disabled > span,
.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover {
+.pagination ul > .disabled > a:hover,
+.pagination ul > .disabled > a:focus {
color: $grayLight;
background-color: transparent;
cursor: default;
View
6 vendor/assets/stylesheets/bootstrap/_popovers.scss
@@ -9,7 +9,7 @@
left: 0;
z-index: $zindexPopover;
display: none;
- width: 236px;
+ max-width: 276px;
padding: 1px;
text-align: left; // Reset given new insertion method
background-color: $popoverBackground;
@@ -40,6 +40,10 @@
background-color: $popoverTitleBackground;
border-bottom: 1px solid darken($popoverTitleBackground, 5%);
@include border-radius(5px 5px 0 0);
+
+ &:empty {
+ display: none;
+ }
}
.popover-content {
View
8 vendor/assets/stylesheets/bootstrap/_responsive-navbar.scss
@@ -81,7 +81,9 @@
margin-bottom: 2px;
}
.nav-collapse .nav > li > a:hover,
- .nav-collapse .dropdown-menu a:hover {
+ .nav-collapse .nav > li > a:focus,
+ .nav-collapse .dropdown-menu a:hover,
+ .nav-collapse .dropdown-menu a:focus {
background-color: $navbarBackground;
}
.navbar-inverse .nav-collapse .nav > li > a,
@@ -89,7 +91,9 @@
color: $navbarInverseLinkColor;
}
.navbar-inverse .nav-collapse .nav > li > a:hover,
- .navbar-inverse .nav-collapse .dropdown-menu a:hover {
+ .navbar-inverse .nav-collapse .nav > li > a:focus,
+ .navbar-inverse .nav-collapse .dropdown-menu a:hover,
+ .navbar-inverse .nav-collapse .dropdown-menu a:focus {
background-color: $navbarInverseBackground;
}
// Buttons in the navbar
View
42 vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss
@@ -3,19 +3,11 @@
// --------------------------------------------------
-// Clearing floats
-.clearfix {
- @include clearfix();
-}
-
-// Accessible yet invisible text
-.hide-text {
- @include hide-text();
-}
-
-// Uses box-sizing mixin, so must be defined here
-.input-block-level {
- @include input-block-level();
+// IE10 Metro responsive
+// Required for Windows 8 Metro split-screen snapping with IE10
+// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
+@-ms-viewport{
+ width: device-width;
}
// Hide from screenreaders and browsers
@@ -56,3 +48,27 @@
// Hide
.hidden-phone { display: none !important; }
}
+
+// Print utilities
+.visible-print { display: none !important; }
+.hidden-print { }
+
+@media print {
+ .visible-print { display: inherit !important; }
+ .hidden-print { display: none !important; }
+}
+
+// Clearing floats
+.clearfix {
+ @include clearfix();
+}
+
+// Accessible yet invisible text
+.hide-text {
+ @include hide-text();
+}
+
+// Uses box-sizing mixin, so must be defined here
+.input-block-level {
+ @include input-block-level();
+}
View
3  vendor/assets/stylesheets/bootstrap/_scaffolding.scss
@@ -23,7 +23,8 @@ a {
color: $linkColor;
text-decoration: none;
}
-a:hover {
+a:hover,
+a:focus {
color: $linkColorHover;
text-decoration: underline;
}
View
10 vendor/assets/stylesheets/bootstrap/_sprites.scss
@@ -28,7 +28,7 @@
margin-top: 1px;
}
-/* White icons with optional class, or on hover/active states of certain elements */
+/* White icons with optional class, or on hover/focus/active states of certain elements */
.icon-white,
.nav-pills > .active > a > [class^="icon-"],
.nav-pills > .active > a > [class*=" icon-"],
@@ -37,11 +37,15 @@
.navbar-inverse .nav > .active > a > [class^="icon-"],
.navbar-inverse .nav > .active > a > [class*=" icon-"],
.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:focus > [class^="icon-"],
.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > li > a:focus > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"],
.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
+.dropdown-submenu:focus > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"],
+.dropdown-submenu:focus > a > [class*=" icon-"] {
background-image: url($iconWhiteSpritePath);
}
@@ -166,7 +170,7 @@
.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-close { background-position: -384px -120px; width: 16px; }
.icon-folder-open { background-position: -408px -120px; width: 16px; }
.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
View
41 vendor/assets/stylesheets/bootstrap/_tables.scss
@@ -93,24 +93,32 @@ table {
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
+ // For first th/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 {
+ tbody:first-child tr:first-child > td:first-child,
+ tbody:first-child tr:first-child > th:first-child {
@include border-top-left-radius($baseBorderRadius);
}
+ // For last th/td in the first row in the first thead or tbody
thead:first-child tr:first-child > th:last-child,
- tbody:first-child tr:first-child > td:last-child {
+ tbody:first-child tr:first-child > td:last-child,
+ tbody:first-child tr:first-child > th:last-child {
@include border-top-right-radius($baseBorderRadius);
}
- // For first th or td in the last row in the last thead or tbody
+ // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
thead:last-child tr:last-child > th:first-child,
tbody:last-child tr:last-child > td:first-child,
- tfoot:last-child tr:last-child > td:first-child {
+ tbody:last-child tr:last-child > th:first-child,
+ tfoot:last-child tr:last-child > td:first-child,
+ tfoot:last-child tr:last-child > th:first-child {
@include border-bottom-left-radius($baseBorderRadius);
}
+ // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
thead:last-child tr:last-child > th:last-child,
tbody:last-child tr:last-child > td:last-child,
- tfoot:last-child tr:last-child > td:last-child {
+ tbody:last-child tr:last-child > th:last-child,
+ tfoot:last-child tr:last-child > td:last-child,
+ tfoot:last-child tr:last-child > th:last-child {
@include border-bottom-right-radius($baseBorderRadius);
}
@@ -122,7 +130,6 @@ table {
@include border-bottom-right-radius(0);
}
-
// Special fixes to round the left border on the first td/th
caption + thead tr:first-child th:first-child,
caption + tbody tr:first-child td:first-child,
@@ -161,8 +168,8 @@ table {
// Placed here since it has to come after the potential zebra striping
.table-hover {
tbody {
- tr:hover td,
- tr:hover th {
+ tr:hover > td,
+ tr:hover > th {
background-color: $tableBackgroundHover;
}
}
@@ -197,32 +204,32 @@ table th[class*="span"],
// Exact selectors below required to override .table-striped
.table tbody tr {
- &.success td {
+ &.success > td {
background-color: $successBackground;
}
- &.error td {
+ &.error > td {
background-color: $errorBackground;
}
- &.warning td {
+ &.warning > td {
background-color: $warningBackground;
}
- &.info td {
+ &.info > td {
background-color: $infoBackground;
}
}
// Hover states for .table-hover
.table-hover tbody tr {
- &.success:hover td {
+ &.success:hover > td {
background-color: darken($successBackground, 5%);
}
- &.error:hover td {
+ &.error:hover > td {
background-color: darken($errorBackground, 5%);
}
- &.warning:hover td {
+ &.warning:hover > td {
background-color: darken($warningBackground, 5%);
}
- &.info:hover td {
+ &.info:hover > td {
background-color: darken($infoBackground, 5%);
}
}
View
5 vendor/assets/stylesheets/bootstrap/_thumbnails.scss
@@ -33,8 +33,9 @@
@include box-shadow(0 1px 3px rgba(0,0,0,.055));
@include transition(all .2s ease-in-out);
}
-// Add a hover state for linked versions only
-a.thumbnail:hover {
+// Add a hover/focus state for linked versions only
+a.thumbnail:hover,
+a.thumbnail:focus {
border-color: $linkColor;
@include box-shadow(0 1px 4px rgba(0,105,214,.25));
}
View
12 vendor/assets/stylesheets/bootstrap/_tooltip.scss
@@ -9,20 +9,20 @@
z-index: $zindexTooltip;
display: block;
visibility: visible;
- padding: 5px;
font-size: 11px;
+ line-height: 1.4;
@include opacity(0);
&.in { @include opacity(80); }
- &.top { margin-top: -3px; }
- &.right { margin-left: 3px; }
- &.bottom { margin-top: 3px; }
- &.left { margin-left: -3px; }
+ &.top { margin-top: -3px; padding: 5px 0; }
+ &.right { margin-left: 3px; padding: 0 5px; }
+ &.bottom { margin-top: 3px; padding: 5px 0; }
+ &.left { margin-left: -3px; padding: 0 5px; }
}
// Wrapper for the tooltip content
.tooltip-inner {
max-width: 200px;
- padding: 3px 8px;
+ padding: 8px;
color: $tooltipColor;
text-align: center;
text-decoration: none;
View
28 vendor/assets/stylesheets/bootstrap/_type.scss
@@ -11,7 +11,7 @@ p {
}
.lead {
margin-bottom: $baseLineHeight;
- font-size: $baseFontSize * 1.5;;
+ font-size: $baseFontSize * 1.5;
font-weight: 200;
line-height: $baseLineHeight * 1.5;
}
@@ -29,19 +29,28 @@ cite { font-style: normal; }
// Utility classes
.muted { color: $grayLight; }
-a.muted:hover { color: darken($grayLight, 10%); }
+a.muted:hover,
+a.muted:focus { color: darken($grayLight, 10%); }
.text-warning { color: $warningText; }
-a.text-warning:hover { color: darken($warningText, 10%); }
+a.text-warning:hover,
+a.text-warning:focus { color: darken($warningText, 10%); }
.text-error { color: $errorText; }
-a.text-error:hover { color: darken($errorText, 10%); }
+a.text-error:hover,
+a.text-error:focus { color: darken($errorText, 10%); }
.text-info { color: $infoText; }
-a.text-info:hover { color: darken($infoText, 10%); }
+a.text-info:hover,
+a.text-info:focus { color: darken($infoText, 10%); }
.text-success { color: $successText; }
-a.text-success:hover { color: darken($successText, 10%); }
+a.text-success:hover,
+a.text-success:focus { color: darken($successText, 10%); }
+
+.text-left { text-align: left; }
+.text-right { text-align: right; }
+.text-center { text-align: center; }
// Headings
@@ -119,8 +128,9 @@ ul.inline,
ol.inline {
margin-left: 0;
list-style: none;
- & > li {
+ > li {
display: inline-block;
+ @include ie7-inline-block();
padding-left: 5px;
padding-right: 5px;
}
@@ -185,7 +195,9 @@ blockquote {
border-left: 5px solid $grayLighter;
p {
margin-bottom: 0;
- @include font-shorthand(16px,300,$baseLineHeight * 1.25);
+ font-size: $baseFontSize * 1.25;
+ font-weight: 300;
+ line-height: 1.25;
}
small {
display: block;
View
2  vendor/assets/stylesheets/bootstrap/_variables.scss
@@ -86,7 +86,7 @@ $tableBorder: #ddd !default; // table and cell border
// -------------------------
$btnBackground: $white !default;
$btnBackgroundHighlight: darken($white, 10%) !default;
-$btnBorder: #bbb !default;
+$btnBorder: #ccc !default;
$btnPrimaryBackground: $linkColor !default;
$btnPrimaryBackgroundHighlight: adjust-hue($btnPrimaryBackground, 20%) !default;
View
2  vendor/assets/stylesheets/bootstrap/bootstrap.scss
@@ -1,5 +1,5 @@
/*!
- * Bootstrap v2.2.2
+ * Bootstrap v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
View
11 vendor/assets/stylesheets/bootstrap/responsive.scss
@@ -1,5 +1,5 @@
/*!
- * Bootstrap Responsive v2.2.2
+ * Bootstrap Responsive v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
@@ -14,15 +14,6 @@
// -------------------------------------------------------------
-// IE10 Metro responsive
-// Required for Windows 8 Metro split-screen snapping with IE10
-// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
-
-@-ms-viewport{
- width: device-width;
-}
-
-
// REPEAT VARIABLES & MIXINS
// -------------------------
// Required since we compile the responsive stuff separately
Something went wrong with that request. Please try again.