0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-11-30 12:24:19 +01:00
Bootstrap/assets/js/application.js

175 lines
4.3 KiB
JavaScript
Raw Normal View History

// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S ALL JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
!function ($) {
$(function(){
2012-01-25 02:13:02 +01:00
var $window = $(window)
2013-07-27 04:25:45 +02:00
var navHeight = $('.navbar').outerHeight(true) + 10
$(document.body).scrollspy({
target: '.bs-sidebar',
offset: navHeight
})
// Disable certain links in docs
$('.bs-docs-container [href=#]').click(function (e) {
2012-01-23 23:14:16 +01:00
e.preventDefault()
})
2013-07-27 04:25:45 +02:00
$(document.body).on('click', '[href^=#]', function (e) {
var $target = $(this.getAttribute('href'))
e.preventDefault() // prevent browser scroll
document.body.scrollTop =
$target.offset().top -
navHeight + 5 // offset scroll by nav
})
2013-07-26 08:30:13 +02:00
2013-03-31 03:41:26 +02:00
// back to top
setTimeout(function () {
2013-07-26 08:30:13 +02:00
var $sideBar = $('.bs-sidebar')
$sideBar.affix({
offset: {
2013-07-26 08:30:13 +02:00
top: function () {
var offsetTop = $sideBar.offset().top
var sideBarMargin = parseInt($sideBar.children(0).css('margin-top'), 10)
var navOuterHeight = $('.bs-docs-nav').height()
return (this.top = offsetTop - navOuterHeight - sideBarMargin)
}
, bottom: function () {
return (this.bottom = $('.bs-footer').outerHeight(true))
}
}
})
}, 100)
2013-03-31 03:41:26 +02:00
setTimeout(function () {
2013-05-09 07:52:48 +02:00
$('.bs-top').affix()
2013-03-31 03:41:26 +02:00
}, 100)
2012-01-28 09:46:04 +01:00
// tooltip demo
$('.tooltip-demo').tooltip({
selector: "[data-toggle=tooltip]"
2012-01-28 09:46:04 +01:00
})
$('.tooltip-test').tooltip()
$('.popover-test').popover()
2012-01-28 09:46:04 +01:00
2013-03-28 07:33:45 +01:00
$('.bs-docs-navbar').tooltip({
selector: "a[data-toggle=tooltip]",
container: ".bs-docs-navbar .nav"
})
2012-01-28 09:46:04 +01:00
// popover demo
$("a[data-toggle=popover]")
2012-01-28 09:46:04 +01:00
.popover()
.click(function(e) {
e.preventDefault()
})
// button state demo
$('#fat-btn')
.click(function () {
var btn = $(this)
btn.button('loading')
setTimeout(function () {
btn.button('reset')
}, 3000)
})
// carousel demo
$('.bs-docs-carousel-example').carousel()
2012-01-28 09:46:04 +01:00
// javascript build logic
2013-05-24 06:34:32 +02:00
var inputsComponent = $("#less input")
, inputsPlugin = $("#plugins input")
, inputsVariables = $("#less-variables input")
2012-01-28 09:46:04 +01:00
// toggle all plugin checkboxes
$('#less .toggle').on('click', function (e) {
2012-01-28 09:46:04 +01:00
e.preventDefault()
inputsComponent.prop('checked', !inputsComponent.is(':checked'))
2012-01-28 09:46:04 +01:00
})
$('#plugins .toggle').on('click', function (e) {
2012-01-28 09:46:04 +01:00
e.preventDefault()
inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
2012-01-28 09:46:04 +01:00
})
$('#less-variables .toggle').on('click', function (e) {
2012-01-28 09:46:04 +01:00
e.preventDefault()
inputsVariables.val('')
})
// request built javascript
$('.bs-customize-download .btn').on('click', function (e) {
e.preventDefault()
2012-01-28 09:46:04 +01:00
var css = $("#less input:checked")
2012-01-28 09:46:04 +01:00
.map(function () { return this.value })
.toArray()
, js = $("#plugins input:checked")
2012-01-28 09:46:04 +01:00
.map(function () { return this.value })
.toArray()
, vars = {}
$("#less-variables input")
.each(function () {
$(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
2012-01-28 09:46:04 +01:00
})
$.ajax({
type: 'POST'
, url: /localhost/.test(window.location) ? 'http://localhost:9001' : 'http://bootstrap.herokuapp.com'
2012-01-28 09:46:04 +01:00
, dataType: 'jsonpi'
, params: {
2012-02-02 07:30:51 +01:00
js: js
2012-01-28 09:46:04 +01:00
, css: css
, vars: vars
}
})
})
})
// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
var url = opts.url;
return {
send: function(_, completeCallback) {
var name = 'jQuery_iframe_' + jQuery.now()
, iframe, form
iframe = $('<iframe>')
.attr('name', name)
.appendTo('head')
form = $('<form>')
.attr('method', opts.type) // GET or POST
.attr('action', url)
.attr('target', name)
$.each(opts.params, function(k, v) {
$('<input>')
.attr('type', 'hidden')
.attr('name', k)
.attr('value', typeof v == 'string' ? v : JSON.stringify(v))
.appendTo(form)
})
form.appendTo('body').submit()
}
}
})
}(window.jQuery)