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

5
/*!
6
 * JavaScript for Bootstrap's docs (http://getbootstrap.com)
7
 * Copyright 2011-2014 Twitter, Inc.
8
9
 * Licensed under the Creative Commons Attribution 3.0 Unported License. For
 * details, see http://creativecommons.org/licenses/by/3.0/.
10
11
 */

12
/* global ZeroClipboard */
13

14
!function ($) {
XhmikosR's avatar
XhmikosR committed
15
  'use strict';
16

17
  $(function () {
Jacob Thornton's avatar
Jacob Thornton committed
18

Mark Otto's avatar
Mark Otto committed
19
    // Scrollspy
20
    var $window = $(window)
Jacob Thornton's avatar
Jacob Thornton committed
21
    var $body   = $(document.body)
22

Jacob Thornton's avatar
Jacob Thornton committed
23
    $body.scrollspy({
XhmikosR's avatar
XhmikosR committed
24
      target: '.bs-docs-sidebar'
fat's avatar
fat committed
25
    })
26
27
28
29
    $window.on('load', function () {
      $body.scrollspy('refresh')
    })

Mark Otto's avatar
Mark Otto committed
30
    // Kill links
Jacob Thornton's avatar
Jacob Thornton committed
31
    $('.bs-docs-container [href=#]').click(function (e) {
32
33
34
      e.preventDefault()
    })

Mark Otto's avatar
Mark Otto committed
35
    // Sidenav affixing
Mark Otto's avatar
Mark Otto committed
36
    setTimeout(function () {
37
      var $sideBar = $('.bs-docs-sidebar')
fat's avatar
fat committed
38
39

      $sideBar.affix({
Mark Otto's avatar
Mark Otto committed
40
        offset: {
fat's avatar
fat committed
41
42
43
44
45
46
          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)
47
48
          },
          bottom: function () {
49
            return (this.bottom = $('.bs-docs-footer').outerHeight(true))
fat's avatar
fat committed
50
          }
Mark Otto's avatar
Mark Otto committed
51
52
53
        }
      })
    }, 100)
54

55
    setTimeout(function () {
Mark Otto's avatar
Mark Otto committed
56
      $('.bs-top').affix()
57
58
    }, 100)

59
60
61
    // theme toggler
    ;(function () {
      var stylesheetLink = $('#bs-theme-stylesheet')
Mark Otto's avatar
Mark Otto committed
62
      var themeBtn = $('.bs-docs-theme-toggle')
63
64
65
66
67
68
69
70
71
72
73

      var activateTheme = function () {
        stylesheetLink.attr('href', stylesheetLink.attr('data-href'))
        themeBtn.text('Disable theme preview')
        localStorage.setItem('previewTheme', true)
      }

      if (localStorage.getItem('previewTheme')) {
        activateTheme()
      }

74
      themeBtn.click(function () {
75
        var href = stylesheetLink.attr('href')
76
        if (!href || href.indexOf('data') === 0) {
77
78
          activateTheme()
        } else {
79
          stylesheetLink.attr('href', '')
Mark Otto's avatar
Mark Otto committed
80
          themeBtn.text('Preview theme')
81
          localStorage.removeItem('previewTheme')
82
        }
83
84
85
      })
    })();

Mark Otto's avatar
Mark Otto committed
86
    // Tooltip and popover demos
87
    $('.tooltip-demo').tooltip({
88
      selector: '[data-toggle="tooltip"]',
XhmikosR's avatar
XhmikosR committed
89
      container: 'body'
Jacob Thornton's avatar
Jacob Thornton committed
90
    })
91
92
93
94
    $('.popover-demo').popover({
      selector: '[data-toggle="popover"]',
      container: 'body'
    })
95

96
    // Demos within modals
97
98
    $('.tooltip-test').tooltip()
    $('.popover-test').popover()
Jacob Thornton's avatar
Jacob Thornton committed
99

100
    // Popover demos
Mark Otto's avatar
Mark Otto committed
101
102
    $('.bs-docs-popover').popover()

Mark Otto's avatar
Mark Otto committed
103
104
105
106
107
108
109
    // Button state demo
    $('#loading-example-btn').click(function () {
      var btn = $(this)
      btn.button('loading')
      setTimeout(function () {
        btn.button('reset')
      }, 3000)
Mark Otto's avatar
Mark Otto committed
110
    })
Jacob Thornton's avatar
Jacob Thornton committed
111

Mark Otto's avatar
Mark Otto committed
112
113
114

    // Config ZeroClipboard
    ZeroClipboard.config({
XhmikosR's avatar
XhmikosR committed
115
      moviePath: '/assets/flash/ZeroClipboard.swf',
Mark Otto's avatar
Mark Otto committed
116
117
118
119
      hoverClass: 'btn-clipboard-hover'
    })

    // Insert copy to clipboard button before .highlight or .bs-example
120
    $('.highlight').each(function () {
Mark Otto's avatar
Mark Otto committed
121
122
123
124
125
126
127
128
129
130
131
132
      var highlight = $(this)
      var previous = highlight.prev()
      var btnHtml = '<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>'

      if (previous.hasClass('bs-example')) {
        previous.before(btnHtml.replace(/btn-clipboard/, 'btn-clipboard with-example'))
      } else {
        highlight.before(btnHtml)
      }
    })
    var zeroClipboard = new ZeroClipboard($('.btn-clipboard'))
    var htmlBridge = $('#global-zeroclipboard-html-bridge')
133
134

    // Handlers for ZeroClipboard
135
    zeroClipboard.on('load', function () {
136
      htmlBridge
Mark Otto's avatar
Mark Otto committed
137
138
        .data('placement', 'top')
        .attr('title', 'Copy to clipboard')
139
140
141
142
        .tooltip()
    })

    // Copy to clipboard
143
    zeroClipboard.on('dataRequested', function (client) {
144
145
146
147
148
      var highlight = $(this).parent().nextAll('.highlight').first()
      client.setText(highlight.text())
    })

    // Notify copy success and reset tooltip title
149
    zeroClipboard.on('complete', function () {
150
      htmlBridge
Mark Otto's avatar
Mark Otto committed
151
        .attr('title', 'Copied!')
152
153
        .tooltip('fixTitle')
        .tooltip('show')
Mark Otto's avatar
Mark Otto committed
154
        .attr('title', 'Copy to clipboard')
155
156
157
158
        .tooltip('fixTitle')
    })

    // Notify copy failure
159
    zeroClipboard.on('noflash wrongflash', function () {
160
      htmlBridge
Mark Otto's avatar
Mark Otto committed
161
        .attr('title', 'Flash required')
162
163
164
165
        .tooltip('fixTitle')
        .tooltip('show')
    })

166
  })
167

Zlatan Vasović's avatar
Zlatan Vasović committed
168
}(jQuery)