application.js 4.16 KB
Newer Older
1
2
3
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S ALL JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
4

5
!function ($) {
6

7
  $(function(){
Jacob Thornton's avatar
Jacob Thornton committed
8

9
10
    var $window = $(window)

fat's avatar
fat committed
11
12
13
14
15
16
17
    var navHeight = $('.navbar').outerHeight(true) + 10

    $(document.body).scrollspy({
      target: '.bs-sidebar',
      offset: navHeight
    })

Mark Otto's avatar
Mark Otto committed
18
    $('[href=#]').click(function (e) {
19
20
21
      e.preventDefault()
    })

22
    $(document.body).on('click', '.bs-sidenav [href^=#]', function (e) {
fat's avatar
fat committed
23
24
25
26
27
28
29
30
      var $target = $(this.getAttribute('href'))

      e.preventDefault() // prevent browser scroll

      document.body.scrollTop =
        $target.offset().top -
        navHeight + 5 // offset scroll by nav
    })
fat's avatar
fat committed
31

32
    // back to top
Mark Otto's avatar
Mark Otto committed
33
    setTimeout(function () {
fat's avatar
fat committed
34
35
36
      var $sideBar = $('.bs-sidebar')

      $sideBar.affix({
Mark Otto's avatar
Mark Otto committed
37
        offset: {
fat's avatar
fat committed
38
39
40
41
42
43
44
45
46
47
          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))
          }
Mark Otto's avatar
Mark Otto committed
48
49
50
        }
      })
    }, 100)
51

52
    setTimeout(function () {
Mark Otto's avatar
Mark Otto committed
53
      $('.bs-top').affix()
54
55
    }, 100)

Jacob Thornton's avatar
Jacob Thornton committed
56
    // tooltip demo
57
    $('.tooltip-demo').tooltip({
58
      selector: "[data-toggle=tooltip]"
Jacob Thornton's avatar
Jacob Thornton committed
59
    })
60

61
62
    $('.tooltip-test').tooltip()
    $('.popover-test').popover()
Jacob Thornton's avatar
Jacob Thornton committed
63

Mark Otto's avatar
Mark Otto committed
64
65
66
67
68
    $('.bs-docs-navbar').tooltip({
      selector: "a[data-toggle=tooltip]",
      container: ".bs-docs-navbar .nav"
    })

Jacob Thornton's avatar
Jacob Thornton committed
69
    // popover demo
70
    $("[data-toggle=popover]")
Jacob Thornton's avatar
Jacob Thornton committed
71
72
73
74
75
76
77
78
79
80
81
82
83
      .popover()

    // button state demo
    $('#fat-btn')
      .click(function () {
        var btn = $(this)
        btn.button('loading')
        setTimeout(function () {
          btn.button('reset')
        }, 3000)
      })

    // carousel demo
84
    $('.bs-docs-carousel-example').carousel()
Jacob Thornton's avatar
Jacob Thornton committed
85
86

    // javascript build logic
Mark Otto's avatar
Mark Otto committed
87
    var inputsComponent = $("#less input")
88
      , inputsPlugin = $("#plugins input")
89
      , inputsVariables = $("#less-variables input")
Jacob Thornton's avatar
Jacob Thornton committed
90
91

    // toggle all plugin checkboxes
92
    $('#less .toggle').on('click', function (e) {
Jacob Thornton's avatar
Jacob Thornton committed
93
      e.preventDefault()
94
      inputsComponent.prop('checked', !inputsComponent.is(':checked'))
Jacob Thornton's avatar
Jacob Thornton committed
95
96
    })

97
    $('#plugins .toggle').on('click', function (e) {
Jacob Thornton's avatar
Jacob Thornton committed
98
      e.preventDefault()
99
      inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
Jacob Thornton's avatar
Jacob Thornton committed
100
101
    })

102
    $('#less-variables .toggle').on('click', function (e) {
Jacob Thornton's avatar
Jacob Thornton committed
103
104
105
106
107
      e.preventDefault()
      inputsVariables.val('')
    })

    // request built javascript
108
109
    $('.bs-customize-download .btn').on('click', function (e) {
      e.preventDefault()
Jacob Thornton's avatar
Jacob Thornton committed
110

111
      var css = $("#less input:checked")
Jacob Thornton's avatar
Jacob Thornton committed
112
113
            .map(function () { return this.value })
            .toArray()
114
        , js = $("#plugins input:checked")
Jacob Thornton's avatar
Jacob Thornton committed
115
116
117
118
            .map(function () { return this.value })
            .toArray()
        , vars = {}

119
120
121
      $("#less-variables input")
        .each(function () {
          $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
Jacob Thornton's avatar
Jacob Thornton committed
122
123
124
125
      })

      $.ajax({
        type: 'POST'
126
      , url: /localhost/.test(window.location) ? 'http://localhost:9001' : 'http://bootstrap.herokuapp.com'
Jacob Thornton's avatar
Jacob Thornton committed
127
128
      , dataType: 'jsonpi'
      , params: {
Jacob Thornton's avatar
Jacob Thornton committed
129
          js: js
Jacob Thornton's avatar
Jacob Thornton committed
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
        , 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()
    }
  }
})
168

169
}(window.jQuery)