Commit 8c7f9c66 authored by fat's avatar fat

Merge branch '2.3.0-wip'

parents ee91afba c4d47fb1
This diff is collapsed.
...@@ -18,8 +18,8 @@ build: ...@@ -18,8 +18,8 @@ build:
@jshint js/*.js --config js/.jshintrc @jshint js/*.js --config js/.jshintrc
@jshint js/tests/unit/*.js --config js/.jshintrc @jshint js/tests/unit/*.js --config js/.jshintrc
@echo "Running JSHint on javascript... ${CHECK} Done" @echo "Running JSHint on javascript... ${CHECK} Done"
@recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP} @./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
@recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE} @./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
@echo "Compiling LESS with Recess... ${CHECK} Done" @echo "Compiling LESS with Recess... ${CHECK} Done"
@node docs/build @node docs/build
@cp img/* docs/assets/img/ @cp img/* docs/assets/img/
...@@ -27,8 +27,8 @@ build: ...@@ -27,8 +27,8 @@ build:
@cp js/tests/vendor/jquery.js docs/assets/js/ @cp js/tests/vendor/jquery.js docs/assets/js/
@echo "Compiling documentation... ${CHECK} Done" @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 js/bootstrap-affix.js > docs/assets/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 js/bootstrap-affix.js > docs/assets/js/bootstrap.js
@uglifyjs docs/assets/js/bootstrap.js -nc > docs/assets/js/bootstrap.min.tmp.js @./node_modules/.bin/uglifyjs -nc docs/assets/js/bootstrap.js > docs/assets/js/bootstrap.min.tmp.js
@echo "/**\n* Bootstrap.js v2.2.2 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js @echo "/**\n* Bootstrap.js v2.3.0 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 @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 @rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
@echo "Compiling and minifying javascript... ${CHECK} Done" @echo "Compiling and minifying javascript... ${CHECK} Done"
...@@ -43,8 +43,8 @@ build: ...@@ -43,8 +43,8 @@ build:
# #
test: test:
jshint js/*.js --config js/.jshintrc ./node_modules/.bin/jshint js/*.js --config js/.jshintrc
jshint js/tests/unit/*.js --config js/.jshintrc ./node_modules/.bin/jshint js/tests/unit/*.js --config js/.jshintrc
node js/tests/server.js & node js/tests/server.js &
phantomjs js/tests/phantom.js "http://localhost:3000/js/tests" phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
kill -9 `cat js/tests/pid.txt` kill -9 `cat js/tests/pid.txt`
...@@ -62,21 +62,46 @@ clean: ...@@ -62,21 +62,46 @@ clean:
# recess & uglifyjs are required # recess & uglifyjs are required
# #
bootstrap: bootstrap: bootstrap-img bootstrap-css bootstrap-js
mkdir -p bootstrap/img
mkdir -p bootstrap/css
#
# JS COMPILE
#
bootstrap-js: bootstrap/js/*.js
bootstrap/js/*.js: js/*.js
mkdir -p bootstrap/js mkdir -p bootstrap/js
cp img/* bootstrap/img/
recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.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 js/bootstrap-affix.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 js/bootstrap-affix.js > bootstrap/js/bootstrap.js
uglifyjs bootstrap/js/bootstrap.js -nc > bootstrap/js/bootstrap.min.tmp.js ./node_modules/.bin/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
#
# CSS COMPLILE
#
bootstrap-css: bootstrap/css/*.css
bootstrap/css/*.css: less/*.less
mkdir -p bootstrap/css
./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
./node_modules/.bin/recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
./node_modules/.bin/recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
#
# IMAGES
#
bootstrap-img: bootstrap/img/*
bootstrap/img/*: img/*
mkdir -p bootstrap/img
cp img/* bootstrap/img/
# #
# MAKE FOR GH-PAGES 4 FAT & MDO ONLY (O_O ) # MAKE FOR GH-PAGES 4 FAT & MDO ONLY (O_O )
# #
...@@ -98,4 +123,4 @@ watch: ...@@ -98,4 +123,4 @@ watch:
watchr -e "watch('less/.*\.less') { system 'make' }" watchr -e "watch('less/.*\.less') { system 'make' }"
.PHONY: docs watch gh-pages .PHONY: docs watch gh-pages bootstrap-img bootstrap-css bootstrap-js
\ No newline at end of file \ No newline at end of file
# [Twitter Bootstrap v2.2.2](http://twitter.github.com/bootstrap) [![Build Status](https://secure.travis-ci.org/twitter/bootstrap.png)](http://travis-ci.org/twitter/bootstrap) <a href="http://getbootstrap.com">
<img src="http://twitter.github.com/bootstrap/assets/img/bootstrap-docs-readme.png" width="100px">
</a>
# [Bootstrap v2.3.0](http://twitter.github.com/bootstrap) [![Build Status](https://secure.travis-ci.org/twitter/bootstrap.png)](http://travis-ci.org/twitter/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat). Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat).
To get started, checkout http://getbootstrap.com! To get started, checkout [http://getbootstrap.com](http://getbootstrap.com)!
...@@ -30,7 +34,7 @@ And constructed with the following guidelines: ...@@ -30,7 +34,7 @@ And constructed with the following guidelines:
* New additions without breaking backward compatibility bumps the minor (and resets the patch) * New additions without breaking backward compatibility bumps the minor (and resets the patch)
* Bug fixes and misc changes bumps 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/](http://semver.org/).
...@@ -85,13 +89,13 @@ Thanks! ...@@ -85,13 +89,13 @@ Thanks!
**Mark Otto** **Mark Otto**
+ http://twitter.com/mdo + [http://twitter.com/mdo](http://twitter.com/mdo)
+ http://github.com/mdo + [http://github.com/mdo](http://github.com/mdo)
**Jacob Thornton** **Jacob Thornton**
+ http://twitter.com/fat + [http://twitter.com/fat](http://twitter.com/fat)
+ http://github.com/fat + [http://github.com/fat](http://github.com/fat)
...@@ -103,7 +107,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); ...@@ -103,7 +107,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License. you may not use this work except in compliance with the License.
You may obtain a copy of the License in the LICENSE file, or at: You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0 [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
......
{ {
"name": "bootstrap", "name": "bootstrap",
"version": "2.2.2", "version": "2.3.0",
"main": ["./docs/assets/js/bootstrap.js", "./docs/assets/css/bootstrap.css"], "main": ["./docs/assets/js/bootstrap.js", "./docs/assets/css/bootstrap.css"],
"dependencies": { "dependencies": {
"jquery": "~1.8.0" "jquery": "~1.8.0"
......
...@@ -5,6 +5,5 @@ ...@@ -5,6 +5,5 @@
, "homepage": "http://twitter.github.com/bootstrap/" , "homepage": "http://twitter.github.com/bootstrap/"
, "author": "Twitter Inc." , "author": "Twitter Inc."
, "license": "Apache-2.0" , "license": "Apache-2.0"
, "target-dir": "twitter/bootstrap"
} }
/*! /*!
* Bootstrap Responsive v2.2.2 * Bootstrap Responsive v2.3.0
* *
* Copyright 2012 Twitter, Inc * Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0 * Licensed under the Apache License v2.0
...@@ -8,10 +8,6 @@ ...@@ -8,10 +8,6 @@
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world @twitter by @mdo and @fat.
*/ */
@-ms-viewport {
width: device-width;
}
.clearfix { .clearfix {
*zoom: 1; *zoom: 1;
} }
...@@ -44,6 +40,10 @@ ...@@ -44,6 +40,10 @@
box-sizing: border-box; box-sizing: border-box;
} }
@-ms-viewport {
width: device-width;
}
.hidden { .hidden {
display: none; display: none;
visibility: hidden; visibility: hidden;
...@@ -95,6 +95,19 @@ ...@@ -95,6 +95,19 @@
} }
} }
.visible-print {
display: none !important;
}
@media print {
.visible-print {
display: inherit !important;
}
.hidden-print {
display: none !important;
}
}
@media (min-width: 1200px) { @media (min-width: 1200px) {
.row { .row {
margin-left: -30px; margin-left: -30px;
...@@ -1003,7 +1016,9 @@ ...@@ -1003,7 +1016,9 @@
margin-bottom: 2px; margin-bottom: 2px;
} }
.nav-collapse .nav > li > a:hover, .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: #f2f2f2; background-color: #f2f2f2;
} }
.navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .nav > li > a,
...@@ -1011,7 +1026,9 @@ ...@@ -1011,7 +1026,9 @@
color: #999999; color: #999999;
} }
.navbar-inverse .nav-collapse .nav > li > a:hover, .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: #111111; background-color: #111111;
} }
.nav-collapse.in .btn-group { .nav-collapse.in .btn-group {
......
This diff is collapsed.
...@@ -339,8 +339,8 @@ only screen and ( -o-min-device-pixel-ratio: 2/1) { ...@@ -339,8 +339,8 @@ only screen and ( -o-min-device-pixel-ratio: 2/1) {
min-height: 40px; min-height: 40px;
line-height: 40px; line-height: 40px;
} }
.show-grid:hover [class*="span"] { .show-grid [class*="span"]:hover {
background: #ddd; background-color: #ddd;
} }
.show-grid .show-grid { .show-grid .show-grid {
margin-top: 0; margin-top: 0;
...@@ -552,6 +552,9 @@ h2 + .row { ...@@ -552,6 +552,9 @@ h2 + .row {
/* Example page /* Example page
------------------------- */ ------------------------- */
.bootstrap-examples h4 {
margin: 10px 0 5px;
}
.bootstrap-examples p { .bootstrap-examples p {
font-size: 13px; font-size: 13px;
line-height: 18px; line-height: 18px;
......
...@@ -14,12 +14,14 @@ ...@@ -14,12 +14,14 @@
}) })
// side bar // side bar
$('.bs-docs-sidenav').affix({ setTimeout(function () {
offset: { $('.bs-docs-sidenav').affix({
top: function () { return $window.width() <= 980 ? 290 : 210 } offset: {
, bottom: 270 top: function () { return $window.width() <= 980 ? 290 : 210 }
} , bottom: 270
}) }
})
}, 100)
// make code pretty // make code pretty
window.prettyPrint && prettyPrint() window.prettyPrint && prettyPrint()
...@@ -34,21 +36,21 @@ ...@@ -34,21 +36,21 @@
// add tipsies to grid for scaffolding // add tipsies to grid for scaffolding
if ($('#gridSystem').length) { if ($('#gridSystem').length) {
$('#gridSystem').tooltip({ $('#gridSystem').tooltip({
selector: '.show-grid > div' selector: '.show-grid > [class*="span"]'
, title: function () { return $(this).width() + 'px' } , title: function () { return $(this).width() + 'px' }
}) })
} }
// tooltip demo // tooltip demo
$('.tooltip-demo').tooltip({ $('.tooltip-demo').tooltip({
selector: "a[rel=tooltip]" selector: "a[data-toggle=tooltip]"
}) })
$('.tooltip-test').tooltip() $('.tooltip-test').tooltip()
$('.popover-test').popover() $('.popover-test').popover()
// popover demo // popover demo
$("a[rel=popover]") $("a[data-toggle=popover]")
.popover() .popover()
.click(function(e) { .click(function(e) {
e.preventDefault() e.preventDefault()
...@@ -151,4 +153,4 @@ $.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) { ...@@ -151,4 +153,4 @@ $.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
} }
}) })
}(window.jQuery) }(window.jQuery)
\ No newline at end of file
/* ========================================================== /* ==========================================================
* bootstrap-affix.js v2.2.2 * bootstrap-affix.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#affix * http://twitter.github.com/bootstrap/javascript.html#affix
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ========================================================== /* ==========================================================
* bootstrap-alert.js v2.2.2 * bootstrap-alert.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#alerts * http://twitter.github.com/bootstrap/javascript.html#alerts
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ============================================================ /* ============================================================
* bootstrap-button.js v2.2.2 * bootstrap-button.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#buttons * http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ========================================================== /* ==========================================================
* bootstrap-carousel.js v2.2.2 * bootstrap-carousel.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#carousel * http://twitter.github.com/bootstrap/javascript.html#carousel
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
var Carousel = function (element, options) { var Carousel = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options this.options = options
this.options.pause == 'hover' && this.$element this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this)) .on('mouseenter', $.proxy(this.pause, this))
...@@ -38,19 +39,24 @@ ...@@ -38,19 +39,24 @@
cycle: function (e) { cycle: function (e) {
if (!e) this.paused = false if (!e) this.paused = false
if (this.interval) clearInterval(this.interval);
this.options.interval this.options.interval
&& !this.paused && !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this 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) { , to: function (pos) {
var $active = this.$element.find('.item.active') var activeIndex = this.getActiveIndex()
, children = $active.parent().children()
, activePos = children.index($active)
, that = this , that = this
if (pos > (children.length - 1) || pos < 0) return if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) { if (this.sliding) {
return this.$element.one('slid', function () { return this.$element.one('slid', function () {
...@@ -58,11 +64,11 @@ ...@@ -58,11 +64,11 @@
}) })
} }
if (activePos == pos) { if (activeIndex == pos) {
return this.pause().cycle() 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) { , pause: function (e) {
...@@ -103,10 +109,19 @@ ...@@ -103,10 +109,19 @@
e = $.Event('slide', { e = $.Event('slide', {
relatedTarget: $next[0] relatedTarget: $next[0]
, direction: direction
}) })
if ($next.hasClass('active')) return 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')) { if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger(e) this.$element.trigger(e)
if (e.isDefaultPrevented()) return if (e.isDefaultPrevented()) return
...@@ -151,7 +166,7 @@ ...@@ -151,7 +166,7 @@
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 (action) data[action]() else if (action) data[action]()
else if (options.interval) data.cycle() else if (options.interval) data.pause().cycle()
}) })
} }
...@@ -174,11 +189,18 @@ ...@@ -174,11 +189,18 @@
/* CAROUSEL DATA-API /* 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 var $this = $(this), href
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
, options = $.extend({}, $target.data(), $this.data()) , options = $.extend({}, $target.data(), $this.data())
, slideIndex
$target.carousel(options) $target.carousel(options)
if (slideIndex = $this.attr('data-slide-to')) {
$target.data('carousel').pause().to(slideIndex).cycle()
}
e.preventDefault() e.preventDefault()
}) })
......
/* ============================================================= /* =============================================================
* bootstrap-collapse.js v2.2.2 * bootstrap-collapse.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#collapse * http://twitter.github.com/bootstrap/javascript.html#collapse
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
, actives , actives
, hasData , hasData
if (this.transitioning) return if (this.transitioning || this.$element.hasClass('in')) return
dimension = this.dimension() dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-')) scroll = $.camelCase(['scroll', dimension].join('-'))
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
, hide: function () { , hide: function () {
var dimension var dimension
if (this.transitioning) return if (this.transitioning || !this.$element.hasClass('in')) return
dimension = this.dimension() dimension = this.dimension()
this.reset(this.$element[dimension]()) this.reset(this.$element[dimension]())
this.transition('removeClass', $.Event('hide'), 'hidden') this.transition('removeClass', $.Event('hide'), 'hidden')
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('collapse') , 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 (!data) $this.data('collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
......
/* ============================================================ /* ============================================================
* bootstrap-dropdown.js v2.2.2 * bootstrap-dropdown.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#dropdowns * http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -81,7 +81,10 @@ ...@@ -81,7 +81,10 @@
isActive = $parent.hasClass('open') 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) $items = $('[role=menu] li:not(.divider):visible a', $parent)
...@@ -115,8 +118,9 @@ ...@@ -115,8 +118,9 @@
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
} }
$parent = $(selector) $parent = selector && $(selector)
$parent.length || ($parent = $this.parent())
if (!$parent || !$parent.length) $parent = $this.parent()
return $parent return $parent
} }
...@@ -152,10 +156,10 @@ ...@@ -152,10 +156,10 @@
* =================================== */ * =================================== */
$(document) $(document)
.on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', clearMenus)
.on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() }) .on('.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery); }(window.jQuery);
\ No newline at end of file
/* ========================================================= /* =========================================================
* bootstrap-modal.js v2.2.2 * bootstrap-modal.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#modals * http://twitter.github.com/bootstrap/javascript.html#modals
* ========================================================= * =========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -60,8 +60,7 @@ ...@@ -60,8 +60,7 @@
that.$element.appendTo(document.body) //don't move modals dom position that.$element.appendTo(document.body) //don't move modals dom position
} }
that.$element that.$element.show()
.show()
if (transition) { if (transition) {
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
...@@ -139,12 +138,13 @@ ...@@ -139,12 +138,13 @@
}) })
} }
, hideModal: function (that) { , hideModal: function () {
this.$element var that = this
.hide() this.$element.hide()
.trigger('hidden') this.backdrop(function () {
that.removeBackdrop()
this.backdrop() that.$element.trigger('hidden')
})
} }
, removeBackdrop: function () { , removeBackdrop: function () {
...@@ -172,6 +172,8 @@ ...@@ -172,6 +172,8 @@
this.$backdrop.addClass('in') this.$backdrop.addClass('in')
if (!callback) return
doAnimate ? doAnimate ?
this.$backdrop.one($.support.transition.end, callback) : this.$backdrop.one($.support.transition.end, callback) :
callback() callback()
...@@ -180,8 +182,8 @@ ...@@ -180,8 +182,8 @@
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade')?
this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) : this.$backdrop.one($.support.transition.end, callback) :
this.removeBackdrop() callback()
} else if (callback) { } else if (callback) {
callback() callback()
......
/* =========================================================== /* ===========================================================
* bootstrap-popover.js v2.2.2 * bootstrap-popover.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#popovers * http://twitter.github.com/bootstrap/javascript.html#popovers
* =========================================================== * ===========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -58,8 +58,8 @@ ...@@ -58,8 +58,8 @@
, $e = this.$element , $e = this.$element
, o = this.options , o = this.options
content = $e.attr('data-content') content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) || $e.attr('data-content')
return content return content
} }
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
placement: 'right' placement: 'right'
, trigger: 'click' , trigger: 'click'
, content: '' , 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 @@ ...@@ -111,4 +111,4 @@
return this return this
} }
}(window.jQuery); }(window.jQuery);
\ No newline at end of file
/* ============================================================= /* =============================================================
* bootstrap-scrollspy.js v2.2.2 * bootstrap-scrollspy.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#scrollspy * http://twitter.github.com/bootstrap/javascript.html#scrollspy
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
, $href = /^#\w/.test(href) && $(href) , $href = /^#\w/.test(href) && $(href)
return ( $href return ( $href
&& $href.length && $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] }) .sort(function (a, b) { return a[0] - b[0] })
.each(function () { .each(function () {
......
/* ======================================================== /* ========================================================
* bootstrap-tab.js v2.2.2 * bootstrap-tab.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tabs * http://twitter.github.com/bootstrap/javascript.html#tabs
* ======================================================== * ========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* =========================================================== /* ===========================================================
* bootstrap-tooltip.js v2.2.2 * bootstrap-tooltip.js v2.3.0
* 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
* =========================================================== * ===========================================================
...@@ -38,19 +38,27 @@ ...@@ -38,19 +38,27 @@
, init: function (type, element, options) { , init: function (type, element, options) {
var eventIn var eventIn
, eventOut , eventOut
, triggers
, trigger
, i
this.type = type this.type = type
this.$element = $(element) this.$element = $(element)
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.enabled = true this.enabled = true
if (this.options.trigger == 'click') { triggers = this.options.trigger.split(' ')
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (this.options.trigger != 'manual') { for (i = triggers.length; i--;) {
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' trigger = triggers[i]
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' if (trigger == 'click') {
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, 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 ? this.options.selector ?
...@@ -59,7 +67,7 @@ ...@@ -59,7 +67,7 @@
} }
, getOptions: function (options) { , 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') { if (options.delay && typeof options.delay == 'number') {
options.delay = { options.delay = {
...@@ -97,14 +105,16 @@ ...@@ -97,14 +105,16 @@
, show: function () { , show: function () {
var $tip var $tip
, inside
, pos , pos
, actualWidth , actualWidth
, actualHeight , actualHeight
, placement , placement
, tp , tp
, e = $.Event('show')
if (this.hasContent() && this.enabled) { if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$tip = this.tip() $tip = this.tip()
this.setContent() this.setContent()
...@@ -116,19 +126,18 @@ ...@@ -116,19 +126,18 @@
this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement.call(this, $tip[0], this.$element[0]) :
this.options.placement this.options.placement
inside = /in/.test(placement)
$tip $tip
.detach() .detach()
.css({ top: 0, left: 0, display: 'block' }) .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 actualWidth = $tip[0].offsetWidth
actualHeight = $tip[0].offsetHeight actualHeight = $tip[0].offsetHeight
switch (inside ? placement.split(' ')[1] : placement) { switch (placement) {
case 'bottom': case 'bottom':
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
break break
...@@ -143,11 +152,56 @@ ...@@ -143,11 +152,56 @@
break break
} }
$tip this.applyPlacement(tp, placement)
.offset(tp) this.$element.trigger('shown')
.addClass(placement) }
.addClass('in') }
, 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 () { , setContent: function () {
...@@ -161,6 +215,10 @@ ...@@ -161,6 +215,10 @@
, hide: function () { , hide: function () {
var that = this var that = this
, $tip = this.tip() , $tip = this.tip()
, e = $.Event('hide')
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$tip.removeClass('in') $tip.removeClass('in')
...@@ -179,13 +237,15 @@ ...@@ -179,13 +237,15 @@
removeWithAnimation() : removeWithAnimation() :
$tip.detach() $tip.detach()
this.$element.trigger('hidden')
return this return this
} }
, fixTitle: function () { , fixTitle: function () {
var $e = this.$element var $e = this.$element
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { 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 +253,12 @@ ...@@ -193,11 +253,12 @@
return this.getTitle() return this.getTitle()
} }
, getPosition: function (inside) { , getPosition: function () {
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), { var el = this.$element[0]
width: this.$element[0].offsetWidth return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
, height: this.$element[0].offsetHeight width: el.offsetWidth
}) , height: el.offsetHeight
}, this.$element.offset())
} }
, getTitle: function () { , getTitle: function () {
...@@ -215,6 +276,10 @@ ...@@ -215,6 +276,10 @@
return this.$tip = this.$tip || $(this.options.template) return this.$tip = this.$tip || $(this.options.template)
} }
, arrow: function(){
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
}
, validate: function () { , validate: function () {
if (!this.$element[0].parentNode) { if (!this.$element[0].parentNode) {
this.hide() this.hide()
...@@ -236,8 +301,8 @@ ...@@ -236,8 +301,8 @@
} }
, toggle: function (e) { , toggle: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
self[self.tip().hasClass('in') ? 'hide' : 'show']() self.tip().hasClass('in') ? self.hide() : self.show()
} }
, destroy: function () { , destroy: function () {
...@@ -269,10 +334,11 @@ ...@@ -269,10 +334,11 @@
, placement: 'top' , placement: 'top'
, selector: false , selector: false
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
, trigger: 'hover' , trigger: 'hover focus'
, title: '' , title: ''
, delay: 0 , delay: 0
, html: false , html: false
, container: false
} }
...@@ -284,4 +350,4 @@ ...@@ -284,4 +350,4 @@
return this return this
} }
}(window.jQuery); }(window.jQuery);
\ No newline at end of file
/* =================================================== /* ===================================================
* bootstrap-transition.js v2.2.2 * bootstrap-transition.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#transitions * http://twitter.github.com/bootstrap/javascript.html#transitions
* =================================================== * ===================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ============================================================= /* =============================================================
* bootstrap-typeahead.js v2.2.2 * bootstrap-typeahead.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#typeahead * http://twitter.github.com/bootstrap/javascript.html#typeahead
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -172,6 +172,7 @@ ...@@ -172,6 +172,7 @@
, listen: function () { , listen: function () {
this.$element this.$element
.on('focus', $.proxy(this.focus, this))
.on('blur', $.proxy(this.blur, this)) .on('blur', $.proxy(this.blur, this))
.on('keypress', $.proxy(this.keypress, this)) .on('keypress', $.proxy(this.keypress, this))
.on('keyup', $.proxy(this.keyup, this)) .on('keyup', $.proxy(this.keyup, this))
...@@ -183,6 +184,7 @@ ...@@ -183,6 +184,7 @@
this.$menu this.$menu
.on('click', $.proxy(this.click, this)) .on('click', $.proxy(this.click, this))
.on('mouseenter', 'li', $.proxy(this.mouseenter, this)) .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
} }
, eventSupported: function(eventName) { , eventSupported: function(eventName) {
...@@ -256,22 +258,33 @@ ...@@ -256,22 +258,33 @@
e.preventDefault() e.preventDefault()
} }
, focus: function (e) {
this.focused = true
}
, blur: function (e) { , blur: function (e) {
var that = this this.focused = false
setTimeout(function () { that.hide() }, 150) if (!this.mousedover && this.shown) this.hide()
} }
, click: function (e) { , click: function (e) {
e.stopPropagation() e.stopPropagation()
e.preventDefault() e.preventDefault()
this.select() this.select()
this.$element.focus()
} }
, mouseenter: function (e) { , mouseenter: function (e) {
this.mousedover = true
this.$menu.find('.active').removeClass('active') this.$menu.find('.active').removeClass('active')
$(e.currentTarget).addClass('active') $(e.currentTarget).addClass('active')
} }
, mouseleave: function (e) {
this.mousedover = false
if (!this.focused && this.shown) this.hide()
}
} }
...@@ -316,7 +329,6 @@ ...@@ -316,7 +329,6 @@
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
var $this = $(this) var $this = $(this)
if ($this.data('typeahead')) return if ($this.data('typeahead')) return
e.preventDefault()
$this.typeahead($this.data()) $this.typeahead($this.data())
}) })
......
This diff is collapsed.
This diff is collapsed.
/* /*
Holder - 1.6 - client side image placeholders Holder - 1.9 - client side image placeholders
(c) 2012 Ivan Malopinsky / http://imsky.co (c) 2012-2013 Ivan Malopinsky / http://imsky.co
Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
Commercial use requires attribution. Commercial use requires attribution.
...@@ -33,6 +33,13 @@ function selector(a){ ...@@ -33,6 +33,13 @@ function selector(a){
//shallow object property extend //shallow object property extend
function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c} function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}
//hasOwnProperty polyfill
if (!Object.prototype.hasOwnProperty)
Object.prototype.hasOwnProperty = function(prop) {
var proto = this.__proto__ || this.constructor.prototype;
return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);
}
function text_size(width, height, template) { function text_size(width, height, template) {
var dimension_arr = [height, width].sort(); var dimension_arr = [height, width].sort();
var maxFactor = Math.round(dimension_arr[1] / 16), var maxFactor = Math.round(dimension_arr[1] / 16),
...@@ -47,6 +54,7 @@ function draw(ctx, dimensions, template, ratio) { ...@@ -47,6 +54,7 @@ function draw(ctx, dimensions, template, ratio) {
var ts = text_size(dimensions.width, dimensions.height, template); var ts = text_size(dimensions.width, dimensions.height, template);
var text_height = ts.height; var text_height = ts.height;
var width = dimensions.width * ratio, height = dimensions.height * ratio; var width = dimensions.width * ratio, height = dimensions.height * ratio;
var font = template.font ? template.font : "sans-serif";
canvas.width = width; canvas.width = width;
canvas.height = height; canvas.height = height;
ctx.textAlign = "center"; ctx.textAlign = "center";
...@@ -54,39 +62,42 @@ function draw(ctx, dimensions, template, ratio) { ...@@ -54,39 +62,42 @@ function draw(ctx, dimensions, template, ratio) {
ctx.fillStyle = template.background; ctx.fillStyle = template.background;
ctx.fillRect(0, 0, width, height); ctx.fillRect(0, 0, width, height);
ctx.fillStyle = template.foreground; ctx.fillStyle = template.foreground;
ctx.font = "bold " + text_height + "px sans-serif"; ctx.font = "bold " + text_height + "px "+font;
var text = template.text ? template.text : (dimensions.width + "x" + dimensions.height); var text = template.text ? template.text : (dimensions.width + "x" + dimensions.height);
if (ctx.measureText(text).width / width > 1) { if (ctx.measureText(text).width / width > 1) {
text_height = template.size / (ctx.measureText(text).width / width); text_height = template.size / (ctx.measureText(text).width / width);
} }
ctx.font = "bold " + (text_height * ratio) + "px sans-serif"; //Resetting font size if necessary
ctx.font = "bold " + (text_height * ratio) + "px "+font;
ctx.fillText(text, (width / 2), (height / 2), width); ctx.fillText(text, (width / 2), (height / 2), width);
return canvas.toDataURL("image/png"); return canvas.toDataURL("image/png");
} }
function render(mode, el, holder, src) { function render(mode, el, holder, src) {
var dimensions = holder.dimensions, var dimensions = holder.dimensions,
theme = holder.theme, theme = holder.theme,
text = holder.text; text = holder.text ? decodeURIComponent(holder.text) : holder.text;
var dimensions_caption = dimensions.width + "x" + dimensions.height; var dimensions_caption = dimensions.width + "x" + dimensions.height;
theme = (text ? extend(theme, { theme = (text ? extend(theme, { text: text }) : theme);
text: text theme = (holder.font ? extend(theme, {font: holder.font}) : theme);
}) : theme);
var ratio = 1; var ratio = 1;
if(window.devicePixelRatio && window.devicePixelRatio > 1){ if(window.devicePixelRatio && window.devicePixelRatio > 1){
ratio = window.devicePixelRatio; ratio = window.devicePixelRatio;
} }
if (mode == "image") { if (mode == "image") {
el.setAttribute("data-src", src); el.setAttribute("data-src", src);
el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption); el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
el.style.width = dimensions.width + "px";
el.style.height = dimensions.height + "px"; if(fallback || !holder.auto){
el.style.width = dimensions.width + "px";
el.style.height = dimensions.height + "px";
}
if (fallback) { if (fallback) {
el.style.backgroundColor = theme.background; el.style.backgroundColor = theme.background;
} }
else{ else{
el.setAttribute("src", draw(ctx, dimensions, theme, ratio)); el.setAttribute("src", draw(ctx, dimensions, theme, ratio));
...@@ -108,14 +119,7 @@ function fluid(el, holder, src) { ...@@ -108,14 +119,7 @@ function fluid(el, holder, src) {
text: text text: text
}) : theme); }) : theme);
var fluid = document.createElement("table"); var fluid = document.createElement("div");
fluid.setAttribute("cellspacing",0)
fluid.setAttribute("cellpadding",0)
fluid.setAttribute("border",0)
var row = document.createElement("tr")
.appendChild(document.createElement("td")
.appendChild(document.createTextNode(theme.text)));
fluid.style.backgroundColor = theme.background; fluid.style.backgroundColor = theme.background;
fluid.style.color = theme.foreground; fluid.style.color = theme.foreground;
...@@ -124,31 +128,38 @@ function fluid(el, holder, src) { ...@@ -124,31 +128,38 @@ function fluid(el, holder, src) {
fluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf("%")>0?"":"px"); fluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf("%")>0?"":"px");
fluid.id = el.id; fluid.id = el.id;
var frag = document.createDocumentFragment(), el.style.width=0;
tbody = document.createElement("tbody"), el.style.height=0;
tr = document.createElement("tr"),
td = document.createElement("td");
tr.appendChild(td);
tbody.appendChild(tr);
frag.appendChild(tbody);
if (theme.text) { if (theme.text) {
td.appendChild(document.createTextNode(theme.text)) fluid.appendChild(document.createTextNode(theme.text))
fluid.appendChild(frag);
} else { } else {
td.appendChild(document.createTextNode(dimensions_caption)) fluid.appendChild(document.createTextNode(dimensions_caption))
fluid.appendChild(frag);
fluid_images.push(fluid); fluid_images.push(fluid);
setTimeout(fluid_update, 0); setTimeout(fluid_update, 0);
} }
el.parentNode.replaceChild(fluid, el); el.parentNode.insertBefore(fluid, el.nextSibling)
if(window.jQuery){
jQuery(function($){
$(el).on("load", function(){
el.style.width = fluid.style.width;
el.style.height = fluid.style.height;
$(el).show();
$(fluid).remove();
});
})
}
} }
function fluid_update() { function fluid_update() {
for (i in fluid_images) { for (i in fluid_images) {
var el = fluid_images[i]; if(!fluid_images.hasOwnProperty(i)) continue;
var label = el.getElementsByTagName("td")[0].firstChild; var el = fluid_images[i],
label = el.firstChild;
el.style.lineHeight = el.offsetHeight+"px";
label.data = el.offsetWidth + "x" + el.offsetHeight; label.data = el.offsetWidth + "x" + el.offsetHeight;
} }
} }
...@@ -175,6 +186,11 @@ function parse_flags(flags, options) { ...@@ -175,6 +186,11 @@ function parse_flags(flags, options) {
ret.theme = options.themes[flag]; ret.theme = options.themes[flag];
} else if (app.flags.text.match(flag)) { } else if (app.flags.text.match(flag)) {
ret.text = app.flags.text.output(flag); ret.text = app.flags.text.output(flag);
} else if(app.flags.font.match(flag)){
ret.font = app.flags.font.output(flag);
}
else if(app.flags.auto.match(flag)){
ret.auto = true;
} }
} }
...@@ -199,7 +215,7 @@ var fluid_images = []; ...@@ -199,7 +215,7 @@ var fluid_images = [];
var settings = { var settings = {
domain: "holder.js", domain: "holder.js",
images: "img", images: "img",
elements: ".holderjs", bgnodes: ".holderjs",
themes: { themes: {
"gray": { "gray": {
background: "#eee", background: "#eee",
...@@ -217,13 +233,13 @@ var settings = { ...@@ -217,13 +233,13 @@ var settings = {
size: 12 size: 12
} }
}, },
stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;border-collapse:collapse;border:0;vertical-align:middle;margin:0}" stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}"
}; };
app.flags = { app.flags = {
dimensions: { dimensions: {
regex: /(\d+)x(\d+)/, regex: /^(\d+)x(\d+)$/,
output: function (val) { output: function (val) {
var exec = this.regex.exec(val); var exec = this.regex.exec(val);
return { return {
...@@ -233,7 +249,7 @@ app.flags = { ...@@ -233,7 +249,7 @@ app.flags = {
} }
}, },
fluid: { fluid: {
regex: /([0-9%]+)x([0-9%]+)/, regex: /^([0-9%]+)x([0-9%]+)$/,
output: function (val) { output: function (val) {
var exec = this.regex.exec(val); var exec = this.regex.exec(val);
return { return {
...@@ -258,10 +274,20 @@ app.flags = { ...@@ -258,10 +274,20 @@ app.flags = {
output: function (val) { output: function (val) {
return this.regex.exec(val)[1]; return this.regex.exec(val)[1];
} }
},
font: {
regex: /font\:(.*)/,
output: function(val){
return this.regex.exec(val)[1];
}
},
auto: {
regex: /^auto$/
} }
} }
for (var flag in app.flags) { for (var flag in app.flags) {
if(!app.flags.hasOwnProperty(flag)) continue;
app.flags[flag].match = function (val) { app.flags[flag].match = function (val) {
return val.match(this.regex) return val.match(this.regex)
} }
...@@ -285,29 +311,58 @@ app.add_image = function (src, el) { ...@@ -285,29 +311,58 @@ app.add_image = function (src, el) {
}; };
app.run = function (o) { app.run = function (o) {
var options = extend(settings, o), var options = extend(settings, o), images = [];
images_nodes = selector(options.images),
elements = selector(options.elements), if(options.images instanceof window.NodeList){
preempted = true, imageNodes = options.images;
images = []; }
else if(options.images instanceof window.Node){
imageNodes = [options.images];
}
else{
imageNodes = selector(options.images);
}
if(options.elements instanceof window.NodeList){
bgnodes = options.bgnodes;
}
else if(options.bgnodes instanceof window.Node){
bgnodes = [options.bgnodes];
}
else{
bgnodes = selector(options.bgnodes);
}
for (i = 0, l = images_nodes.length; i < l; i++) images.push(images_nodes[i]); preempted = true;
var holdercss = document.createElement("style"); for (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]);
holdercss.type = "text/css";
holdercss.styleSheet ? holdercss.styleSheet.cssText = options.stylesheet : holdercss.textContent = options.stylesheet; var holdercss = document.getElementById("holderjs-style");
document.getElementsByTagName("head")[0].appendChild(holdercss);
if(!holdercss){
holdercss = document.createElement("style");
holdercss.setAttribute("id", "holderjs-style");
holdercss.type = "text/css";
document.getElementsByTagName("head")[0].appendChild(holdercss);
}
if(holdercss.styleSheet){
holdercss.styleSheet += options.stylesheet;
}
else{
holdercss.textContent+= options.stylesheet;
}
var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)"); var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)");
for (var l = elements.length, i = 0; i < l; i++) { for (var l = bgnodes.length, i = 0; i < l; i++) {
var src = window.getComputedStyle(elements[i], null) var src = window.getComputedStyle(bgnodes[i], null)
.getPropertyValue("background-image"); .getPropertyValue("background-image");
var flags = src.match(cssregex); var flags = src.match(cssregex);
if (flags) { if (flags) {
var holder = parse_flags(flags[1].split("/"), options); var holder = parse_flags(flags[1].split("/"), options);
if (holder) { if (holder) {
render("background", elements[i], holder, src); render("background", bgnodes[i], holder, src);
} }
} }
} }
...@@ -339,4 +394,8 @@ contentLoaded(win, function () { ...@@ -339,4 +394,8 @@ contentLoaded(win, function () {
preempted || app.run(); preempted || app.run();
}); });
})(Holder, window); if ( typeof define === "function" && define.amd ) {
define( "Holder", [], function () { return app; } );
}
})(Holder, window);
\ No newline at end of file
/*
HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -170,6 +170,19 @@ ...@@ -170,6 +170,19 @@
<p><span class="label label-info">Heads up!</span> Feel free to use <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code> in HTML5. <code>&lt;b&gt;</code> is meant to highlight words or phrases without conveying additional importance while <code>&lt;i&gt;</code> is mostly for voice, technical terms, etc.</p> <p><span class="label label-info">Heads up!</span> Feel free to use <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code> in HTML5. <code>&lt;b&gt;</code> is meant to highlight words or phrases without conveying additional importance while <code>&lt;i&gt;</code> is mostly for voice, technical terms, etc.</p>
<h3>Alignment classes</h3>
<p>Easily realign text to components with text alignment classes.</p>
<div class="bs-docs-example">
<p class="text-left">Left aligned text.</p>
<p class="text-center">Center aligned text.</p>
<p class="text-right">Right aligned text.</p>
</div>
<pre class="prettyprint linenums">
&lt;p class="text-left"&gt;Left aligned text.&lt;/p&gt;
&lt;p class="text-center"&gt;Center aligned text.&lt;/p&gt;
&lt;p class="text-right"&gt;Right aligned text.&lt;/p&gt;
</pre>
<h3>Emphasis classes</h3> <h3>Emphasis classes</h3>
<p>Convey meaning through color with a handful of emphasis utility classes.</p> <p>Convey meaning through color with a handful of emphasis utility classes.</p>
<div class="bs-docs-example"> <div class="bs-docs-example">
...@@ -453,7 +466,7 @@ ...@@ -453,7 +466,7 @@
For example, <code>&lt;section&gt;</code> should be wrapped as inline. For example, <code>&lt;section&gt;</code> should be wrapped as inline.
</div> </div>
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inline. For example, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; should be wrapped as inline.
</pre> </pre>
<h2>Basic block</h2> <h2>Basic block</h2>
...@@ -527,7 +540,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -527,7 +540,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
<p>Add any of the following classes to the <code>.table</code> base class.</p> <p>Add any of the following classes to the <code>.table</code> base class.</p>
<h3><code>.table-striped</code></h3> <h3><code>.table-striped</code></h3>
<p>Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-IE8).</p> <p>Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-8).</p>
<div class="bs-docs-example"> <div class="bs-docs-example">
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
...@@ -844,8 +857,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -844,8 +857,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
<code>&lt;th&gt;</code> <code>&lt;th&gt;</code>
</td> </td>
<td> <td>
Special table cell for column (or row, depending on scope and placement) labels<br> Special table cell for column (or row, depending on scope and placement) labels
Must be used within a <code>&lt;thead&gt;</code>
</td> </td>
</tr> </tr>
<tr> <tr>
...@@ -1522,7 +1534,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -1522,7 +1534,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
</pre> </pre>
<h3>Form actions</h3> <h3>Form actions</h3>
<p>End a form with a group of actions (buttons). When placed within a <code>.form-horizontal</code>, the buttons will automatically indent to line up with the form controls.</p> <p>End a form with a group of actions (buttons). When placed within a <code>.form-actions</code>, the buttons will automatically indent to line up with the form controls.</p>
<form class="bs-docs-example"> <form class="bs-docs-example">
<div class="form-actions"> <div class="form-actions">
<button type="submit" class="btn btn-primary">Save changes</button> <button type="submit" class="btn btn-primary">Save changes</button>
...@@ -1572,7 +1584,8 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -1572,7 +1584,8 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
</pre> </pre>
<h3>Invalid inputs</h3> <h3>Invalid inputs</h3>
<p>Style inputs via default browser functionality with <code>:invalid</code>. Specify a <code>type</code> and add the <code>required</code> attribute.</p> <p>Style inputs via default browser functionality with <code>:invalid</code>. Specify a <code>type</code>, add the <code>required</code> attribute if the field is not optional, and (if applicable) specify a <code>pattern</code>.</p>
<p>This is not available in versions of Internet Explorer 7-9 due to lack of support for CSS pseudo selectors.</p>
<form class="bs-docs-example form-inline"> <form class="bs-docs-example form-inline">
<input class="span3" type="email" placeholder="test@example.com" required> <input class="span3" type="email" placeholder="test@example.com" required>
</form> </form>
...@@ -1630,6 +1643,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -1630,6 +1643,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
&lt;span class="help-inline"&gt;Something may have gone wrong&lt;/span&gt; &lt;span class="help-inline"&gt;Something may have gone wrong&lt;/span&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;div class="control-group error"&gt; &lt;div class="control-group error"&gt;
&lt;label class="control-label" for="inputError"&gt;Input with error&lt;/label&gt; &lt;label class="control-label" for="inputError"&gt;Input with error&lt;/label&gt;
&lt;div class="controls"&gt; &lt;div class="controls"&gt;
...@@ -1637,6 +1651,15 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -1637,6 +1651,15 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
&lt;span class="help-inline"&gt;Please correct the error&lt;/span&gt; &lt;span class="help-inline"&gt;Please correct the error&lt;/span&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;div class="control-group info"&gt;
&lt;label class="control-label" for="inputInfo"&gt;Input with info&lt;/label&gt;
&lt;div class="controls"&gt;
&lt;input type="text" id="inputInfo"&gt;
&lt;span class="help-inline"&gt;Username is already taken&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="control-group success"&gt; &lt;div class="control-group success"&gt;
&lt;label class="control-label" for="inputSuccess"&gt;Input with success&lt;/label&gt; &lt;label class="control-label" for="inputSuccess"&gt;Input with success&lt;/label&gt;
&lt;div class="controls"&gt; &lt;div class="controls"&gt;
...@@ -2041,7 +2064,6 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -2041,7 +2064,6 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="btn-toolbar"&gt; &lt;div class="btn-toolbar"&gt;
&lt;div class="btn-group"&gt; &lt;div class="btn-group"&gt;
&lt;a class="btn" href="#"&gt;&lt;i class="icon-align-left"&gt;&lt;/i&gt;&lt;/a&gt; &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-left"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a class="btn" href="#"&gt;&lt;i class="icon-align-center"&gt;&lt;/i&gt;&lt;/a&gt; &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-center"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a class="btn" href="#"&gt;&lt;i class="icon-align-right"&gt;&lt;/i&gt;&lt;/a&gt; &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-right"&gt;&lt;/i&gt;&lt;/a&gt;
...@@ -2156,7 +2178,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin ...@@ -2156,7 +2178,7 @@ For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inlin
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -161,6 +161,25 @@ ...@@ -161,6 +161,25 @@
&lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"&gt; &lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"&gt;
... ...
&lt;/ul&gt; &lt;/ul&gt;
</pre>
<h3>Disabled menu options</h3>
<p>Add <code>.disabled</code> to a <code>&lt;li&gt;</code> in the dropdown to disable the link.</p>
<div class="bs-docs-example">
<div class="dropdown clearfix">
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
<li><a tabindex="-1" href="#">Regular link</a></li>
<li class="disabled"><a tabindex="-1" href="#">Disabled link</a></li>
<li><a tabindex="-1" href="#">Another link</a></li>
</ul>
</div>
</div>
<pre class="prettyprint linenums">
&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"&gt;
&lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Regular link&lt;/a&gt;&lt;/li&gt;
&lt;li class="disabled"&gt;&lt;a tabindex="-1" href="#"&gt;Disabled link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Another link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre> </pre>
<h3>Sub menus on dropdowns</h3> <h3>Sub menus on dropdowns</h3>
...@@ -272,9 +291,9 @@ ...@@ -272,9 +291,9 @@
</div> </div>
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="btn-group"&gt; &lt;div class="btn-group"&gt;
&lt;button class="btn"&gt;1&lt;/button&gt; &lt;button class="btn"&gt;Left&lt;/button&gt;
&lt;button class="btn"&gt;2&lt;/button&gt; &lt;button class="btn"&gt;Middle&lt;/button&gt;
&lt;button class="btn"&gt;3&lt;/button&gt; &lt;button class="btn"&gt;Right&lt;/button&gt;
&lt;/div&gt; &lt;/div&gt;
</pre> </pre>
...@@ -1496,6 +1515,7 @@ ...@@ -1496,6 +1515,7 @@
&lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;/ul&gt;
&lt;/div&gt; &lt;/div&gt;
...@@ -1525,7 +1545,7 @@ ...@@ -1525,7 +1545,7 @@
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="pagination"&gt; &lt;div class="pagination"&gt;
&lt;ul&gt; &lt;ul&gt;
&lt;li class="disabled"&gt;&lt;a href="#"&gt;Prev&lt;/a&gt;&lt;/li&gt; &lt;li class="disabled"&gt;&lt;a href="#"&gt;&amp;laquo;&lt;/a&gt;&lt;/li&gt;
&lt;li class="active"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt; &lt;li class="active"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;
... ...
&lt;/ul&gt; &lt;/ul&gt;
...@@ -1535,7 +1555,7 @@ ...@@ -1535,7 +1555,7 @@
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="pagination"&gt; &lt;div class="pagination"&gt;
&lt;ul&gt; &lt;ul&gt;
&lt;li class="disabled"&gt;&lt;span&gt;Prev&lt;/span&gt;&lt;/li&gt; &lt;li class="disabled"&gt;&lt;span&gt;&amp;laquo;&lt;/span&gt;&lt;/li&gt;
&lt;li class="active"&gt;&lt;span&gt;1&lt;/span&gt;&lt;/li&gt; &lt;li class="active"&gt;&lt;span&gt;1&lt;/span&gt;&lt;/li&gt;
... ...
&lt;/ul&gt; &lt;/ul&gt;
...@@ -2488,7 +2508,7 @@ ...@@ -2488,7 +2508,7 @@
<p><button class="close" style="float: none;">&times;</button></p> <p><button class="close" style="float: none;">&times;</button></p>
</div> </div>
<pre class="prettyprint linenums">&lt;button class="close"&gt;&amp;times;&lt;/button&gt;</pre> <pre class="prettyprint linenums">&lt;button class="close"&gt;&amp;times;&lt;/button&gt;</pre>
<p>iOS devices require an href="#" for click events if you would rather use an anchor.</p> <p>iOS devices require an <code>href="#"</code> for click events if you would rather use an anchor.</p>
<pre class="prettyprint linenums">&lt;a class="close" href="#"&gt;&amp;times;&lt;/a&gt;</pre> <pre class="prettyprint linenums">&lt;a class="close" href="#"&gt;&amp;times;&lt;/a&gt;</pre>
<h2>Helper classes</h2> <h2>Helper classes</h2>
...@@ -2569,7 +2589,7 @@ class="clearfix" ...@@ -2569,7 +2589,7 @@ class="clearfix"
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -477,7 +477,7 @@ ...@@ -477,7 +477,7 @@
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
/* CUSTOMIZE THE NAVBAR /* CUSTOMIZE THE CAROUSEL
-------------------------------------------------- */ -------------------------------------------------- */
/* Carousel base class */ /* Carousel base class */
...@@ -88,6 +88,7 @@ ...@@ -88,6 +88,7 @@
text-shadow: 0 1px 1px rgba(0,0,0,.4); text-shadow: 0 1px 1px rgba(0,0,0,.4);
background-color: transparent; background-color: transparent;
border: 0; border: 0;
z-index: 10;
} }
.carousel .item { .carousel .item {
...@@ -254,7 +255,7 @@ ...@@ -254,7 +255,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -278,11 +279,11 @@ ...@@ -278,11 +279,11 @@
<div class="navbar navbar-inverse"> <div class="navbar navbar-inverse">
<div class="navbar-inner"> <div class="navbar-inner">
<!-- Responsive Navbar Part 1: Button for triggering responsive navbar (not covered in tutorial). Include responsive CSS to utilize. --> <!-- Responsive Navbar Part 1: Button for triggering responsive navbar (not covered in tutorial). Include responsive CSS to utilize. -->
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </button>
<a class="brand" href="#">Project name</a> <a class="brand" href="#">Project name</a>
<!-- Responsive Navbar Part 2: Place all navbar contents you want collapsed withing .navbar-collapse.collapse. --> <!-- Responsive Navbar Part 2: Place all navbar contents you want collapsed withing .navbar-collapse.collapse. -->
<div class="nav-collapse collapse"> <div class="nav-collapse collapse">
...@@ -417,7 +418,7 @@ ...@@ -417,7 +418,7 @@
<!-- FOOTER --> <!-- FOOTER -->
<footer> <footer>
<p class="pull-right"><a href="#">Back to top</a></p> <p class="pull-right"><a href="#">Back to top</a></p>
<p>&copy; 2012 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p> <p>&copy; 2013 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
</footer> </footer>
</div><!-- /.container --> </div><!-- /.container -->
...@@ -448,5 +449,6 @@ ...@@ -448,5 +449,6 @@
}) })
}(window.jQuery) }(window.jQuery)
</script> </script>
<script src="../assets/js/holder/holder.js"></script>
</body> </body>
</html> </html>
...@@ -17,12 +17,21 @@ ...@@ -17,12 +17,21 @@
.sidebar-nav { .sidebar-nav {
padding: 9px 0; padding: 9px 0;
} }
@media (max-width: 980px) {
/* Enable use of floated navbar text */
.navbar-text.pull-right {
float: none;
padding-left: 5px;
padding-right: 5px;
}
}
</style> </style>
<link href="../assets/css/bootstrap-responsive.css" rel="stylesheet"> <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -38,11 +47,11 @@ ...@@ -38,11 +47,11 @@
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </button>
<a class="brand" href="#">Project name</a> <a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse"> <div class="nav-collapse collapse">
<p class="navbar-text pull-right"> <p class="navbar-text pull-right">
...@@ -86,7 +95,7 @@ ...@@ -86,7 +95,7 @@
<div class="hero-unit"> <div class="hero-unit">
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p> <p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
<p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p> <p><a href="#" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span4"> <div class="span4">
...@@ -128,7 +137,7 @@ ...@@ -128,7 +137,7 @@
<hr> <hr>
<footer> <footer>
<p>&copy; Company 2012</p> <p>&copy; Company 2013</p>
</footer> </footer>
</div><!--/.fluid-container--> </div><!--/.fluid-container-->
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -35,11 +35,11 @@ ...@@ -35,11 +35,11 @@
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </button>
<a class="brand" href="#">Project name</a> <a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<div class="hero-unit"> <div class="hero-unit">
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p> <p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
<p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p> <p><a href="#" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
</div> </div>
<!-- Example row of columns --> <!-- Example row of columns -->
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
<hr> <hr>
<footer> <footer>
<p>&copy; Company 2012</p> <p>&copy; Company 2013</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
......
...@@ -57,6 +57,8 @@ ...@@ -57,6 +57,8 @@
} }
.navbar .nav { .navbar .nav {
margin: 0; margin: 0;
display: table;
width: 100%;
} }
.navbar .nav li { .navbar .nav li {
display: table-cell; display: table-cell;
...@@ -82,7 +84,7 @@ ...@@ -82,7 +84,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -146,7 +148,7 @@ ...@@ -146,7 +148,7 @@
<hr> <hr>
<div class="footer"> <div class="footer">
<p>&copy; Company 2012</p> <p>&copy; Company 2013</p>
</div> </div>
</div> <!-- /container --> </div> <!-- /container -->
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
<hr> <hr>
<div class="footer"> <div class="footer">
<p>&copy; Company 2012</p> <p>&copy; Company 2013</p>
</div> </div>
</div> <!-- /container --> </div> <!-- /container -->
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -34,11 +34,11 @@ ...@@ -34,11 +34,11 @@
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </button>
<a class="brand" href="#">Project name</a> <a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse"> <div class="nav-collapse collapse">
<ul class="nav"> <ul class="nav">
......
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Sticky footer &middot; Twitter Bootstrap</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<!-- CSS -->
<link href="../assets/css/bootstrap.css" rel="stylesheet">
<style type="text/css">
/* Sticky footer styles
-------------------------------------------------- */
html,
body {
height: 100%;
/* The html and body elements cannot have any padding or margin. */
}
/* Wrapper for page content to push down footer */
#wrap {
min-height: 100%;
height: auto !important;
height: 100%;
/* Negative indent footer by it's height */
margin: 0 auto -60px;
}
/* Set the fixed height of the footer here */
#push,
#footer {
height: 60px;
}
#footer {
background-color: #f5f5f5;
}
/* Lastly, apply responsive CSS fixes as necessary */
@media (max-width: 767px) {
#footer {
margin-left: -20px;
margin-right: -20px;
padding-left: 20px;
padding-right: 20px;
}
}
/* Custom page CSS
-------------------------------------------------- */
/* Not required for template or sticky footer method. */
#wrap > .container {
padding-top: 60px;
}
.container .credit {
margin: 20px 0;
}
code {
font-size: 80%;
}
</style>
<link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="../assets/js/html5shiv.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<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="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="shortcut icon" href="../assets/ico/favicon.png">
</head>
<body>
<!-- Part 1: Wrap all page content here -->
<div id="wrap">
<!-- Fixed navbar -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Begin page content -->
<div class="container">
<div class="page-header">
<h1>Sticky footer with fixed navbar</h1>
</div>
<p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added within <code>#wrap</code> with <code>padding-top: 60px;</code> on the <code>.container</code>.</p>
<p>Back to <a href="./sticky-footer.html">the sticky footer</a> minus the navbar.</p>
</div>
<div id="push"></div>
</div>
<div id="footer">
<div class="container">
<p class="muted credit">Example courtesy <a href="http://martinbean.co.uk">Martin Bean</a> and <a href="http://ryanfait.com/sticky-footer/">Ryan Fait</a>.</p>
</div>
</div>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="../assets/js/jquery.js"></script>
<script src="../assets/js/bootstrap-transition.js"></script>
<script src="../assets/js/bootstrap-alert.js"></script>
<script src="../assets/js/bootstrap-modal.js"></script>
<script src="../assets/js/bootstrap-dropdown.js"></script>
<script src="../assets/js/bootstrap-scrollspy.js"></script>
<script src="../assets/js/bootstrap-tab.js"></script>
<script src="../assets/js/bootstrap-tooltip.js"></script>
<script src="../assets/js/bootstrap-popover.js"></script>
<script src="../assets/js/bootstrap-button.js"></script>
<script src="../assets/js/bootstrap-collapse.js"></script>
<script src="../assets/js/bootstrap-carousel.js"></script>
<script src="../assets/js/bootstrap-typeahead.js"></script>
</body>
</html>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="../assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Fav and touch icons --> <!-- Fav and touch icons -->
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
<h1>Sticky footer</h1> <h1>Sticky footer</h1>
</div> </div>
<p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.</p> <p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.</p>
<p>Use <a href="./sticky-footer-navbar.html">the sticky footer</a> with a fixed navbar if need be, too.</p>
</div> </div>
<div id="push"></div> <div id="push"></div>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -136,16 +136,8 @@ ...@@ -136,16 +136,8 @@
<h2>Tools for compiling</h2> <h2>Tools for compiling</h2>
<h3>Node with makefile</h3>
<p>Install the LESS command line compiler, JSHint, Recess, and uglify-js globally with npm by running the following command:</p>
<pre>$ npm install -g less jshint recess uglify-js</pre>
<p>Once installed just run <code>make</code> from the root of your bootstrap directory and you're all set.</p>
<p>Additionally, if you have <a href="https://github.com/mynyml/watchr">watchr</a> installed, you may run <code>make watch</code> to have bootstrap automatically rebuilt every time you edit a file in the bootstrap lib (this isn't required, just a convenience method).</p>
<h3>Command line</h3> <h3>Command line</h3>
<p>Install the LESS command line tool via Node and run the following command:</p> <p>Follow <a href="https://github.com/twitter/bootstrap#developers">the instructions in the project readme</a> on GitHub for compiling via command line.</p>
<pre>$ lessc ./less/bootstrap.less > bootstrap.css</pre>
<p>Be sure to include <code>--compress</code> in that command if you're trying to save some bytes!</p>
<h3>JavaScript</h3> <h3>JavaScript</h3>
<p><a href="http://lesscss.org/">Download the latest Less.js</a> and include the path to it (and Bootstrap) in the <code>&lt;head&gt;</code>.</p> <p><a href="http://lesscss.org/">Download the latest Less.js</a> and include the path to it (and Bootstrap) in the <code>&lt;head&gt;</code>.</p>
...@@ -253,7 +245,7 @@ ...@@ -253,7 +245,7 @@
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -198,17 +198,18 @@ ...@@ -198,17 +198,18 @@
<div class="page-header"> <div class="page-header">
<h1>4. Basic HTML template</h1> <h1>4. Basic HTML template</h1>
</div> </div>
<p class="lead">With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the <a href="#file-structure">File structure</a>.</p> <p class="lead">With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the <a href="./getting-started.html#file-structure">File structure</a>.</p>
<p>Now, here's a look at a <strong>typical HTML file</strong>:</p> <p>Now, here's a look at a <strong>typical HTML file</strong>:</p>
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;!DOCTYPE html&gt; &lt;!DOCTYPE html&gt;
&lt;html&gt; &lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Bootstrap 101 Template&lt;/title&gt; &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;/head&gt; &lt;/head&gt;
&lt;body&gt; &lt;body&gt;
&lt;h1&gt;Hello, world!&lt;/h1&gt; &lt;h1&gt;Hello, world!&lt;/h1&gt;
&lt;script src="http://code.jquery.com/jquery-latest.js"&gt;&lt;/script&gt; &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
&lt;/body&gt; &lt;/body&gt;
&lt;/html&gt; &lt;/html&gt;
</pre> </pre>
...@@ -218,12 +219,13 @@ ...@@ -218,12 +219,13 @@
&lt;html&gt; &lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Bootstrap 101 Template&lt;/title&gt; &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;!-- Bootstrap --&gt; &lt;!-- Bootstrap --&gt;
&lt;link href="css/bootstrap.min.css" rel="stylesheet" media="screen"&gt; &lt;link href="css/bootstrap.min.css" rel="stylesheet" media="screen"&gt;
&lt;/head&gt; &lt;/head&gt;
&lt;body&gt; &lt;body&gt;
&lt;h1&gt;Hello, world!&lt;/h1&gt; &lt;h1&gt;Hello, world!&lt;/h1&gt;
&lt;script src="http://code.jquery.com/jquery-latest.js"&gt;&lt;/script&gt; &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
&lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt; &lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;/body&gt; &lt;/body&gt;
&lt;/html&gt; &lt;/html&gt;
...@@ -243,21 +245,21 @@ ...@@ -243,21 +245,21 @@
<ul class="thumbnails bootstrap-examples"> <ul class="thumbnails bootstrap-examples">
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/starter-template.html"> <a class="thumbnail" href="examples/starter-template.html">
<img src="assets/img/examples/bootstrap-example-starter.jpg" alt=""> <img src="assets/img/examples/bootstrap-example-starter.png" alt="">
</a> </a>
<h4>Starter template</h4> <h4>Starter template</h4>
<p>A barebones HTML document with all the Bootstrap CSS and JavaScript included.</p> <p>A barebones HTML document with all the Bootstrap CSS and JavaScript included.</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/hero.html"> <a class="thumbnail" href="examples/hero.html">
<img src="assets/img/examples/bootstrap-example-hero.jpg" alt=""> <img src="assets/img/examples/bootstrap-example-marketing.png" alt="">
</a> </a>
<h4>Basic marketing site</h4> <h4>Basic marketing site</h4>
<p>Featuring a hero unit for a primary message and three supporting elements.</p> <p>Featuring a hero unit for a primary message and three supporting elements.</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/fluid.html"> <a class="thumbnail" href="examples/fluid.html">
<img src="assets/img/examples/bootstrap-example-fluid.jpg" alt=""> <img src="assets/img/examples/bootstrap-example-fluid.png" alt="">
</a> </a>
<h4>Fluid layout</h4> <h4>Fluid layout</h4>
<p>Uses our new responsive, fluid grid system to create a seamless liquid layout.</p> <p>Uses our new responsive, fluid grid system to create a seamless liquid layout.</p>
...@@ -270,6 +272,13 @@ ...@@ -270,6 +272,13 @@
<h4>Narrow marketing</h4> <h4>Narrow marketing</h4>
<p>Slim, lightweight marketing template for small projects or teams.</p> <p>Slim, lightweight marketing template for small projects or teams.</p>
</li> </li>
<li class="span3">
<a class="thumbnail" href="examples/justified-nav.html">
<img src="assets/img/examples/bootstrap-example-justified-nav.png" alt="">
</a>
<h4>Justified nav</h4>
<p>Marketing page with equal-width navigation links in a modified navbar.</p>
</li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/signin.html"> <a class="thumbnail" href="examples/signin.html">
<img src="assets/img/examples/bootstrap-example-signin.png" alt=""> <img src="assets/img/examples/bootstrap-example-signin.png" alt="">
...@@ -277,6 +286,7 @@ ...@@ -277,6 +286,7 @@
<h4>Sign in</h4> <h4>Sign in</h4>
<p>Barebones sign in form with custom, larger form controls and a flexible layout.</p> <p>Barebones sign in form with custom, larger form controls and a flexible layout.</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/sticky-footer.html"> <a class="thumbnail" href="examples/sticky-footer.html">
<img src="assets/img/examples/bootstrap-example-sticky-footer.png" alt=""> <img src="assets/img/examples/bootstrap-example-sticky-footer.png" alt="">
...@@ -284,7 +294,6 @@ ...@@ -284,7 +294,6 @@
<h4>Sticky footer</h4> <h4>Sticky footer</h4>
<p>Pin a fixed-height footer to the bottom of the user's viewport.</p> <p>Pin a fixed-height footer to the bottom of the user's viewport.</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/carousel.html"> <a class="thumbnail" href="examples/carousel.html">
<img src="assets/img/examples/bootstrap-example-carousel.png" alt=""> <img src="assets/img/examples/bootstrap-example-carousel.png" alt="">
...@@ -331,7 +340,7 @@ ...@@ -331,7 +340,7 @@
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
<a href="./extend.html" >Extend</a> <a href="./extend.html" >Extend</a>
</li> </li>
<li> <li>
Version 2.2.2 Version 2.3.0
</li> </li>
</ul> </ul>
</div> </div>
...@@ -184,7 +184,7 @@ ...@@ -184,7 +184,7 @@
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
This diff is collapsed.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -565,7 +565,7 @@ ...@@ -565,7 +565,7 @@
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="assets/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">{{_i}}Issues{{/i}}</a></li> <li><a href="https://github.com/twitter/bootstrap/issues?state=open">{{_i}}Issues{{/i}}</a></li>
<li class="muted">&middot;</li> <li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/wiki">{{_i}}Roadmap and changelog{{/i}}</a></li> <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">{{_i}}Changelog{{/i}}</a></li>
</ul> </ul>
</div> </div>
</footer> </footer>
......
...@@ -104,6 +104,19 @@ ...@@ -104,6 +104,19 @@
<p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}}Feel free to use <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code> in HTML5. <code>&lt;b&gt;</code> is meant to highlight words or phrases without conveying additional importance while <code>&lt;i&gt;</code> is mostly for voice, technical terms, etc.{{/i}}</p> <p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}}Feel free to use <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code> in HTML5. <code>&lt;b&gt;</code> is meant to highlight words or phrases without conveying additional importance while <code>&lt;i&gt;</code> is mostly for voice, technical terms, etc.{{/i}}</p>
<h3>{{_i}}Alignment classes{{/i}}</h3>
<p>{{_i}}Easily realign text to components with text alignment classes.{{/i}}</p>
<div class="bs-docs-example">
<p class="text-left">Left aligned text.</p>
<p class="text-center">Center aligned text.</p>
<p class="text-right">Right aligned text.</p>
</div>
<pre class="prettyprint linenums">
&lt;p class="text-left"&gt;Left aligned text.&lt;/p&gt;
&lt;p class="text-center"&gt;Center aligned text.&lt;/p&gt;
&lt;p class="text-right"&gt;Right aligned text.&lt;/p&gt;
</pre>
<h3>{{_i}}Emphasis classes{{/i}}</h3> <h3>{{_i}}Emphasis classes{{/i}}</h3>
<p>{{_i}}Convey meaning through color with a handful of emphasis utility classes.{{/i}}</p> <p>{{_i}}Convey meaning through color with a handful of emphasis utility classes.{{/i}}</p>
<div class="bs-docs-example"> <div class="bs-docs-example">
...@@ -390,7 +403,7 @@ ...@@ -390,7 +403,7 @@
For example, <code>&lt;section&gt;</code> should be wrapped as inline. For example, <code>&lt;section&gt;</code> should be wrapped as inline.
</div> </div>
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
{{_i}}For example, &lt;code&gt;&lt;section&gt;&lt;/code&gt; should be wrapped as inline.{{/i}} {{_i}}For example, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; should be wrapped as inline.{{/i}}
</pre> </pre>
<h2>Basic block</h2> <h2>Basic block</h2>
...@@ -464,7 +477,7 @@ ...@@ -464,7 +477,7 @@
<p>{{_i}}Add any of the following classes to the <code>.table</code> base class.{{/i}}</p> <p>{{_i}}Add any of the following classes to the <code>.table</code> base class.{{/i}}</p>
<h3><code>{{_i}}.table-striped{{/i}}</code></h3> <h3><code>{{_i}}.table-striped{{/i}}</code></h3>
<p>{{_i}}Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-IE8).{{/i}}</p> <p>{{_i}}Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-8).{{/i}}</p>
<div class="bs-docs-example"> <div class="bs-docs-example">
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
...@@ -781,8 +794,7 @@ ...@@ -781,8 +794,7 @@
<code>&lt;th&gt;</code> <code>&lt;th&gt;</code>
</td> </td>
<td> <td>
{{_i}}Special table cell for column (or row, depending on scope and placement) labels{{/i}}<br> {{_i}}Special table cell for column (or row, depending on scope and placement) labels{{/i}}
{{_i}}Must be used within a <code>&lt;thead&gt;</code>{{/i}}
</td> </td>
</tr> </tr>
<tr> <tr>
...@@ -1459,7 +1471,7 @@ ...@@ -1459,7 +1471,7 @@
</pre> </pre>
<h3>{{_i}}Form actions{{/i}}</h3> <h3>{{_i}}Form actions{{/i}}</h3>
<p>{{_i}}End a form with a group of actions (buttons). When placed within a <code>.form-horizontal</code>, the buttons will automatically indent to line up with the form controls.{{/i}}</p> <p>{{_i}}End a form with a group of actions (buttons). When placed within a <code>.form-actions</code>, the buttons will automatically indent to line up with the form controls.{{/i}}</p>
<form class="bs-docs-example"> <form class="bs-docs-example">
<div class="form-actions"> <div class="form-actions">
<button type="submit" class="btn btn-primary">{{_i}}Save changes{{/i}}</button> <button type="submit" class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
...@@ -1509,7 +1521,8 @@ ...@@ -1509,7 +1521,8 @@
</pre> </pre>
<h3>{{_i}}Invalid inputs{{/i}}</h3> <h3>{{_i}}Invalid inputs{{/i}}</h3>
<p>{{_i}}Style inputs via default browser functionality with <code>:invalid</code>. Specify a <code>type</code> and add the <code>required</code> attribute.{{/i}}</p> <p>{{_i}}Style inputs via default browser functionality with <code>:invalid</code>. Specify a <code>type</code>, add the <code>required</code> attribute if the field is not optional, and (if applicable) specify a <code>pattern</code>.{{/i}}</p>
<p>{{_i}}This is not available in versions of Internet Explorer 7-9 due to lack of support for CSS pseudo selectors.{{/i}}</p>
<form class="bs-docs-example form-inline"> <form class="bs-docs-example form-inline">
<input class="span3" type="email" placeholder="test@example.com" required> <input class="span3" type="email" placeholder="test@example.com" required>
</form> </form>
...@@ -1567,6 +1580,7 @@ ...@@ -1567,6 +1580,7 @@
&lt;span class="help-inline"&gt;{{_i}}Something may have gone wrong{{/i}}&lt;/span&gt; &lt;span class="help-inline"&gt;{{_i}}Something may have gone wrong{{/i}}&lt;/span&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;div class="control-group error"&gt; &lt;div class="control-group error"&gt;
&lt;label class="control-label" for="inputError"&gt;{{_i}}Input with error{{/i}}&lt;/label&gt; &lt;label class="control-label" for="inputError"&gt;{{_i}}Input with error{{/i}}&lt;/label&gt;
&lt;div class="controls"&gt; &lt;div class="controls"&gt;
...@@ -1574,6 +1588,15 @@ ...@@ -1574,6 +1588,15 @@
&lt;span class="help-inline"&gt;{{_i}}Please correct the error{{/i}}&lt;/span&gt; &lt;span class="help-inline"&gt;{{_i}}Please correct the error{{/i}}&lt;/span&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;div class="control-group info"&gt;
&lt;label class="control-label" for="inputInfo"&gt;{{_i}}Input with info{{/i}}&lt;/label&gt;
&lt;div class="controls"&gt;
&lt;input type="text" id="inputInfo"&gt;
&lt;span class="help-inline"&gt;{{_i}}Username is already taken{{/i}}&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="control-group success"&gt; &lt;div class="control-group success"&gt;
&lt;label class="control-label" for="inputSuccess"&gt;{{_i}}Input with success{{/i}}&lt;/label&gt; &lt;label class="control-label" for="inputSuccess"&gt;{{_i}}Input with success{{/i}}&lt;/label&gt;
&lt;div class="controls"&gt; &lt;div class="controls"&gt;
...@@ -1978,7 +2001,6 @@ ...@@ -1978,7 +2001,6 @@
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="btn-toolbar"&gt; &lt;div class="btn-toolbar"&gt;
&lt;div class="btn-group"&gt; &lt;div class="btn-group"&gt;
&lt;a class="btn" href="#"&gt;&lt;i class="icon-align-left"&gt;&lt;/i&gt;&lt;/a&gt; &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-left"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a class="btn" href="#"&gt;&lt;i class="icon-align-center"&gt;&lt;/i&gt;&lt;/a&gt; &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-center"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a class="btn" href="#"&gt;&lt;i class="icon-align-right"&gt;&lt;/i&gt;&lt;/a&gt; &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-right"&gt;&lt;/i&gt;&lt;/a&gt;
......
...@@ -90,6 +90,25 @@ ...@@ -90,6 +90,25 @@
&lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"&gt; &lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"&gt;
... ...
&lt;/ul&gt; &lt;/ul&gt;
</pre>
<h3>{{_i}}Disabled menu options{{/i}}</h3>
<p>{{_i}}Add <code>.disabled</code> to a <code>&lt;li&gt;</code> in the dropdown to disable the link.{{/i}}</p>
<div class="bs-docs-example">
<div class="dropdown clearfix">
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
<li><a tabindex="-1" href="#">{{_i}}Regular link{{/i}}</a></li>
<li class="disabled"><a tabindex="-1" href="#">{{_i}}Disabled link{{/i}}</a></li>
<li><a tabindex="-1" href="#">{{_i}}Another link{{/i}}</a></li>
</ul>
</div>
</div>{{! /example }}
<pre class="prettyprint linenums">
&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"&gt;
&lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Regular link{{/i}}&lt;/a&gt;&lt;/li&gt;
&lt;li class="disabled"&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Disabled link{{/i}}&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Another link{{/i}}&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre> </pre>
<h3>{{_i}}Sub menus on dropdowns{{/i}}</h3> <h3>{{_i}}Sub menus on dropdowns{{/i}}</h3>
...@@ -201,9 +220,9 @@ ...@@ -201,9 +220,9 @@
</div> </div>
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="btn-group"&gt; &lt;div class="btn-group"&gt;
&lt;button class="btn"&gt;1&lt;/button&gt; &lt;button class="btn"&gt;Left&lt;/button&gt;
&lt;button class="btn"&gt;2&lt;/button&gt; &lt;button class="btn"&gt;Middle&lt;/button&gt;
&lt;button class="btn"&gt;3&lt;/button&gt; &lt;button class="btn"&gt;Right&lt;/button&gt;
&lt;/div&gt; &lt;/div&gt;
</pre> </pre>
...@@ -1425,6 +1444,7 @@ ...@@ -1425,6 +1444,7 @@
&lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;/ul&gt;
&lt;/div&gt; &lt;/div&gt;
...@@ -1454,7 +1474,7 @@ ...@@ -1454,7 +1474,7 @@
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="pagination"&gt; &lt;div class="pagination"&gt;
&lt;ul&gt; &lt;ul&gt;
&lt;li class="disabled"&gt;&lt;a href="#"&gt;Prev&lt;/a&gt;&lt;/li&gt; &lt;li class="disabled"&gt;&lt;a href="#"&gt;&amp;laquo;&lt;/a&gt;&lt;/li&gt;
&lt;li class="active"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt; &lt;li class="active"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;
... ...
&lt;/ul&gt; &lt;/ul&gt;
...@@ -1464,7 +1484,7 @@ ...@@ -1464,7 +1484,7 @@
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;div class="pagination"&gt; &lt;div class="pagination"&gt;
&lt;ul&gt; &lt;ul&gt;
&lt;li class="disabled"&gt;&lt;span&gt;Prev&lt;/span&gt;&lt;/li&gt; &lt;li class="disabled"&gt;&lt;span&gt;&amp;laquo;&lt;/span&gt;&lt;/li&gt;
&lt;li class="active"&gt;&lt;span&gt;1&lt;/span&gt;&lt;/li&gt; &lt;li class="active"&gt;&lt;span&gt;1&lt;/span&gt;&lt;/li&gt;
... ...
&lt;/ul&gt; &lt;/ul&gt;
...@@ -2417,7 +2437,7 @@ ...@@ -2417,7 +2437,7 @@
<p><button class="close" style="float: none;">&times;</button></p> <p><button class="close" style="float: none;">&times;</button></p>
</div> </div>
<pre class="prettyprint linenums">&lt;button class="close"&gt;&amp;times;&lt;/button&gt;</pre> <pre class="prettyprint linenums">&lt;button class="close"&gt;&amp;times;&lt;/button&gt;</pre>
<p>{{_i}}iOS devices require an href="#" for click events if you would rather use an anchor.{{/i}}</p> <p>{{_i}}iOS devices require an <code>href="#"</code> for click events if you would rather use an anchor.{{/i}}</p>
<pre class="prettyprint linenums">&lt;a class="close" href="#"&gt;&amp;times;&lt;/a&gt;</pre> <pre class="prettyprint linenums">&lt;a class="close" href="#"&gt;&amp;times;&lt;/a&gt;</pre>
<h2>{{_i}}Helper classes{{/i}}</h2> <h2>{{_i}}Helper classes{{/i}}</h2>
......
...@@ -65,16 +65,8 @@ ...@@ -65,16 +65,8 @@
<h2>{{_i}}Tools for compiling{{/i}}</h2> <h2>{{_i}}Tools for compiling{{/i}}</h2>
<h3>{{_i}}Node with makefile{{/i}}</h3>
<p>{{_i}}Install the LESS command line compiler, JSHint, Recess, and uglify-js globally with npm by running the following command:{{/i}}</p>
<pre>$ npm install -g less jshint recess uglify-js</pre>
<p>{{_i}}Once installed just run <code>make</code> from the root of your bootstrap directory and you're all set.{{/i}}</p>
<p>{{_i}}Additionally, if you have <a href="https://github.com/mynyml/watchr">watchr</a> installed, you may run <code>make watch</code> to have bootstrap automatically rebuilt every time you edit a file in the bootstrap lib (this isn't required, just a convenience method).{{/i}}</p>
<h3>{{_i}}Command line{{/i}}</h3> <h3>{{_i}}Command line{{/i}}</h3>
<p>{{_i}}Install the LESS command line tool via Node and run the following command:{{/i}}</p> <p>{{_i}}Follow <a href="https://github.com/twitter/bootstrap#developers">the instructions in the project readme</a> on GitHub for compiling via command line.{{/i}}</p>
<pre>$ lessc ./less/bootstrap.less > bootstrap.css</pre>
<p>{{_i}}Be sure to include <code>--compress</code> in that command if you're trying to save some bytes!{{/i}}</p>
<h3>{{_i}}JavaScript{{/i}}</h3> <h3>{{_i}}JavaScript{{/i}}</h3>
<p>{{_i}}<a href="http://lesscss.org/">Download the latest Less.js</a> and include the path to it (and Bootstrap) in the <code>&lt;head&gt;</code>.{{/i}}</p> <p>{{_i}}<a href="http://lesscss.org/">Download the latest Less.js</a> and include the path to it (and Bootstrap) in the <code>&lt;head&gt;</code>.{{/i}}</p>
......
...@@ -127,17 +127,18 @@ ...@@ -127,17 +127,18 @@
<div class="page-header"> <div class="page-header">
<h1>{{_i}}4. Basic HTML template{{/i}}</h1> <h1>{{_i}}4. Basic HTML template{{/i}}</h1>
</div> </div>
<p class="lead">{{_i}}With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the <a href="#file-structure">File structure</a>.{{/i}}</p> <p class="lead">{{_i}}With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the <a href="./getting-started.html#file-structure">File structure</a>.{{/i}}</p>
<p>{{_i}}Now, here's a look at a <strong>typical HTML file</strong>:{{/i}}</p> <p>{{_i}}Now, here's a look at a <strong>typical HTML file</strong>:{{/i}}</p>
<pre class="prettyprint linenums"> <pre class="prettyprint linenums">
&lt;!DOCTYPE html&gt; &lt;!DOCTYPE html&gt;
&lt;html&gt; &lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Bootstrap 101 Template&lt;/title&gt; &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;/head&gt; &lt;/head&gt;
&lt;body&gt; &lt;body&gt;
&lt;h1&gt;Hello, world!&lt;/h1&gt; &lt;h1&gt;Hello, world!&lt;/h1&gt;
&lt;script src="http://code.jquery.com/jquery-latest.js"&gt;&lt;/script&gt; &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
&lt;/body&gt; &lt;/body&gt;
&lt;/html&gt; &lt;/html&gt;
</pre> </pre>
...@@ -147,12 +148,13 @@ ...@@ -147,12 +148,13 @@
&lt;html&gt; &lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Bootstrap 101 Template&lt;/title&gt; &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;!-- Bootstrap --&gt; &lt;!-- Bootstrap --&gt;
&lt;link href="css/bootstrap.min.css" rel="stylesheet" media="screen"&gt; &lt;link href="css/bootstrap.min.css" rel="stylesheet" media="screen"&gt;
&lt;/head&gt; &lt;/head&gt;
&lt;body&gt; &lt;body&gt;
&lt;h1&gt;Hello, world!&lt;/h1&gt; &lt;h1&gt;Hello, world!&lt;/h1&gt;
&lt;script src="http://code.jquery.com/jquery-latest.js"&gt;&lt;/script&gt; &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
&lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt; &lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;/body&gt; &lt;/body&gt;
&lt;/html&gt; &lt;/html&gt;
...@@ -172,21 +174,21 @@ ...@@ -172,21 +174,21 @@
<ul class="thumbnails bootstrap-examples"> <ul class="thumbnails bootstrap-examples">
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/starter-template.html"> <a class="thumbnail" href="examples/starter-template.html">
<img src="assets/img/examples/bootstrap-example-starter.jpg" alt=""> <img src="assets/img/examples/bootstrap-example-starter.png" alt="">
</a> </a>
<h4>{{_i}}Starter template{{/i}}</h4> <h4>{{_i}}Starter template{{/i}}</h4>
<p>{{_i}}A barebones HTML document with all the Bootstrap CSS and JavaScript included.{{/i}}</p> <p>{{_i}}A barebones HTML document with all the Bootstrap CSS and JavaScript included.{{/i}}</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/hero.html"> <a class="thumbnail" href="examples/hero.html">
<img src="assets/img/examples/bootstrap-example-hero.jpg" alt=""> <img src="assets/img/examples/bootstrap-example-marketing.png" alt="">
</a> </a>
<h4>{{_i}}Basic marketing site{{/i}}</h4> <h4>{{_i}}Basic marketing site{{/i}}</h4>
<p>{{_i}}Featuring a hero unit for a primary message and three supporting elements.{{/i}}</p> <p>{{_i}}Featuring a hero unit for a primary message and three supporting elements.{{/i}}</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/fluid.html"> <a class="thumbnail" href="examples/fluid.html">
<img src="assets/img/examples/bootstrap-example-fluid.jpg" alt=""> <img src="assets/img/examples/bootstrap-example-fluid.png" alt="">
</a> </a>
<h4>{{_i}}Fluid layout{{/i}}</h4> <h4>{{_i}}Fluid layout{{/i}}</h4>
<p>{{_i}}Uses our new responsive, fluid grid system to create a seamless liquid layout.{{/i}}</p> <p>{{_i}}Uses our new responsive, fluid grid system to create a seamless liquid layout.{{/i}}</p>
...@@ -199,6 +201,13 @@ ...@@ -199,6 +201,13 @@
<h4>{{_i}}Narrow marketing{{/i}}</h4> <h4>{{_i}}Narrow marketing{{/i}}</h4>
<p>{{_i}}Slim, lightweight marketing template for small projects or teams.{{/i}}</p> <p>{{_i}}Slim, lightweight marketing template for small projects or teams.{{/i}}</p>
</li> </li>
<li class="span3">
<a class="thumbnail" href="examples/justified-nav.html">
<img src="assets/img/examples/bootstrap-example-justified-nav.png" alt="">
</a>
<h4>{{_i}}Justified nav{{/i}}</h4>
<p>{{_i}}Marketing page with equal-width navigation links in a modified navbar.{{/i}}</p>
</li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/signin.html"> <a class="thumbnail" href="examples/signin.html">
<img src="assets/img/examples/bootstrap-example-signin.png" alt=""> <img src="assets/img/examples/bootstrap-example-signin.png" alt="">
...@@ -206,6 +215,7 @@ ...@@ -206,6 +215,7 @@
<h4>{{_i}}Sign in{{/i}}</h4> <h4>{{_i}}Sign in{{/i}}</h4>
<p>{{_i}}Barebones sign in form with custom, larger form controls and a flexible layout.{{/i}}</p> <p>{{_i}}Barebones sign in form with custom, larger form controls and a flexible layout.{{/i}}</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/sticky-footer.html"> <a class="thumbnail" href="examples/sticky-footer.html">
<img src="assets/img/examples/bootstrap-example-sticky-footer.png" alt=""> <img src="assets/img/examples/bootstrap-example-sticky-footer.png" alt="">
...@@ -213,7 +223,6 @@ ...@@ -213,7 +223,6 @@
<h4>{{_i}}Sticky footer{{/i}}</h4> <h4>{{_i}}Sticky footer{{/i}}</h4>
<p>{{_i}}Pin a fixed-height footer to the bottom of the user's viewport.{{/i}}</p> <p>{{_i}}Pin a fixed-height footer to the bottom of the user's viewport.{{/i}}</p>
</li> </li>
<li class="span3"> <li class="span3">
<a class="thumbnail" href="examples/carousel.html"> <a class="thumbnail" href="examples/carousel.html">
<img src="assets/img/examples/bootstrap-example-carousel.png" alt=""> <img src="assets/img/examples/bootstrap-example-carousel.png" alt="">
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<h1>{{_i}}Bootstrap{{/i}}</h1> <h1>{{_i}}Bootstrap{{/i}}</h1>
<p>{{_i}}Sleek, intuitive, and powerful front-end framework for faster and easier web development.{{/i}}</p> <p>{{_i}}Sleek, intuitive, and powerful front-end framework for faster and easier web development.{{/i}}</p>
<p> <p>
<a href="assets/bootstrap.zip" class="btn btn-primary btn-large" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Download', 'Download 2.2.2']);"{{/production}}>{{_i}}Download Bootstrap{{/i}}</a> <a href="assets/bootstrap.zip" class="btn btn-primary btn-large" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Download', 'Download 2.3.0']);"{{/production}}>{{_i}}Download Bootstrap{{/i}}</a>
</p> </p>
<ul class="masthead-links"> <ul class="masthead-links">
<li> <li>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<a href="./extend.html" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Extend']);"{{/production}}>{{_i}}Extend{{/i}}</a> <a href="./extend.html" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Extend']);"{{/production}}>{{_i}}Extend{{/i}}</a>
</li> </li>
<li> <li>
{{_i}}Version 2.2.2{{/i}} {{_i}}Version 2.3.0{{/i}}
</li> </li>
</ul> </ul>
</div> </div>
......
This diff is collapsed.
/* ========================================================== /* ==========================================================
* bootstrap-affix.js v2.2.2 * bootstrap-affix.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#affix * http://twitter.github.com/bootstrap/javascript.html#affix
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ========================================================== /* ==========================================================
* bootstrap-alert.js v2.2.2 * bootstrap-alert.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#alerts * http://twitter.github.com/bootstrap/javascript.html#alerts
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ============================================================ /* ============================================================
* bootstrap-button.js v2.2.2 * bootstrap-button.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#buttons * http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
/* ========================================================== /* ==========================================================
* bootstrap-carousel.js v2.2.2 * bootstrap-carousel.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#carousel * http://twitter.github.com/bootstrap/javascript.html#carousel
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
var Carousel = function (element, options) { var Carousel = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options this.options = options
this.options.pause == 'hover' && this.$element this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this)) .on('mouseenter', $.proxy(this.pause, this))
...@@ -38,19 +39,24 @@ ...@@ -38,19 +39,24 @@
cycle: function (e) { cycle: function (e) {
if (!e) this.paused = false if (!e) this.paused = false
if (this.interval) clearInterval(this.interval);
this.options.interval this.options.interval
&& !this.paused && !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this 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) { , to: function (pos) {
var $active = this.$element.find('.item.active') var activeIndex = this.getActiveIndex()
, children = $active.parent().children()
, activePos = children.index($active)
, that = this , that = this
if (pos > (children.length - 1) || pos < 0) return if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) { if (this.sliding) {
return this.$element.one('slid', function () { return this.$element.one('slid', function () {
...@@ -58,11 +64,11 @@ ...@@ -58,11 +64,11 @@
}) })
} }
if (activePos == pos) { if (activeIndex == pos) {
return this.pause().cycle() 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) { , pause: function (e) {
...@@ -103,10 +109,19 @@ ...@@ -103,10 +109,19 @@
e = $.Event('slide', { e = $.Event('slide', {
relatedTarget: $next[0] relatedTarget: $next[0]
, direction: direction
}) })
if ($next.hasClass('active')) return 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')) { if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger(e) this.$element.trigger(e)
if (e.isDefaultPrevented()) return if (e.isDefaultPrevented()) return
...@@ -151,7 +166,7 @@ ...@@ -151,7 +166,7 @@
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 (action) data[action]() else if (action) data[action]()
else if (options.interval) data.cycle() else if (options.interval) data.pause().cycle()
}) })
} }
...@@ -174,11 +189,18 @@ ...@@ -174,11 +189,18 @@
/* CAROUSEL DATA-API /* 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 var $this = $(this), href
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
, options = $.extend({}, $target.data(), $this.data()) , options = $.extend({}, $target.data(), $this.data())
, slideIndex
$target.carousel(options) $target.carousel(options)
if (slideIndex = $this.attr('data-slide-to')) {
$target.data('carousel').pause().to(slideIndex).cycle()
}
e.preventDefault() e.preventDefault()
}) })
......
/* ============================================================= /* =============================================================
* bootstrap-collapse.js v2.2.2 * bootstrap-collapse.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#collapse * http://twitter.github.com/bootstrap/javascript.html#collapse
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
, actives , actives
, hasData , hasData
if (this.transitioning) return if (this.transitioning || this.$element.hasClass('in')) return
dimension = this.dimension() dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-')) scroll = $.camelCase(['scroll', dimension].join('-'))
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
, hide: function () { , hide: function () {
var dimension var dimension
if (this.transitioning) return if (this.transitioning || !this.$element.hasClass('in')) return
dimension = this.dimension() dimension = this.dimension()
this.reset(this.$element[dimension]()) this.reset(this.$element[dimension]())
this.transition('removeClass', $.Event('hide'), 'hidden') this.transition('removeClass', $.Event('hide'), 'hidden')
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('collapse') , 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 (!data) $this.data('collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
......
/* ============================================================ /* ============================================================
* bootstrap-dropdown.js v2.2.2 * bootstrap-dropdown.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#dropdowns * http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -81,7 +81,10 @@ ...@@ -81,7 +81,10 @@
isActive = $parent.hasClass('open') 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) $items = $('[role=menu] li:not(.divider):visible a', $parent)
...@@ -115,8 +118,9 @@ ...@@ -115,8 +118,9 @@
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
} }
$parent = $(selector) $parent = selector && $(selector)
$parent.length || ($parent = $this.parent())
if (!$parent || !$parent.length) $parent = $this.parent()
return $parent return $parent
} }
...@@ -152,10 +156,10 @@ ...@@ -152,10 +156,10 @@
* =================================== */ * =================================== */
$(document) $(document)
.on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', clearMenus)
.on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() }) .on('.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery); }(window.jQuery);
\ No newline at end of file
/* ========================================================= /* =========================================================
* bootstrap-modal.js v2.2.2 * bootstrap-modal.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#modals * http://twitter.github.com/bootstrap/javascript.html#modals
* ========================================================= * =========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -60,8 +60,7 @@ ...@@ -60,8 +60,7 @@
that.$element.appendTo(document.body) //don't move modals dom position that.$element.appendTo(document.body) //don't move modals dom position
} }
that.$element that.$element.show()
.show()
if (transition) { if (transition) {
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
...@@ -139,12 +138,13 @@ ...@@ -139,12 +138,13 @@
}) })
} }
, hideModal: function (that) { , hideModal: function () {
this.$element var that = this
.hide() this.$element.hide()
.trigger('hidden') this.backdrop(function () {
that.removeBackdrop()
this.backdrop() that.$element.trigger('hidden')
})
} }
, removeBackdrop: function () { , removeBackdrop: function () {
...@@ -172,6 +172,8 @@ ...@@ -172,6 +172,8 @@
this.$backdrop.addClass('in') this.$backdrop.addClass('in')
if (!callback) return
doAnimate ? doAnimate ?
this.$backdrop.one($.support.transition.end, callback) : this.$backdrop.one($.support.transition.end, callback) :
callback() callback()
...@@ -180,8 +182,8 @@ ...@@ -180,8 +182,8 @@
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade')?
this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) : this.$backdrop.one($.support.transition.end, callback) :
this.removeBackdrop() callback()
} else if (callback) { } else if (callback) {
callback() callback()
......
/* =========================================================== /* ===========================================================
* bootstrap-popover.js v2.2.2 * bootstrap-popover.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#popovers * http://twitter.github.com/bootstrap/javascript.html#popovers
* =========================================================== * ===========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -58,8 +58,8 @@ ...@@ -58,8 +58,8 @@
, $e = this.$element , $e = this.$element
, o = this.options , o = this.options
content = $e.attr('data-content') content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) || $e.attr('data-content')
return content return content
} }
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
placement: 'right' placement: 'right'
, trigger: 'click' , trigger: 'click'
, content: '' , 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 @@ ...@@ -111,4 +111,4 @@
return this return this
} }
}(window.jQuery); }(window.jQuery);
\ No newline at end of file
/* ============================================================= /* =============================================================
* bootstrap-scrollspy.js v2.2.2 * bootstrap-scrollspy.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#scrollspy * http://twitter.github.com/bootstrap/javascript.html#scrollspy
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
, $href = /^#\w/.test(href) && $(href) , $href = /^#\w/.test(href) && $(href)
return ( $href return ( $href
&& $href.length && $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] }) .sort(function (a, b) { return a[0] - b[0] })
.each(function () { .each(function () {
......
/* ======================================================== /* ========================================================
* bootstrap-tab.js v2.2.2 * bootstrap-tab.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tabs * http://twitter.github.com/bootstrap/javascript.html#tabs
* ======================================================== * ========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
This diff is collapsed.
/* =================================================== /* ===================================================
* bootstrap-transition.js v2.2.2 * bootstrap-transition.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#transitions * http://twitter.github.com/bootstrap/javascript.html#transitions
* =================================================== * ===================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
......
This diff is collapsed.
...@@ -31,6 +31,18 @@ $(function () { ...@@ -31,6 +31,18 @@ $(function () {
.carousel('next') .carousel('next')
}) })
test("should fire slide event with direction", function () {
var template = '<div id="myCarousel" class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt=""><div class="carousel-caption"><h4>{{_i}}First Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Second Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Third Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a><a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a></div>'
$.support.transition = false
stop()
$(template).on('slide', function (e) {
e.preventDefault()
ok(e.direction)
ok(e.direction === 'right' || e.direction === 'left')
start()
}).carousel('next')
})
test("should fire slide event with relatedTarget", function () { test("should fire slide event with relatedTarget", function () {
var template = '<div id="myCarousel" class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt=""><div class="carousel-caption"><h4>{{_i}}First Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Second Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Third Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a><a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a></div>' var template = '<div id="myCarousel" class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt=""><div class="carousel-caption"><h4>{{_i}}First Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Second Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Third Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a><a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a></div>'
$.support.transition = false $.support.transition = false
......
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