Commit f085dbad authored by Mark Otto's avatar Mark Otto
Browse files

Merge branch '2.1.0-wip' of github.com:twitter/bootstrap into 2.1.0-wip

Conflicts:
	docs/assets/css/docs.css
	docs/base-css.html
	docs/components.html
	docs/customize.html
	docs/getting-started.html
	docs/javascript.html
	docs/scaffolding.html
	docs/templates/pages/base-css.mustache
	docs/templates/pages/components.mustache
	docs/templates/pages/customize.mustache
	docs/templates/pages/getting-started.mustache
	docs/templates/pages/javascript.mustache
	docs/templates/pages/scaffolding.mustache
parents 0dda2c46 614d52bd
6 merge requests!4427Use variable for desktop media query,!4258Aria,!4248Amended mentions of 'javascript' to the correct 'JavaScript',!4235Patch 1,!4232Fixing the modal z-index issue + make modal stacking possible,!42132.1.0 wip
Showing with 1222 additions and 912 deletions
+1222 -912
...@@ -67,6 +67,7 @@ sub { ...@@ -67,6 +67,7 @@ sub {
} }
img { img {
height: auto;
max-width: 100%; max-width: 100%;
vertical-align: middle; vertical-align: middle;
border: 0; border: 0;
...@@ -5501,3 +5502,7 @@ a.badge:hover { ...@@ -5501,3 +5502,7 @@ a.badge:hover {
.invisible { .invisible {
visibility: hidden; visibility: hidden;
} }
.affix {
position: fixed;
}
...@@ -893,6 +893,7 @@ form.bs-docs-example { ...@@ -893,6 +893,7 @@ form.bs-docs-example {
margin-right: 10px; margin-right: 10px;
background-color: #fff; background-color: #fff;
border: 1px solid #e5e5e5; border: 1px solid #e5e5e5;
margin-left: 0;
-webkit-border-radius: 6px; -webkit-border-radius: 6px;
-moz-border-radius: 6px; -moz-border-radius: 6px;
border-radius: 6px; border-radius: 6px;
...@@ -932,8 +933,16 @@ form.bs-docs-example { ...@@ -932,8 +933,16 @@ form.bs-docs-example {
opacity: .75; opacity: .75;
} }
.bs-docs-sidenav.affix {
top: 40px;
}
@media (max-width: 979px) { @media (max-width: 979px) {
.bs-docs-sidenav.affix {
top: 0px;
}
.bs-docs-sidenav { .bs-docs-sidenav {
margin-top: 30px; margin-top: 30px;
margin-right: 0; margin-right: 0;
...@@ -972,3 +981,9 @@ form.bs-docs-example { ...@@ -972,3 +981,9 @@ form.bs-docs-example {
top: 240px; top: 240px;
} }
} }
@media (max-width: 767px) {
.bs-docs-sidenav.affix {
position: relative;
}
}
...@@ -43,32 +43,6 @@ ...@@ -43,32 +43,6 @@
}) })
} }
// fix sub nav on scroll
var $win = $(window)
, $nav = $('.subhead .navbar-subnav')
, navTop = $('.subhead .navbar-subnav').length && $('.subhead .navbar-subnav').offset().top - 40
, isFixed = 0
processScroll()
// hack sad times - holdover until rewrite for 2.1
$nav.on('click', function () {
if (!isFixed) setTimeout(function () { $win.scrollTop($win.scrollTop() - 47) }, 10)
})
$win.on('scroll', processScroll)
function processScroll() {
var i, scrollTop = $win.scrollTop()
if (scrollTop >= navTop && !isFixed) {
isFixed = 1
$nav.addClass('navbar-subnav-fixed')
} else if (scrollTop <= navTop && isFixed) {
isFixed = 0
$nav.removeClass('navbar-subnav-fixed')
}
}
// tooltip demo // tooltip demo
$('.tooltip-demo').tooltip({ $('.tooltip-demo').tooltip({
selector: "a[rel=tooltip]" selector: "a[rel=tooltip]"
......
/* ==========================================================
* bootstrap-affix.js v2.1.0
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
!function ($) {
"use strict"; // jshint ;_;
/* AFFIX CLASS DEFINITION
* ====================== */
var Affix = function (element, options) {
this.options = $.extend({}, $.fn.affix.defaults, options)
this.$window = $(window)
.on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
.on('resize.affix.data-api', $.proxy(this.refresh, this))
this.$element = $(element)
this.refresh()
}
Affix.prototype.refresh = function () {
this.position = this.$element.offset()
}
Affix.prototype.checkPosition = function () {
if (!this.$element.is(':visible')) return
var scrollLeft = this.$window.scrollLeft()
, scrollTop = this.$window.scrollTop()
, position = this.position
, offset = this.options.offset
, affix
if (typeof offset != 'object') offset = { x: offset, y: offset }
affix = (offset.x == null || (position.left - scrollLeft <= offset.x))
&& (offset.y == null || (position.top - scrollTop <= offset.y))
if (affix == this.affixed) return
this.affixed = affix
this.$element[affix ? 'addClass' : 'removeClass']('affix')
}
/* AFFIX PLUGIN DEFINITION
* ======================= */
$.fn.affix = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('affix')
, options = typeof option == 'object' && option
if (!data) $this.data('affix', (data = new Affix(this, options)))
if (typeof option == 'string') data[option]()
})
}
$.fn.affix.Constructor = Affix
$.fn.affix.defaults = {
offset: 0
}
/* AFFIX DATA-API
* ============== */
$(function () {
$('[data-spy="affix"]').each(function () {
var $spy = $(this)
, data = $spy.data()
data.offset = data.offset || {}
data.offsetX && (data.offset.x = data.offsetX)
data.offsetY && (data.offset.y = data.offsetY)
$spy.affix(data)
})
})
}(window.jQuery);
\ No newline at end of file
...@@ -26,9 +26,9 @@ ...@@ -26,9 +26,9 @@
/* MODAL CLASS DEFINITION /* MODAL CLASS DEFINITION
* ====================== */ * ====================== */
var Modal = function (content, options) { var Modal = function (element, options) {
this.options = options this.options = options
this.$element = $(content) this.$element = $(element)
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
this.options.remote && this.$element.find('.modal-body').load(this.options.remote) this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
} }
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
/* POPOVER PUBLIC CLASS DEFINITION /* POPOVER PUBLIC CLASS DEFINITION
* =============================== */ * =============================== */
var Popover = function ( element, options ) { var Popover = function (element, options) {
this.init('popover', element, options) this.init('popover', element, options)
} }
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
} }
, destroy: function () { , destroy: function () {
this.$element.off().removeData('popover') this.hide().$element.off('.' + this.type).removeData(this.type)
} }
}) })
......
...@@ -23,15 +23,15 @@ ...@@ -23,15 +23,15 @@
"use strict"; // jshint ;_; "use strict"; // jshint ;_;
/* SCROLLSPY CLASS DEFINITION /* SCROLLSPY CLASS DEFINITION
* ========================== */ * ========================== */
function ScrollSpy( element, options) { function ScrollSpy(element, options) {
var process = $.proxy(this.process, this) var process = $.proxy(this.process, this)
, $element = $(element).is('body') ? $(window) : $(element) , $element = $(element).is('body') ? $(window) : $(element)
, href , href
this.options = $.extend({}, $.fn.scrollspy.defaults, options) this.options = $.extend({}, $.fn.scrollspy.defaults, options)
this.$scrollElement = $element.on('scroll.scroll.data-api', process) this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
this.selector = (this.options.target this.selector = (this.options.target
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|| '') + ' .nav li > a' || '') + ' .nav li > a'
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
/* SCROLLSPY PLUGIN DEFINITION /* SCROLLSPY PLUGIN DEFINITION
* =========================== */ * =========================== */
$.fn.scrollspy = function ( option ) { $.fn.scrollspy = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('scrollspy') , data = $this.data('scrollspy')
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
/* SCROLLSPY DATA-API /* SCROLLSPY DATA-API
* ================== */ * ================== */
$(function () { $(window).on('load', function () {
$('[data-spy="scroll"]').each(function () { $('[data-spy="scroll"]').each(function () {
var $spy = $(this) var $spy = $(this)
$spy.scrollspy($spy.data()) $spy.scrollspy($spy.data())
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
/* TAB CLASS DEFINITION /* TAB CLASS DEFINITION
* ==================== */ * ==================== */
var Tab = function ( element ) { var Tab = function (element) {
this.element = $(element) this.element = $(element)
} }
......
...@@ -47,8 +47,8 @@ ...@@ -47,8 +47,8 @@
if (this.options.trigger != 'manual') { if (this.options.trigger != 'manual') {
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
} }
this.options.selector ? this.options.selector ?
...@@ -176,6 +176,8 @@ ...@@ -176,6 +176,8 @@
$.support.transition && this.$tip.hasClass('fade') ? $.support.transition && this.$tip.hasClass('fade') ?
removeWithAnimation() : removeWithAnimation() :
$tip.remove() $tip.remove()
return this
} }
, fixTitle: function () { , fixTitle: function () {
...@@ -236,7 +238,7 @@ ...@@ -236,7 +238,7 @@
} }
, destroy: function () { , destroy: function () {
this.$element.off().removeData('tooltip') this.hide().$element.off('.' + this.type).removeData(this.type)
} }
} }
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
, transEndEventNames = { , transEndEventNames = {
'WebkitTransition' : 'webkitTransitionEnd' 'WebkitTransition' : 'webkitTransitionEnd'
, 'MozTransition' : 'transitionend' , 'MozTransition' : 'transitionend'
, 'OTransition' : 'otransitionend' , 'OTransition' : 'oTransitionEnd otransitionend'
, 'msTransition' : 'MSTransitionEnd' , 'msTransition' : 'MSTransitionEnd'
, 'transition' : 'transitionend' , 'transition' : 'transitionend'
} }
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
this.query = this.$element.val() this.query = this.$element.val()
if (!this.query) { if (!this.query || this.query.length < this.options.minLength) {
return this.shown ? this.hide() : this return this.shown ? this.hide() : this
} }
...@@ -279,12 +279,13 @@ ...@@ -279,12 +279,13 @@
, items: 8 , items: 8
, menu: '<ul class="typeahead dropdown-menu"></ul>' , menu: '<ul class="typeahead dropdown-menu"></ul>'
, item: '<li><a href="#"></a></li>' , item: '<li><a href="#"></a></li>'
, minLength: 1
} }
$.fn.typeahead.Constructor = Typeahead $.fn.typeahead.Constructor = Typeahead
/* TYPEAHEAD DATA-API /* TYPEAHEAD DATA-API
* ================== */ * ================== */
$(function () { $(function () {
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
, transEndEventNames = { , transEndEventNames = {
'WebkitTransition' : 'webkitTransitionEnd' 'WebkitTransition' : 'webkitTransitionEnd'
, 'MozTransition' : 'transitionend' , 'MozTransition' : 'transitionend'
, 'OTransition' : 'otransitionend' , 'OTransition' : 'oTransitionEnd otransitionend'
, 'msTransition' : 'MSTransitionEnd' , 'msTransition' : 'MSTransitionEnd'
, 'transition' : 'transitionend' , 'transition' : 'transitionend'
} }
...@@ -751,9 +751,9 @@ ...@@ -751,9 +751,9 @@
/* MODAL CLASS DEFINITION /* MODAL CLASS DEFINITION
* ====================== */ * ====================== */
var Modal = function (content, options) { var Modal = function (element, options) {
this.options = options this.options = options
this.$element = $(content) this.$element = $(element)
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
this.options.remote && this.$element.find('.modal-body').load(this.options.remote) this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
} }
...@@ -1000,8 +1000,8 @@ ...@@ -1000,8 +1000,8 @@
if (this.options.trigger != 'manual') { if (this.options.trigger != 'manual') {
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
} }
this.options.selector ? this.options.selector ?
...@@ -1129,6 +1129,8 @@ ...@@ -1129,6 +1129,8 @@
$.support.transition && this.$tip.hasClass('fade') ? $.support.transition && this.$tip.hasClass('fade') ?
removeWithAnimation() : removeWithAnimation() :
$tip.remove() $tip.remove()
return this
} }
, fixTitle: function () { , fixTitle: function () {
...@@ -1189,7 +1191,7 @@ ...@@ -1189,7 +1191,7 @@
} }
, destroy: function () { , destroy: function () {
this.$element.off().removeData('tooltip') this.hide().$element.off('.' + this.type).removeData(this.type)
} }
} }
...@@ -1250,7 +1252,7 @@ ...@@ -1250,7 +1252,7 @@
/* POPOVER PUBLIC CLASS DEFINITION /* POPOVER PUBLIC CLASS DEFINITION
* =============================== */ * =============================== */
var Popover = function ( element, options ) { var Popover = function (element, options) {
this.init('popover', element, options) this.init('popover', element, options)
} }
...@@ -1296,7 +1298,7 @@ ...@@ -1296,7 +1298,7 @@
} }
, destroy: function () { , destroy: function () {
this.$element.off().removeData('popover') this.hide().$element.off('.' + this.type).removeData(this.type)
} }
}) })
...@@ -1348,15 +1350,15 @@ ...@@ -1348,15 +1350,15 @@
"use strict"; // jshint ;_; "use strict"; // jshint ;_;
/* SCROLLSPY CLASS DEFINITION /* SCROLLSPY CLASS DEFINITION
* ========================== */ * ========================== */
function ScrollSpy( element, options) { function ScrollSpy(element, options) {
var process = $.proxy(this.process, this) var process = $.proxy(this.process, this)
, $element = $(element).is('body') ? $(window) : $(element) , $element = $(element).is('body') ? $(window) : $(element)
, href , href
this.options = $.extend({}, $.fn.scrollspy.defaults, options) this.options = $.extend({}, $.fn.scrollspy.defaults, options)
this.$scrollElement = $element.on('scroll.scroll.data-api', process) this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
this.selector = (this.options.target this.selector = (this.options.target
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|| '') + ' .nav li > a' || '') + ' .nav li > a'
...@@ -1446,7 +1448,7 @@ ...@@ -1446,7 +1448,7 @@
/* SCROLLSPY PLUGIN DEFINITION /* SCROLLSPY PLUGIN DEFINITION
* =========================== */ * =========================== */
$.fn.scrollspy = function ( option ) { $.fn.scrollspy = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('scrollspy') , data = $this.data('scrollspy')
...@@ -1466,7 +1468,7 @@ ...@@ -1466,7 +1468,7 @@
/* SCROLLSPY DATA-API /* SCROLLSPY DATA-API
* ================== */ * ================== */
$(function () { $(window).on('load', function () {
$('[data-spy="scroll"]').each(function () { $('[data-spy="scroll"]').each(function () {
var $spy = $(this) var $spy = $(this)
$spy.scrollspy($spy.data()) $spy.scrollspy($spy.data())
...@@ -1501,7 +1503,7 @@ ...@@ -1501,7 +1503,7 @@
/* TAB CLASS DEFINITION /* TAB CLASS DEFINITION
* ==================== */ * ==================== */
var Tab = function ( element ) { var Tab = function (element) {
this.element = $(element) this.element = $(element)
} }
...@@ -1690,7 +1692,7 @@ ...@@ -1690,7 +1692,7 @@
this.query = this.$element.val() this.query = this.$element.val()
if (!this.query) { if (!this.query || this.query.length < this.options.minLength) {
return this.shown ? this.hide() : this return this.shown ? this.hide() : this
} }
...@@ -1888,12 +1890,13 @@ ...@@ -1888,12 +1890,13 @@
, items: 8 , items: 8
, menu: '<ul class="typeahead dropdown-menu"></ul>' , menu: '<ul class="typeahead dropdown-menu"></ul>'
, item: '<li><a href="#"></a></li>' , item: '<li><a href="#"></a></li>'
, minLength: 1
} }
$.fn.typeahead.Constructor = Typeahead $.fn.typeahead.Constructor = Typeahead
/* TYPEAHEAD DATA-API /* TYPEAHEAD DATA-API
* ================== */ * ================== */
$(function () { $(function () {
......
This diff is collapsed.
...@@ -78,7 +78,6 @@ ...@@ -78,7 +78,6 @@
</div> </div>
</header> </header>
<div class="bs-docs-canvas"> <div class="bs-docs-canvas">
<div class="container"> <div class="container">
...@@ -1798,6 +1797,7 @@ For example, &lt;code&gt;section&lt;/code&gt; should be wrapped as inline. ...@@ -1798,6 +1797,7 @@ For example, &lt;code&gt;section&lt;/code&gt; should be wrapped as inline.
<script src="assets/js/bootstrap-collapse.js"></script> <script src="assets/js/bootstrap-collapse.js"></script>
<script src="assets/js/bootstrap-carousel.js"></script> <script src="assets/js/bootstrap-carousel.js"></script>
<script src="assets/js/bootstrap-typeahead.js"></script> <script src="assets/js/bootstrap-typeahead.js"></script>
<script src="assets/js/bootstrap-affix.js"></script>
<script src="assets/js/application.js"></script> <script src="assets/js/application.js"></script>
......
...@@ -2198,6 +2198,7 @@ class="clearfix" ...@@ -2198,6 +2198,7 @@ class="clearfix"
<script src="assets/js/bootstrap-collapse.js"></script> <script src="assets/js/bootstrap-collapse.js"></script>
<script src="assets/js/bootstrap-carousel.js"></script> <script src="assets/js/bootstrap-carousel.js"></script>
<script src="assets/js/bootstrap-typeahead.js"></script> <script src="assets/js/bootstrap-typeahead.js"></script>
<script src="assets/js/bootstrap-affix.js"></script>
<script src="assets/js/application.js"></script> <script src="assets/js/application.js"></script>
......
...@@ -96,7 +96,6 @@ ...@@ -96,7 +96,6 @@
<div class="span9"> <div class="span9">
<!-- Customize form <!-- Customize form
================================================== --> ================================================== -->
<form> <form>
...@@ -470,6 +469,7 @@ ...@@ -470,6 +469,7 @@
<script src="assets/js/bootstrap-collapse.js"></script> <script src="assets/js/bootstrap-collapse.js"></script>
<script src="assets/js/bootstrap-carousel.js"></script> <script src="assets/js/bootstrap-carousel.js"></script>
<script src="assets/js/bootstrap-typeahead.js"></script> <script src="assets/js/bootstrap-typeahead.js"></script>
<script src="assets/js/bootstrap-affix.js"></script>
<script src="assets/js/application.js"></script> <script src="assets/js/application.js"></script>
......
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
================================================== --> ================================================== -->
<div class="row"> <div class="row">
<div class="span3 bs-docs-sidebar"> <div class="span3 bs-docs-sidebar">
<ul class="nav nav-list bs-docs-sidenav"> <ul class="nav nav-list bs-docs-sidenav" data-spy="affix" data-offset-y="80">
<li><a href="#built-with-less">Built with LESS <i class="icon-chevron-right"></i></a></li> <li><a href="#built-with-less">Built with LESS <i class="icon-chevron-right"></i></a></li>
<li><a href="#compiling">Compiling Bootstrap <i class="icon-chevron-right"></i></a></li> <li><a href="#compiling">Compiling Bootstrap <i class="icon-chevron-right"></i></a></li>
<li><a href="#static-assets">Use as static assets <i class="icon-chevron-right"></i></a></li> <li><a href="#static-assets">Use as static assets <i class="icon-chevron-right"></i></a></li>
...@@ -281,6 +281,7 @@ ...@@ -281,6 +281,7 @@
<script src="assets/js/bootstrap-collapse.js"></script> <script src="assets/js/bootstrap-collapse.js"></script>
<script src="assets/js/bootstrap-carousel.js"></script> <script src="assets/js/bootstrap-carousel.js"></script>
<script src="assets/js/bootstrap-typeahead.js"></script> <script src="assets/js/bootstrap-typeahead.js"></script>
<script src="assets/js/bootstrap-affix.js"></script>
<script src="assets/js/application.js"></script> <script src="assets/js/application.js"></script>
......
...@@ -327,6 +327,7 @@ ...@@ -327,6 +327,7 @@
<script src="assets/js/bootstrap-collapse.js"></script> <script src="assets/js/bootstrap-collapse.js"></script>
<script src="assets/js/bootstrap-carousel.js"></script> <script src="assets/js/bootstrap-carousel.js"></script>
<script src="assets/js/bootstrap-typeahead.js"></script> <script src="assets/js/bootstrap-typeahead.js"></script>
<script src="assets/js/bootstrap-affix.js"></script>
<script src="assets/js/application.js"></script> <script src="assets/js/application.js"></script>
......
...@@ -201,6 +201,7 @@ ...@@ -201,6 +201,7 @@
<script src="assets/js/bootstrap-collapse.js"></script> <script src="assets/js/bootstrap-collapse.js"></script>
<script src="assets/js/bootstrap-carousel.js"></script> <script src="assets/js/bootstrap-carousel.js"></script>
<script src="assets/js/bootstrap-typeahead.js"></script> <script src="assets/js/bootstrap-typeahead.js"></script>
<script src="assets/js/bootstrap-affix.js"></script>
<script src="assets/js/application.js"></script> <script src="assets/js/application.js"></script>
......
This diff is collapsed.
Supports Markdown
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