unignore bower_components
[bootswatch] / bower_components / bootstrap / assets / js / application.js
1 // NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
2 // IT'S ALL JUST JUNK FOR OUR DOCS!
3 // ++++++++++++++++++++++++++++++++++++++++++
4
5 !function ($) {
6
7   $(function(){
8
9     var $window = $(window)
10
11     var navHeight = $('.navbar').outerHeight(true) + 10
12
13     $(document.body).scrollspy({
14       target: '.bs-sidebar',
15       offset: navHeight
16     })
17
18     $('[href=#]').click(function (e) {
19       e.preventDefault()
20     })
21
22     $(document.body).on('click', '.bs-sidenav [href^=#]', function (e) {
23       var $target = $(this.getAttribute('href'))
24
25       e.preventDefault() // prevent browser scroll
26
27       document.body.scrollTop =
28         $target.offset().top -
29         navHeight + 5 // offset scroll by nav
30     })
31
32     // back to top
33     setTimeout(function () {
34       var $sideBar = $('.bs-sidebar')
35
36       $sideBar.affix({
37         offset: {
38           top: function () {
39             var offsetTop      = $sideBar.offset().top
40             var sideBarMargin  = parseInt($sideBar.children(0).css('margin-top'), 10)
41             var navOuterHeight = $('.bs-docs-nav').height()
42
43             return (this.top = offsetTop - navOuterHeight - sideBarMargin)
44           }
45         , bottom: function () {
46             return (this.bottom = $('.bs-footer').outerHeight(true))
47           }
48         }
49       })
50     }, 100)
51
52     setTimeout(function () {
53       $('.bs-top').affix()
54     }, 100)
55
56     // tooltip demo
57     $('.tooltip-demo').tooltip({
58       selector: "[data-toggle=tooltip]"
59     })
60
61     $('.tooltip-test').tooltip()
62     $('.popover-test').popover()
63
64     $('.bs-docs-navbar').tooltip({
65       selector: "a[data-toggle=tooltip]",
66       container: ".bs-docs-navbar .nav"
67     })
68
69     // popover demo
70     $("[data-toggle=popover]")
71       .popover()
72
73     // button state demo
74     $('#fat-btn')
75       .click(function () {
76         var btn = $(this)
77         btn.button('loading')
78         setTimeout(function () {
79           btn.button('reset')
80         }, 3000)
81       })
82
83     // carousel demo
84     $('.bs-docs-carousel-example').carousel()
85
86     // javascript build logic
87     var inputsComponent = $("#less input")
88       , inputsPlugin = $("#plugins input")
89       , inputsVariables = $("#less-variables input")
90
91     // toggle all plugin checkboxes
92     $('#less .toggle').on('click', function (e) {
93       e.preventDefault()
94       inputsComponent.prop('checked', !inputsComponent.is(':checked'))
95     })
96
97     $('#plugins .toggle').on('click', function (e) {
98       e.preventDefault()
99       inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
100     })
101
102     $('#less-variables .toggle').on('click', function (e) {
103       e.preventDefault()
104       inputsVariables.val('')
105     })
106
107     // request built javascript
108     $('.bs-customize-download .btn').on('click', function (e) {
109       e.preventDefault()
110
111       var css = $("#less input:checked")
112             .map(function () { return this.value })
113             .toArray()
114         , js = $("#plugins input:checked")
115             .map(function () { return this.value })
116             .toArray()
117         , vars = {}
118
119       $("#less-variables input")
120         .each(function () {
121           $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
122       })
123
124       $.ajax({
125         type: 'POST'
126       , url: /localhost/.test(window.location) ? 'http://localhost:9001' : 'http://bootstrap.herokuapp.com'
127       , dataType: 'jsonpi'
128       , params: {
129           js: js
130         , css: css
131         , vars: vars
132       }
133       })
134     })
135   })
136
137 // Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
138 $.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
139   var url = opts.url;
140
141   return {
142     send: function(_, completeCallback) {
143       var name = 'jQuery_iframe_' + jQuery.now()
144         , iframe, form
145
146       iframe = $('<iframe>')
147         .attr('name', name)
148         .appendTo('head')
149
150       form = $('<form>')
151         .attr('method', opts.type) // GET or POST
152         .attr('action', url)
153         .attr('target', name)
154
155       $.each(opts.params, function(k, v) {
156
157         $('<input>')
158           .attr('type', 'hidden')
159           .attr('name', k)
160           .attr('value', typeof v == 'string' ? v : JSON.stringify(v))
161           .appendTo(form)
162       })
163
164       form.appendTo('body').submit()
165     }
166   }
167 })
168
169 }(window.jQuery)