Commit e659dc7e authored by Jacob Thornton's avatar Jacob Thornton

Merge branch '2.0.3-wip'

Conflicts:
	Makefile
	docs/assets/js/bootstrap.js
	docs/assets/js/bootstrap.min.js
parents 6506ede6 839ef3a0
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
*.rej *.rej
*.swo *.swo
*.swp *.swp
*.zip
*.vi *.vi
*~ *~
*.sass-cache *.sass-cache
...@@ -32,3 +33,4 @@ nbproject ...@@ -32,3 +33,4 @@ nbproject
.svn .svn
.CVS .CVS
.idea .idea
node_modules
language: node_js
node_js:
- 0.6
\ No newline at end of file
...@@ -2,29 +2,57 @@ BOOTSTRAP = ./docs/assets/css/bootstrap.css ...@@ -2,29 +2,57 @@ BOOTSTRAP = ./docs/assets/css/bootstrap.css
BOOTSTRAP_LESS = ./less/bootstrap.less BOOTSTRAP_LESS = ./less/bootstrap.less
BOOTSTRAP_RESPONSIVE = ./docs/assets/css/bootstrap-responsive.css BOOTSTRAP_RESPONSIVE = ./docs/assets/css/bootstrap-responsive.css
BOOTSTRAP_RESPONSIVE_LESS = ./less/responsive.less BOOTSTRAP_RESPONSIVE_LESS = ./less/responsive.less
LESS_COMPRESSOR ?= `which lessc` DATE=$(shell date +%I:%M%p)
WATCHR ?= `which watchr` CHECK=\033[32m✔\033[39m
HR=\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
# #
# BUILD DOCS # BUILD DOCS
# #
docs: bootstrap build:
rm docs/assets/bootstrap.zip @echo "\n${HR}"
zip -r docs/assets/bootstrap.zip bootstrap @echo "Building Bootstrap..."
cp bootstrap/js/bootstrap.js docs/assets/js/bootstrap.js @echo "${HR}\n"
cp bootstrap/js/bootstrap.min.js docs/assets/js/bootstrap.min.js @jshint js/*.js --config js/.jshintrc
rm -r bootstrap @jshint js/tests/unit/*.js --config js/.jshintrc
lessc ${BOOTSTRAP_LESS} > ${BOOTSTRAP} @echo "Running JSHint on javascript... ${CHECK} Done"
lessc ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE} @recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
node docs/build @recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
cp img/* docs/assets/img/ @echo "Compiling LESS with Recess... ${CHECK} Done"
cp js/*.js docs/assets/js/ @node docs/build
cp js/tests/vendor/jquery.js docs/assets/js/ @cp img/* docs/assets/img/
@cp js/*.js docs/assets/js/
@cp js/tests/vendor/jquery.js docs/assets/js/
@echo "Compiling documentation... ${CHECK} Done"
@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > docs/assets/js/bootstrap.js
@uglifyjs -nc docs/assets/js/bootstrap.js > docs/assets/js/bootstrap.min.tmp.js
@echo "/**\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
@echo "Compiling and minifying javascript... ${CHECK} Done"
@echo "\n${HR}"
@echo "Bootstrap successfully built at ${DATE}."
@echo "${HR}\n"
@echo "Thanks for using Bootstrap,"
@echo "<3 @mdo and @fat\n"
#
# RUN JSHINT & QUNIT TESTS IN PHANTOMJS
#
test:
jshint js/*.js --config js/.jshintrc
jshint js/tests/unit/*.js --config js/.jshintrc
node js/tests/server.js &
phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
kill -9 `cat js/tests/pid.txt`
rm js/tests/pid.txt
# #
# BUILD SIMPLE BOOTSTRAP DIRECTORY # BUILD SIMPLE BOOTSTRAP DIRECTORY
# lessc & uglifyjs are required # recess & uglifyjs are required
# #
bootstrap: bootstrap:
...@@ -32,13 +60,13 @@ bootstrap: ...@@ -32,13 +60,13 @@ bootstrap:
mkdir -p bootstrap/css mkdir -p bootstrap/css
mkdir -p bootstrap/js mkdir -p bootstrap/js
cp img/* bootstrap/img/ cp img/* bootstrap/img/
lessc ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
lessc --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
lessc ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
lessc --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js
uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
echo "/**\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
...@@ -46,7 +74,10 @@ bootstrap: ...@@ -46,7 +74,10 @@ bootstrap:
# MAKE FOR GH-PAGES 4 FAT & MDO ONLY (O_O ) # MAKE FOR GH-PAGES 4 FAT & MDO ONLY (O_O )
# #
gh-pages: docs gh-pages: bootstrap docs
rm -f docs/assets/bootstrap.zip
zip -r docs/assets/bootstrap.zip bootstrap
rm -r bootstrap
rm -f ../bootstrap-gh-pages/assets/bootstrap.zip rm -f ../bootstrap-gh-pages/assets/bootstrap.zip
node docs/build production node docs/build production
cp -r docs/* ../bootstrap-gh-pages cp -r docs/* ../bootstrap-gh-pages
......
[Twitter Bootstrap](http://twitter.github.com/bootstrap) [Twitter Bootstrap](http://twitter.github.com/bootstrap) [![Build Status](https://secure.travis-ci.org/twitter/bootstrap.png)](http://travis-ci.org/twitter/bootstrap)
================= =================
Bootstrap provides simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions. In other words, it's a front-end toolkit for faster, more beautiful web development. It's created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat) at Twitter. Bootstrap provides simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions. In other words, it's a front-end toolkit for faster, more beautiful web development. It's created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat) at Twitter.
...@@ -25,9 +25,9 @@ Releases will be numbered with the follow format: ...@@ -25,9 +25,9 @@ Releases will be numbered with the follow format:
And constructed with the following guidelines: And constructed with the following guidelines:
* Breaking backward compatibility bumps the major * Breaking backward compatibility bumps the major (and resets the minor and patch)
* New additions without breaking backward compatibility bumps the minor * New additions without breaking backward compatibility bumps the minor (and resets the patch)
* Bug fixes and misc changes bump the patch * Bug fixes and misc changes bumps the patch
For more information on SemVer, please visit http://semver.org/. For more information on SemVer, please visit http://semver.org/.
...@@ -81,8 +81,18 @@ Developers ...@@ -81,8 +81,18 @@ Developers
We have included a makefile with convenience methods for working with the Bootstrap library. We have included a makefile with convenience methods for working with the Bootstrap library.
+ **dependencies**
Our makefile depends on you having recess, uglify.js, and jshint installed. To install, just run the following command in npm:
```
$ npm install recess uglify-js jshint -g
```
+ **build** - `make` + **build** - `make`
Runs the LESS compiler to rebuild the `/less` files and compiles the docs pages. Requires lessc and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs &raquo;</a> Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs &raquo;</a>
+ **test** - `make test`
Runs jshint and qunit tests headlessly in phantom js (used for ci). Depends on having phatomjs installed.
+ **watch** - `make watch` + **watch** - `make watch`
This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem. This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.
......
This diff is collapsed.
This diff is collapsed.
...@@ -228,7 +228,7 @@ hr.soften { ...@@ -228,7 +228,7 @@ hr.soften {
} }
.quick-links li { .quick-links li {
display: inline; display: inline;
margin: 0 5px; margin: 0 8px;
color: #999; color: #999;
} }
.quick-links .github-btn, .quick-links .github-btn,
...@@ -492,10 +492,6 @@ hr.soften { ...@@ -492,10 +492,6 @@ hr.soften {
/* Misc /* Misc
-------------------------------------------------- */ -------------------------------------------------- */
img {
max-width: 100%;
}
/* Make tables spaced out a bit more */ /* Make tables spaced out a bit more */
h2 + table, h2 + table,
h3 + table, h3 + table,
......
...@@ -51,6 +51,11 @@ ...@@ -51,6 +51,11 @@
processScroll() processScroll()
// hack sad times - holdover until rewrite for 2.1
$nav.on('click', function () {
if (!isFixed) setTimeout(function () { $win.scrollTop($win.scrollTop() - 47) }, 10)
})
$win.on('scroll', processScroll) $win.on('scroll', processScroll)
function processScroll() { function processScroll() {
...@@ -132,7 +137,7 @@ ...@@ -132,7 +137,7 @@
$.ajax({ $.ajax({
type: 'POST' type: 'POST'
, url: 'http://bootstrap.herokuapp.com' , url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com'
, dataType: 'jsonpi' , dataType: 'jsonpi'
, params: { , params: {
js: js js: js
...@@ -142,7 +147,6 @@ ...@@ -142,7 +147,6 @@
} }
}) })
}) })
}) })
// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi // Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
......
/* ========================================================== /* ==========================================================
* bootstrap-alert.js v2.0.2 * bootstrap-alert.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#alerts * http://twitter.github.com/bootstrap/javascript.html#alerts
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -18,23 +18,20 @@ ...@@ -18,23 +18,20 @@
* ========================================================== */ * ========================================================== */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* ALERT CLASS DEFINITION /* ALERT CLASS DEFINITION
* ====================== */ * ====================== */
var dismiss = '[data-dismiss="alert"]' var dismiss = '[data-dismiss="alert"]'
, Alert = function ( el ) { , Alert = function (el) {
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.prototype = { Alert.prototype.close = function (e) {
constructor: Alert
, close: function ( e ) {
var $this = $(this) var $this = $(this)
, selector = $this.attr('data-target') , selector = $this.attr('data-target')
, $parent , $parent
...@@ -45,15 +42,16 @@ ...@@ -45,15 +42,16 @@
} }
$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 $parent.trigger(e = $.Event('close'))
.trigger('close')
.removeClass('in') if (e.isDefaultPrevented()) return
$parent.removeClass('in')
function removeElement() { function removeElement() {
$parent $parent
...@@ -66,13 +64,11 @@ ...@@ -66,13 +64,11 @@
removeElement() removeElement()
} }
}
/* ALERT PLUGIN DEFINITION /* ALERT PLUGIN DEFINITION
* ======================= */ * ======================= */
$.fn.alert = function ( option ) { $.fn.alert = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('alert') , data = $this.data('alert')
...@@ -91,4 +87,4 @@ ...@@ -91,4 +87,4 @@
$('body').on('click.alert.data-api', dismiss, Alert.prototype.close) $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ============================================================ /* ============================================================
* bootstrap-button.js v2.0.2 * bootstrap-button.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#buttons * http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -17,23 +17,21 @@ ...@@ -17,23 +17,21 @@
* limitations under the License. * limitations under the License.
* ============================================================ */ * ============================================================ */
!function( $ ){
"use strict" !function ($) {
"use strict"; // jshint ;_;
/* BUTTON PUBLIC CLASS DEFINITION /* BUTTON PUBLIC CLASS DEFINITION
* ============================== */ * ============================== */
var Button = function ( element, options ) { var Button = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, $.fn.button.defaults, options) this.options = $.extend({}, $.fn.button.defaults, options)
} }
Button.prototype = { Button.prototype.setState = function (state) {
constructor: Button
, setState: function ( state ) {
var d = 'disabled' var d = 'disabled'
, $el = this.$element , $el = this.$element
, data = $el.data() , data = $el.data()
...@@ -52,7 +50,7 @@ ...@@ -52,7 +50,7 @@
}, 0) }, 0)
} }
, toggle: function () { Button.prototype.toggle = function () {
var $parent = this.$element.parent('[data-toggle="buttons-radio"]') var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
$parent && $parent $parent && $parent
...@@ -62,13 +60,11 @@ ...@@ -62,13 +60,11 @@
this.$element.toggleClass('active') this.$element.toggleClass('active')
} }
}
/* BUTTON PLUGIN DEFINITION /* BUTTON PLUGIN DEFINITION
* ======================== */ * ======================== */
$.fn.button = function ( option ) { $.fn.button = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('button') , data = $this.data('button')
...@@ -97,4 +93,4 @@ ...@@ -97,4 +93,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ========================================================== /* ==========================================================
* bootstrap-carousel.js v2.0.2 * bootstrap-carousel.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#carousel * http://twitter.github.com/bootstrap/javascript.html#carousel
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -18,16 +18,17 @@ ...@@ -18,16 +18,17 @@
* ========================================================== */ * ========================================================== */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* CAROUSEL CLASS DEFINITION /* CAROUSEL CLASS DEFINITION
* ========================= */ * ========================= */
var Carousel = function (element, options) { var Carousel = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, $.fn.carousel.defaults, options) this.options = options
this.options.slide && this.slide(this.options.slide) this.options.slide && this.slide(this.options.slide)
this.options.pause == 'hover' && this.$element this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this)) .on('mouseenter', $.proxy(this.pause, this))
...@@ -36,8 +37,11 @@ ...@@ -36,8 +37,11 @@
Carousel.prototype = { Carousel.prototype = {
cycle: function () { cycle: function (e) {
this.interval = setInterval($.proxy(this.next, this), this.options.interval) if (!e) this.paused = false
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this return this
} }
...@@ -62,7 +66,8 @@ ...@@ -62,7 +66,8 @@
return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
} }
, pause: function () { , pause: function (e) {
if (!e) this.paused = true
clearInterval(this.interval) clearInterval(this.interval)
this.interval = null this.interval = null
return this return this
...@@ -85,6 +90,7 @@ ...@@ -85,6 +90,7 @@
, direction = type == 'next' ? 'left' : 'right' , direction = type == 'next' ? 'left' : 'right'
, fallback = type == 'next' ? 'first' : 'last' , fallback = type == 'next' ? 'first' : 'last'
, that = this , that = this
, e = $.Event('slide')
this.sliding = true this.sliding = true
...@@ -94,24 +100,26 @@ ...@@ -94,24 +100,26 @@
if ($next.hasClass('active')) return if ($next.hasClass('active')) return
if (!$.support.transition && this.$element.hasClass('slide')) { if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger('slide') this.$element.trigger(e)
$active.removeClass('active') if (e.isDefaultPrevented()) return
$next.addClass('active')
this.sliding = false
this.$element.trigger('slid')
} else {
$next.addClass(type) $next.addClass(type)
$next[0].offsetWidth // force reflow $next[0].offsetWidth // force reflow
$active.addClass(direction) $active.addClass(direction)
$next.addClass(direction) $next.addClass(direction)
this.$element.trigger('slide')
this.$element.one($.support.transition.end, function () { this.$element.one($.support.transition.end, function () {
$next.removeClass([type, direction].join(' ')).addClass('active') $next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' ')) $active.removeClass(['active', direction].join(' '))
that.sliding = false that.sliding = false
setTimeout(function () { that.$element.trigger('slid') }, 0) 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() isCycling && this.cycle()
...@@ -125,15 +133,15 @@ ...@@ -125,15 +133,15 @@
/* CAROUSEL PLUGIN DEFINITION /* CAROUSEL PLUGIN DEFINITION
* ========================== */ * ========================== */
$.fn.carousel = function ( option ) { $.fn.carousel = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('carousel') , 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 (!data) $this.data('carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option) if (typeof option == 'number') data.to(option)
else if (typeof option == 'string' || (option = options.slide)) data[option]() else if (typeof option == 'string' || (option = options.slide)) data[option]()
else data.cycle() else if (options.interval) data.cycle()
}) })
} }
...@@ -158,4 +166,4 @@ ...@@ -158,4 +166,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ============================================================= /* =============================================================
* bootstrap-collapse.js v2.0.2 * bootstrap-collapse.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#collapse * http://twitter.github.com/bootstrap/javascript.html#collapse
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -17,16 +17,21 @@ ...@@ -17,16 +17,21 @@
* limitations under the License. * limitations under the License.
* ============================================================ */ * ============================================================ */
!function( $ ){
"use strict" !function ($) {
var Collapse = function ( element, options ) { "use strict"; // jshint ;_;
/* COLLAPSE PUBLIC CLASS DEFINITION
* ================================ */
var Collapse = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, $.fn.collapse.defaults, options) this.options = $.extend({}, $.fn.collapse.defaults, options)
if (this.options["parent"]) { if (this.options.parent) {
this.$parent = $(this.options["parent"]) this.$parent = $(this.options.parent)
} }
this.options.toggle && this.toggle() this.options.toggle && this.toggle()
...@@ -42,31 +47,39 @@ ...@@ -42,31 +47,39 @@
} }
, show: function () { , show: function () {
var dimension = this.dimension() var dimension
, scroll = $.camelCase(['scroll', dimension].join('-')) , scroll
, actives = this.$parent && this.$parent.find('.in') , actives
, hasData , 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) { if (actives && actives.length) {
hasData = actives.data('collapse') hasData = actives.data('collapse')
if (hasData && hasData.transitioning) return
actives.collapse('hide') actives.collapse('hide')
hasData || actives.data('collapse', null) hasData || actives.data('collapse', null)
} }
this.$element[dimension](0) this.$element[dimension](0)
this.transition('addClass', 'show', 'shown') this.transition('addClass', $.Event('show'), 'shown')
this.$element[dimension](this.$element[0][scroll]) this.$element[dimension](this.$element[0][scroll])
} }
, hide: function () { , hide: function () {
var dimension = this.dimension() var dimension
if (this.transitioning) return
dimension = this.dimension()
this.reset(this.$element[dimension]()) this.reset(this.$element[dimension]())
this.transition('removeClass', 'hide', 'hidden') this.transition('removeClass', $.Event('hide'), 'hidden')
this.$element[dimension](0) this.$element[dimension](0)
} }
, reset: function ( size ) { , reset: function (size) {
var dimension = this.dimension() var dimension = this.dimension()
this.$element this.$element
...@@ -74,21 +87,26 @@ ...@@ -74,21 +87,26 @@
[dimension](size || 'auto') [dimension](size || 'auto')
[0].offsetWidth [0].offsetWidth
this.$element[size ? 'addClass' : 'removeClass']('collapse') this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
return this return this
} }
, transition: function ( method, startEvent, completeEvent ) { , transition: function (method, startEvent, completeEvent) {
var that = this var that = this
, complete = function () { , complete = function () {
if (startEvent == 'show') that.reset() if (startEvent == 'show') that.reset()
that.transitioning = 0
that.$element.trigger(completeEvent) that.$element.trigger(completeEvent)
} }
this.$element this.$element.trigger(startEvent)
.trigger(startEvent)
[method]('in') if (startEvent.isDefaultPrevented()) return
this.transitioning = 1
this.$element[method]('in')
$.support.transition && this.$element.hasClass('collapse') ? $.support.transition && this.$element.hasClass('collapse') ?
this.$element.one($.support.transition.end, complete) : this.$element.one($.support.transition.end, complete) :
...@@ -101,10 +119,11 @@ ...@@ -101,10 +119,11 @@
} }
/* COLLAPSIBLE PLUGIN DEFINITION /* COLLAPSIBLE PLUGIN DEFINITION
* ============================== */ * ============================== */
$.fn.collapse = function ( option ) { $.fn.collapse = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('collapse') , data = $this.data('collapse')
...@@ -135,4 +154,4 @@ ...@@ -135,4 +154,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ============================================================ /* ============================================================
* bootstrap-dropdown.js v2.0.2 * bootstrap-dropdown.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#dropdowns * http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -18,15 +18,16 @@ ...@@ -18,15 +18,16 @@
* ============================================================ */ * ============================================================ */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* DROPDOWN CLASS DEFINITION /* DROPDOWN CLASS DEFINITION
* ========================= */ * ========================= */
var toggle = '[data-toggle="dropdown"]' var toggle = '[data-toggle="dropdown"]'
, Dropdown = function ( element ) { , Dropdown = function (element) {
var $el = $(element).on('click.dropdown.data-api', this.toggle) var $el = $(element).on('click.dropdown.data-api', this.toggle)
$('html').on('click.dropdown.data-api', function () { $('html').on('click.dropdown.data-api', function () {
$el.parent().removeClass('open') $el.parent().removeClass('open')
...@@ -37,12 +38,16 @@ ...@@ -37,12 +38,16 @@
constructor: Dropdown constructor: Dropdown
, toggle: function ( e ) { , toggle: function (e) {
var $this = $(this) var $this = $(this)
, selector = $this.attr('data-target')
, $parent , $parent
, selector
, isActive , isActive
if ($this.is('.disabled, :disabled')) return
selector = $this.attr('data-target')
if (!selector) { if (!selector) {
selector = $this.attr('href') selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
...@@ -54,7 +59,8 @@ ...@@ -54,7 +59,8 @@
isActive = $parent.hasClass('open') isActive = $parent.hasClass('open')
clearMenus() clearMenus()
!isActive && $parent.toggleClass('open')
if (!isActive) $parent.toggleClass('open')
return false return false
} }
...@@ -69,7 +75,7 @@ ...@@ -69,7 +75,7 @@
/* DROPDOWN PLUGIN DEFINITION /* DROPDOWN PLUGIN DEFINITION
* ========================== */ * ========================== */
$.fn.dropdown = function ( option ) { $.fn.dropdown = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('dropdown') , data = $this.data('dropdown')
...@@ -86,7 +92,9 @@ ...@@ -86,7 +92,9 @@
$(function () { $(function () {
$('html').on('click.dropdown.data-api', clearMenus) $('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 ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ========================================================= /* =========================================================
* bootstrap-modal.js v2.0.2 * bootstrap-modal.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#modals * http://twitter.github.com/bootstrap/javascript.html#modals
* ========================================================= * =========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -18,14 +18,15 @@ ...@@ -18,14 +18,15 @@
* ========================================================= */ * ========================================================= */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* MODAL CLASS DEFINITION /* MODAL CLASS DEFINITION
* ====================== */ * ====================== */
var Modal = function ( content, options ) { var Modal = function (content, options) {
this.options = options this.options = options
this.$element = $(content) this.$element = $(content)
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
...@@ -41,19 +42,23 @@ ...@@ -41,19 +42,23 @@
, show: function () { , show: function () {
var that = this var that = this
, e = $.Event('show')
this.$element.trigger(e)
if (this.isShown) return if (this.isShown || e.isDefaultPrevented()) return
$('body').addClass('modal-open') $('body').addClass('modal-open')
this.isShown = true this.isShown = true
this.$element.trigger('show')
escape.call(this) escape.call(this)
backdrop.call(this, function () { backdrop.call(this, function () {
var transition = $.support.transition && that.$element.hasClass('fade') 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 that.$element
.show() .show()
...@@ -71,21 +76,24 @@ ...@@ -71,21 +76,24 @@
}) })
} }
, hide: function ( e ) { , hide: function (e) {
e && e.preventDefault() e && e.preventDefault()
if (!this.isShown) return
var that = this var that = this
e = $.Event('hide')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
this.isShown = false this.isShown = false
$('body').removeClass('modal-open') $('body').removeClass('modal-open')
escape.call(this) escape.call(this)
this.$element this.$element.removeClass('in')
.trigger('hide')
.removeClass('in')
$.support.transition && this.$element.hasClass('fade') ? $.support.transition && this.$element.hasClass('fade') ?
hideWithTransition.call(this) : hideWithTransition.call(this) :
...@@ -111,7 +119,7 @@ ...@@ -111,7 +119,7 @@
}) })
} }
function hideModal( that ) { function hideModal(that) {
this.$element this.$element
.hide() .hide()
.trigger('hidden') .trigger('hidden')
...@@ -119,7 +127,7 @@ ...@@ -119,7 +127,7 @@
backdrop.call(this) backdrop.call(this)
} }
function backdrop( callback ) { function backdrop(callback) {
var that = this var that = this
, animate = this.$element.hasClass('fade') ? 'fade' : '' , animate = this.$element.hasClass('fade') ? 'fade' : ''
...@@ -173,7 +181,7 @@ ...@@ -173,7 +181,7 @@
/* MODAL PLUGIN DEFINITION /* MODAL PLUGIN DEFINITION
* ======================= */ * ======================= */
$.fn.modal = function ( option ) { $.fn.modal = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('modal') , data = $this.data('modal')
...@@ -207,4 +215,4 @@ ...@@ -207,4 +215,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* =========================================================== /* ===========================================================
* bootstrap-popover.js v2.0.2 * bootstrap-popover.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#popovers * http://twitter.github.com/bootstrap/javascript.html#popovers
* =========================================================== * ===========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -18,14 +18,19 @@ ...@@ -18,14 +18,19 @@
* =========================================================== */ * =========================================================== */
!function( $ ) { !function ($) {
"use strict" "use strict"; // jshint ;_;
/* POPOVER PUBLIC CLASS DEFINITION
* =============================== */
var Popover = function ( element, options ) { var Popover = function ( element, options ) {
this.init('popover', element, options) this.init('popover', element, options)
} }
/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
========================================== */ ========================================== */
...@@ -38,8 +43,8 @@ ...@@ -38,8 +43,8 @@
, title = this.getTitle() , title = this.getTitle()
, content = this.getContent() , content = this.getContent()
$tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title) $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
$tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content) $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)
$tip.removeClass('fade top bottom left right in') $tip.removeClass('fade top bottom left right in')
} }
...@@ -56,12 +61,10 @@ ...@@ -56,12 +61,10 @@
content = $e.attr('data-content') content = $e.attr('data-content')
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
content = content.toString().replace(/(^\s*|\s*$)/, "")
return content return content
} }
, tip: function() { , tip: function () {
if (!this.$tip) { if (!this.$tip) {
this.$tip = $(this.options.template) this.$tip = $(this.options.template)
} }
...@@ -74,7 +77,7 @@ ...@@ -74,7 +77,7 @@
/* POPOVER PLUGIN DEFINITION /* POPOVER PLUGIN DEFINITION
* ======================= */ * ======================= */
$.fn.popover = function ( option ) { $.fn.popover = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('popover') , data = $this.data('popover')
...@@ -92,4 +95,4 @@ ...@@ -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>' , 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 ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ============================================================= /* =============================================================
* bootstrap-scrollspy.js v2.0.2 * bootstrap-scrollspy.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#scrollspy * http://twitter.github.com/bootstrap/javascript.html#scrollspy
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -17,9 +17,11 @@ ...@@ -17,9 +17,11 @@
* limitations under the License. * limitations under the License.
* ============================================================== */ * ============================================================== */
!function ( $ ) {
"use strict" !function ($) {
"use strict"; // jshint ;_;
/* SCROLLSPY CLASS DEFINITION /* SCROLLSPY CLASS DEFINITION
* ========================== */ * ========================== */
...@@ -43,25 +45,43 @@ ...@@ -43,25 +45,43 @@
constructor: ScrollSpy constructor: ScrollSpy
, refresh: function () { , refresh: function () {
this.targets = this.$body var self = this
, $targets
this.offsets = $([])
this.targets = $([])
$targets = this.$body
.find(this.selector) .find(this.selector)
.map(function () { .map(function () {
var href = $(this).attr('href') var $el = $(this)
return /^#\w/.test(href) && $(href).length ? href : null , 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] })
this.offsets = $.map(this.targets, function (id) { .each(function () {
return $(id).position().top self.offsets.push(this[0])
self.targets.push(this[1])
}) })
} }
, process: function () { , process: function () {
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset 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 , offsets = this.offsets
, targets = this.targets , targets = this.targets
, activeTarget = this.activeTarget , activeTarget = this.activeTarget
, i , i
if (scrollTop >= maxScroll) {
return activeTarget != (i = targets.last()[0])
&& this.activate ( i )
}
for (i = offsets.length; i--;) { for (i = offsets.length; i--;) {
activeTarget != targets[i] activeTarget != targets[i]
&& scrollTop >= offsets[i] && scrollTop >= offsets[i]
...@@ -72,21 +92,27 @@ ...@@ -72,21 +92,27 @@
, activate: function (target) { , activate: function (target) {
var active var active
, selector
this.activeTarget = target this.activeTarget = target
this.$body $(this.selector)
.find(this.selector).parent('.active') .parent('.active')
.removeClass('active') .removeClass('active')
active = this.$body selector = this.selector
.find(this.selector + '[href="' + target + '"]') + '[data-target="' + target + '"],'
+ this.selector + '[href="' + target + '"]'
active = $(selector)
.parent('li') .parent('li')
.addClass('active') .addClass('active')
if ( active.parent('.dropdown-menu') ) { if (active.parent('.dropdown-menu')) {
active.closest('li.dropdown').addClass('active') active = active.closest('li.dropdown').addClass('active')
} }
active.trigger('activate')
} }
} }
...@@ -122,4 +148,4 @@ ...@@ -122,4 +148,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ======================================================== /* ========================================================
* bootstrap-tab.js v2.0.2 * bootstrap-tab.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#tabs * http://twitter.github.com/bootstrap/javascript.html#tabs
* ======================================================== * ========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -18,9 +18,10 @@ ...@@ -18,9 +18,10 @@
* ======================================================== */ * ======================================================== */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* TAB CLASS DEFINITION /* TAB CLASS DEFINITION
* ==================== */ * ==================== */
...@@ -39,6 +40,7 @@ ...@@ -39,6 +40,7 @@
, selector = $this.attr('data-target') , selector = $this.attr('data-target')
, previous , previous
, $target , $target
, e
if (!selector) { if (!selector) {
selector = $this.attr('href') selector = $this.attr('href')
...@@ -49,11 +51,14 @@ ...@@ -49,11 +51,14 @@
previous = $ul.find('.active a').last()[0] previous = $ul.find('.active a').last()[0]
$this.trigger({ e = $.Event('show', {
type: 'show' relatedTarget: previous
, relatedTarget: previous
}) })
$this.trigger(e)
if (e.isDefaultPrevented()) return
$target = $(selector) $target = $(selector)
this.activate($this.parent('li'), $ul) this.activate($this.parent('li'), $ul)
...@@ -127,4 +132,4 @@ ...@@ -127,4 +132,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* =========================================================== /* ===========================================================
* bootstrap-tooltip.js v2.0.2 * bootstrap-tooltip.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#tooltips * http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* =========================================================== * ===========================================================
...@@ -18,14 +18,16 @@ ...@@ -18,14 +18,16 @@
* limitations under the License. * limitations under the License.
* ========================================================== */ * ========================================================== */
!function( $ ) {
"use strict" !function ($) {
"use strict"; // jshint ;_;
/* TOOLTIP PUBLIC CLASS DEFINITION /* TOOLTIP PUBLIC CLASS DEFINITION
* =============================== */ * =============================== */
var Tooltip = function ( element, options ) { var Tooltip = function (element, options) {
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
...@@ -33,7 +35,7 @@ ...@@ -33,7 +35,7 @@
constructor: Tooltip constructor: Tooltip
, init: function ( type, element, options ) { , init: function (type, element, options) {
var eventIn var eventIn
, eventOut , eventOut
...@@ -54,7 +56,7 @@ ...@@ -54,7 +56,7 @@
this.fixTitle() this.fixTitle()
} }
, getOptions: function ( options ) { , getOptions: function (options) {
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
if (options.delay && typeof options.delay == 'number') { if (options.delay && typeof options.delay == 'number') {
...@@ -67,35 +69,29 @@ ...@@ -67,35 +69,29 @@
return options return options
} }
, enter: function ( e ) { , enter: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = $(e.currentTarget)[this.type](this._options).data(this.type)
if (!self.options.delay || !self.options.delay.show) { if (!self.options.delay || !self.options.delay.show) return self.show()
self.show()
} else { clearTimeout(this.timeout)
self.hoverState = 'in' self.hoverState = 'in'
setTimeout(function() { this.timeout = setTimeout(function() {
if (self.hoverState == 'in') { if (self.hoverState == 'in') self.show()
self.show()
}
}, self.options.delay.show) }, self.options.delay.show)
} }
}
, leave: function ( e ) { , leave: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = $(e.currentTarget)[this.type](this._options).data(this.type)
if (!self.options.delay || !self.options.delay.hide) { if (!self.options.delay || !self.options.delay.hide) return self.hide()
self.hide()
} else { clearTimeout(this.timeout)
self.hoverState = 'out' self.hoverState = 'out'
setTimeout(function() { this.timeout = setTimeout(function() {
if (self.hoverState == 'out') { if (self.hoverState == 'out') self.hide()
self.hide()
}
}, self.options.delay.hide) }, self.options.delay.hide)
} }
}
, show: function () { , show: function () {
var $tip var $tip
...@@ -152,9 +148,20 @@ ...@@ -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 () { , setContent: function () {
var $tip = this.tip() 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') $tip.removeClass('fade in top bottom left right')
} }
...@@ -206,8 +213,6 @@ ...@@ -206,8 +213,6 @@
title = $e.attr('data-original-title') title = $e.attr('data-original-title')
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
title = (title || '').toString().replace(/(^\s*|\s*$)/, "")
return title return title
} }
...@@ -259,12 +264,12 @@ ...@@ -259,12 +264,12 @@
$.fn.tooltip.defaults = { $.fn.tooltip.defaults = {
animation: true animation: true
, delay: 0
, selector: false
, placement: 'top' , placement: 'top'
, selector: false
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
, trigger: 'hover' , trigger: 'hover'
, title: '' , title: ''
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' , delay: 0
} }
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* =================================================== /* ===================================================
* bootstrap-transition.js v2.0.2 * bootstrap-transition.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#transitions * http://twitter.github.com/bootstrap/javascript.html#transitions
* =================================================== * ===================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -17,35 +17,45 @@ ...@@ -17,35 +17,45 @@
* limitations under the License. * limitations under the License.
* ========================================================== */ * ========================================================== */
!function( $ ) {
!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 () { $.support.transition = (function () {
var thisBody = document.body || document.documentElement
, thisStyle = thisBody.style var transitionEnd = (function () {
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
var el = document.createElement('bootstrap')
return support && { , transEndEventNames = {
end: (function () { 'WebkitTransition' : 'webkitTransitionEnd'
var transitionEnd = "TransitionEnd" , 'MozTransition' : 'transitionend'
if ( $.browser.webkit ) { , 'OTransition' : 'oTransitionEnd'
transitionEnd = "webkitTransitionEnd" , 'msTransition' : 'MSTransitionEnd'
} else if ( $.browser.mozilla ) { , 'transition' : 'transitionend'
transitionEnd = "transitionend" }
} else if ( $.browser.opera ) { , name
transitionEnd = "oTransitionEnd"
for (name in transEndEventNames){
if (el.style[name] !== undefined) {
return transEndEventNames[name]
}
} }
return transitionEnd
}()) }())
return transitionEnd && {
end: transitionEnd
} }
})() })()
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
/* ============================================================= /* =============================================================
* bootstrap-typeahead.js v2.0.2 * bootstrap-typeahead.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#typeahead * http://twitter.github.com/bootstrap/javascript.html#typeahead
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -17,16 +17,22 @@ ...@@ -17,16 +17,22 @@
* limitations under the License. * 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.$element = $(element)
this.options = $.extend({}, $.fn.typeahead.defaults, options) this.options = $.extend({}, $.fn.typeahead.defaults, options)
this.matcher = this.options.matcher || this.matcher this.matcher = this.options.matcher || this.matcher
this.sorter = this.options.sorter || this.sorter this.sorter = this.options.sorter || this.sorter
this.highlighter = this.options.highlighter || this.highlighter this.highlighter = this.options.highlighter || this.highlighter
this.updater = this.options.updater || this.updater
this.$menu = $(this.options.menu).appendTo('body') this.$menu = $(this.options.menu).appendTo('body')
this.source = this.options.source this.source = this.options.source
this.shown = false this.shown = false
...@@ -39,13 +45,18 @@ ...@@ -39,13 +45,18 @@
, select: function () { , select: function () {
var val = this.$menu.find('.active').attr('data-value') var val = this.$menu.find('.active').attr('data-value')
this.$element.val(val) this.$element
this.$element.change(); .val(this.updater(val))
.change()
return this.hide() return this.hide()
} }
, updater: function (item) {
return item
}
, show: function () { , show: function () {
var pos = $.extend({}, this.$element.offset(), { var pos = $.extend({}, this.$element.position(), {
height: this.$element[0].offsetHeight height: this.$element[0].offsetHeight
}) })
...@@ -77,7 +88,7 @@ ...@@ -77,7 +88,7 @@
} }
items = $.grep(this.source, function (item) { items = $.grep(this.source, function (item) {
if (that.matcher(item)) return item return that.matcher(item)
}) })
items = this.sorter(items) items = this.sorter(items)
...@@ -109,7 +120,8 @@ ...@@ -109,7 +120,8 @@
} }
, highlighter: function (item) { , 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>' return '<strong>' + match + '</strong>'
}) })
} }
...@@ -201,11 +213,13 @@ ...@@ -201,11 +213,13 @@
break break
case 38: // up arrow case 38: // up arrow
if (e.type != 'keydown') break
e.preventDefault() e.preventDefault()
this.prev() this.prev()
break break
case 40: // down arrow case 40: // down arrow
if (e.type != 'keydown') break
e.preventDefault() e.preventDefault()
this.next() this.next()
break break
...@@ -236,7 +250,7 @@ ...@@ -236,7 +250,7 @@
/* TYPEAHEAD PLUGIN DEFINITION /* TYPEAHEAD PLUGIN DEFINITION
* =========================== */ * =========================== */
$.fn.typeahead = function ( option ) { $.fn.typeahead = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('typeahead') , data = $this.data('typeahead')
...@@ -268,4 +282,4 @@ ...@@ -268,4 +282,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
\ No newline at end of file \ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="assets/ico/favicon.ico"> <link rel="shortcut icon" href="assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
<a class="brand" href="./index.html">Bootstrap</a> <a class="brand" href="./index.html">Bootstrap</a>
<div class="nav-collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
<li class=""> <li class="">
<a href="./index.html">Overview</a> <a href="./index.html">Overview</a>
...@@ -107,8 +108,7 @@ ...@@ -107,8 +108,7 @@
<h3>Base CSS</h3> <h3>Base CSS</h3>
<label class="checkbox"><input checked="checked" type="checkbox" value="type.less"> Headings, body, etc</label> <label class="checkbox"><input checked="checked" type="checkbox" value="type.less"> Headings, body, etc</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="code.less"> Code and pre</label> <label class="checkbox"><input checked="checked" type="checkbox" value="code.less"> Code and pre</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="labels.less"> Labels</label> <label class="checkbox"><input checked="checked" type="checkbox" value="labels-badges.less"> Labels and badges</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="badges.less"> Badges</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="tables.less"> Tables</label> <label class="checkbox"><input checked="checked" type="checkbox" value="tables.less"> Tables</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="forms.less"> Forms</label> <label class="checkbox"><input checked="checked" type="checkbox" value="forms.less"> Forms</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="buttons.less"> Buttons</label> <label class="checkbox"><input checked="checked" type="checkbox" value="buttons.less"> Buttons</label>
...@@ -143,7 +143,11 @@ ...@@ -143,7 +143,11 @@
<label class="checkbox"><input checked="checked" type="checkbox" value="utilities.less"> Utilities</label> <label class="checkbox"><input checked="checked" type="checkbox" value="utilities.less"> Utilities</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="component-animations.less"> Component animations</label> <label class="checkbox"><input checked="checked" type="checkbox" value="component-animations.less"> Component animations</label>
<h3>Responsive</h3> <h3>Responsive</h3>
<label class="checkbox"><input checked="checked" type="checkbox" value="responsive.less"> Responsive layouts</label> <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-utilities.less"> Visible/hidden classes</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="responsive-767px-max.less"> Narrow tablets and below (<767px)</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="responsive-768px-979px.less"> Tablets to desktops (767-979px)</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="responsive-1200px-min.less"> Large desktops (>1200px)</label>
<label class="checkbox"><input checked="checked" type="checkbox" value="responsive-navbar.less"> Responsive navbar</label>
</div><!-- /span --> </div><!-- /span -->
</div><!-- /row --> </div><!-- /row -->
</section> </section>
...@@ -276,14 +280,20 @@ ...@@ -276,14 +280,20 @@
<input type="text" class="span3" placeholder="2.127659574%"> <input type="text" class="span3" placeholder="2.127659574%">
<h3>Typography</h3> <h3>Typography</h3>
<label>@sansFontFamily</label>
<input type="text" class="span3" placeholder="'Helvetica Neue', Helvetica, Arial, sans-serif">
<label>@serifFontFamily</label>
<input type="text" class="span3" placeholder="Georgia, 'Times New Roman', Times, serif">
<label>@monoFontFamily</label>
<input type="text" class="span3" placeholder="Menlo, Monaco, 'Courier New', monospace">
<label>@baseFontSize</label> <label>@baseFontSize</label>
<input type="text" class="span3" placeholder="13px"> <input type="text" class="span3" placeholder="13px">
<label>@baseFontFamily</label> <label>@baseFontFamily</label>
<input type="text" class="span3" placeholder="'Helvetica Neue', Helvetica, Arial, sans-serif"> <input type="text" class="span3" placeholder="@sansFontFamily">
<label>@baseLineHeight</label> <label>@baseLineHeight</label>
<input type="text" class="span3" placeholder="18px"> <input type="text" class="span3" placeholder="18px">
<label>@altFontFamily</label> <label>@altFontFamily</label>
<input type="text" class="span3" placeholder="Georgia, 'Times New Roman', Times, serif;"> <input type="text" class="span3" placeholder="@serifFontFamily">
<label>@headingsFontFamily</label> <label>@headingsFontFamily</label>
<input type="text" class="span3" placeholder="inherit"> <input type="text" class="span3" placeholder="inherit">
<label>@headingsFontWeight</label> <label>@headingsFontWeight</label>
...@@ -317,6 +327,8 @@ ...@@ -317,6 +327,8 @@
<input type="text" class="span3" placeholder="@grayDark"> <input type="text" class="span3" placeholder="@grayDark">
<label>@navbarText</label> <label>@navbarText</label>
<input type="text" class="span3" placeholder="@grayLight"> <input type="text" class="span3" placeholder="@grayLight">
<label>@navbarBrandColor</label>
<input type="text" class="span3" placeholder="@navbarLinkColor">
<label>@navbarLinkColor</label> <label>@navbarLinkColor</label>
<input type="text" class="span3" placeholder="@grayLight"> <input type="text" class="span3" placeholder="@grayLight">
<label>@navbarLinkColorHover</label> <label>@navbarLinkColorHover</label>
...@@ -356,8 +368,12 @@ ...@@ -356,8 +368,12 @@
<input type="text" class="span3" placeholder="@white"> <input type="text" class="span3" placeholder="@white">
<label>@inputBorder</label> <label>@inputBorder</label>
<input type="text" class="span3" placeholder="#ccc"> <input type="text" class="span3" placeholder="#ccc">
<label>@inputBorderRadius</label>
<input type="text" class="span3" placeholder="3px">
<label>@inputDisabledBackground</label> <label>@inputDisabledBackground</label>
<input type="text" class="span3" placeholder="@grayLighter"> <input type="text" class="span3" placeholder="@grayLighter">
<label>@formActionsBackground</label>
<input type="text" class="span3" placeholder="#f5f5f5">
<label>@btnPrimaryBackground</label> <label>@btnPrimaryBackground</label>
<input type="text" class="span3" placeholder="@linkColor"> <input type="text" class="span3" placeholder="@linkColor">
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="assets/ico/favicon.ico"> <link rel="shortcut icon" href="assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
<a class="brand" href="./index.html">Bootstrap</a> <a class="brand" href="./index.html">Bootstrap</a>
<div class="nav-collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
<li class=""> <li class="">
<a href="./index.html">Overview</a> <a href="./index.html">Overview</a>
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="../assets/ico/favicon.ico"> <link rel="shortcut icon" href="../assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
...@@ -43,13 +44,23 @@ ...@@ -43,13 +44,23 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
<a class="brand" href="#">Project name</a> <a class="brand" href="#">Project name</a>
<div class="btn-group pull-right">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
<i class="icon-user"></i> Username
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="#">Profile</a></li>
<li class="divider"></li>
<li><a href="#">Sign Out</a></li>
</ul>
</div>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li class="active"><a href="#">Home</a></li> <li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li> <li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li> <li><a href="#contact">Contact</a></li>
</ul> </ul>
<p class="navbar-text pull-right">Logged in as <a href="#">username</a></p>
</div><!--/.nav-collapse --> </div><!--/.nav-collapse -->
</div> </div>
</div> </div>
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="../assets/ico/favicon.ico"> <link rel="shortcut icon" href="../assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="../assets/ico/favicon.ico"> <link rel="shortcut icon" href="../assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="assets/ico/favicon.ico"> <link rel="shortcut icon" href="assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
<a class="brand" href="./index.html">Bootstrap</a> <a class="brand" href="./index.html">Bootstrap</a>
<div class="nav-collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
<li class="active"> <li class="active">
<a href="./index.html">Overview</a> <a href="./index.html">Overview</a>
...@@ -82,7 +83,7 @@ ...@@ -82,7 +83,7 @@
<p>Simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions.</p> <p>Simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions.</p>
<p class="download-info"> <p class="download-info">
<a href="https://github.com/twitter/bootstrap/" class="btn btn-primary btn-large">View project on GitHub</a> <a href="https://github.com/twitter/bootstrap/" class="btn btn-primary btn-large">View project on GitHub</a>
<a href="assets/bootstrap.zip" class="btn btn-large">Download Bootstrap <small>(v2.0.2)</small></a> <a href="assets/bootstrap.zip" class="btn btn-large">Download Bootstrap <small>(v2.0.3)</small></a>
</p> </p>
</div> </div>
...@@ -90,6 +91,7 @@ ...@@ -90,6 +91,7 @@
<ul class="quick-links"> <ul class="quick-links">
<li><a href="./upgrading.html">Upgrading from 1.4</a></li> <li><a href="./upgrading.html">Upgrading from 1.4</a></li>
<li><a href="https://github.com/twitter/bootstrap/zipball/master">Download with docs</a></li> <li><a href="https://github.com/twitter/bootstrap/zipball/master">Download with docs</a></li>
<li><a href="http://blog.getbootstrap.com">Read the blog</a></li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Submit issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Submit issues</a></li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li>
</ul> </ul>
......
This diff is collapsed.
This diff is collapsed.
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="assets/ico/favicon.ico"> <link rel="shortcut icon" href="assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
<a class="brand" href="./index.html">Bootstrap</a> <a class="brand" href="./index.html">Bootstrap</a>
<div class="nav-collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
<li class=""> <li class="">
<a href="./index.html">Overview</a> <a href="./index.html">Overview</a>
...@@ -172,7 +173,7 @@ ...@@ -172,7 +173,7 @@
<div class="row"> <div class="row">
<div class="span4"> <div class="span4">
<p>The default grid system provided as part of Bootstrap is a <strong>940px-wide, 12-column grid</strong>.</p> <p>The default grid system provided as part of Bootstrap is a <strong>940px-wide, 12-column grid</strong>.</p>
<p>It also has four responsive variations for various devices and resolutions: phone, tablet portrait, table landscape and small desktops, and large widescreen desktops.</p> <p>It also has four responsive variations for various devices and resolutions: phone, tablet portrait, tablet landscape and small desktops, and large widescreen desktops.</p>
</div><!-- /.span --> </div><!-- /.span -->
<div class="span4"> <div class="span4">
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
...@@ -183,7 +184,7 @@ ...@@ -183,7 +184,7 @@
</pre> </pre>
</div><!-- /.span --> </div><!-- /.span -->
<div class="span4"> <div class="span4">
<p>As shown here, a basic layout can be created with two "columns," each spanning a number of the 12 foundational columns we defined as part of our grid system.</p> <p>As shown here, a basic layout can be created with two "columns", each spanning a number of the 12 foundational columns we defined as part of our grid system.</p>
</div><!-- /.span --> </div><!-- /.span -->
</div><!-- /.row --> </div><!-- /.row -->
...@@ -374,11 +375,6 @@ ...@@ -374,11 +375,6 @@
<td>20px</td> <td>20px</td>
<td>Negative space between columns</td> <td>Negative space between columns</td>
</tr> </tr>
<tr>
<td><code>@siteWidth</code></td>
<td><em>Computed sum of all columns and gutters</em></td>
<td>Counts number of columns and gutters to set width of the <code>.container-fixed()</code> mixin</td>
</tr>
</tbody> </tbody>
</table> </table>
<div class="row"> <div class="row">
...@@ -537,13 +533,13 @@ ...@@ -537,13 +533,13 @@
@media (max-width: 480px) { ... } @media (max-width: 480px) { ... }
// Landscape phone to portrait tablet // Landscape phone to portrait tablet
@media (max-width: 768px) { ... } @media (max-width: 767px) { ... }
// Portrait tablet to landscape and desktop // Portrait tablet to landscape and desktop
@media (min-width: 768px) and (max-width: 980px) { ... } @media (min-width: 768px) and (max-width: 979px) { ... }
// Large desktop // Large desktop
@media (min-width: 1200px) { .. } @media (min-width: 1200px) { ... }
</pre> </pre>
</div><!-- /.span --> </div><!-- /.span -->
</div><!-- /.row --> </div><!-- /.row -->
...@@ -554,7 +550,7 @@ ...@@ -554,7 +550,7 @@
<div class="row"> <div class="row">
<div class="span4"> <div class="span4">
<h3>What are they</h2> <h3>What are they</h2>
<p>For faster mobile-friendly development, use these basic utility classes for showing and hidding content by device.</p> <p>For faster mobile-friendly development, use these basic utility classes for showing and hiding content by device.</p>
<h3>When to use</h2> <h3>When to use</h2>
<p>Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation.</p> <p>Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation.</p>
<p>For example, you might show a <code>&lt;select&gt;</code> element for nav on mobile layouts, but not on tablets or desktops.</p> <p>For example, you might show a <code>&lt;select&gt;</code> element for nav on mobile layouts, but not on tablets or desktops.</p>
...@@ -611,14 +607,16 @@ ...@@ -611,14 +607,16 @@
</tbody> </tbody>
</table> </table>
<h3>Test case</h3> <h3>Test case</h3>
<p>Resize your browser or load on different devices to test the above clases.</p> <p>Resize your browser or load on different devices to test the above classes.</p>
<h4>Visible on...</h4> <h4>Visible on...</h4>
<p>Green checkmarks indicate that class is visible in your current viewport.</p>
<ul class="responsive-utilities-test"> <ul class="responsive-utilities-test">
<li>Phone<span class="visible-phone">&#10004; Phone</span></li> <li>Phone<span class="visible-phone">&#10004; Phone</span></li>
<li>Tablet<span class="visible-tablet">&#10004; Tablet</span></li> <li>Tablet<span class="visible-tablet">&#10004; Tablet</span></li>
<li>Desktop<span class="visible-desktop">&#10004; Desktop</span></li> <li>Desktop<span class="visible-desktop">&#10004; Desktop</span></li>
</ul> </ul>
<h4>Hidden on...</h4> <h4>Hidden on...</h4>
<p>Here, green checkmarks indicate that class is hidden in your current viewport.</p>
<ul class="responsive-utilities-test hidden-on"> <ul class="responsive-utilities-test hidden-on">
<li>Phone<span class="hidden-phone">&#10004; Phone</span></li> <li>Phone<span class="hidden-phone">&#10004; Phone</span></li>
<li>Tablet<span class="hidden-tablet">&#10004; Tablet</span></li> <li>Tablet<span class="hidden-tablet">&#10004; Tablet</span></li>
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="assets/ico/favicon.ico"> <link rel="shortcut icon" href="assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
<a class="brand" href="./index.html">Bootstrap</a> <a class="brand" href="./index.html">Bootstrap</a>
<div class="nav-collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
<li class="{{index}}"> <li class="{{index}}">
<a href="./index.html">{{_i}}Overview{{/i}}</a> <a href="./index.html">{{_i}}Overview{{/i}}</a>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
img/glyphicons-halflings-white.png

4.25 KB | W: | H:

img/glyphicons-halflings-white.png

8.57 KB | W: | H:

img/glyphicons-halflings-white.png
img/glyphicons-halflings-white.png
img/glyphicons-halflings-white.png
img/glyphicons-halflings-white.png
  • 2-up
  • Swipe
  • Onion skin
img/glyphicons-halflings.png

4.25 KB | W: | H:

img/glyphicons-halflings.png

13.5 KB | W: | H:

img/glyphicons-halflings.png
img/glyphicons-halflings.png
img/glyphicons-halflings.png
img/glyphicons-halflings.png
  • 2-up
  • Swipe
  • Onion skin
{
"validthis": true,
"laxcomma" : true,
"laxbreak" : true,
"browser" : true,
"debug" : true,
"boss" : true,
"expr" : true,
"asi" : true
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment