application.js 4.25 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
31

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

Mark Otto's avatar
Mark Otto committed
36
37

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

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

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

61
62
63
    // theme toggler
    ;(function () {
      var stylesheetLink = $('#bs-theme-stylesheet')
Mark Otto's avatar
Mark Otto committed
64
      var themeBtn = $('.bs-docs-theme-toggle')
65
      themeBtn.click(function () {
66
67
        var href = stylesheetLink.attr('href');
        if (!href || href.indexOf('data') === 0) {
68
          stylesheetLink.attr('href', stylesheetLink.attr('data-href'))
Mark Otto's avatar
Mark Otto committed
69
          themeBtn.text('Disable theme preview')
70
        }
71
72
        else {
          stylesheetLink.attr('href', '')
Mark Otto's avatar
Mark Otto committed
73
          themeBtn.text('Preview theme')
74
        }
75
76
77
      })
    })();

Mark Otto's avatar
Mark Otto committed
78
    // Tooltip and popover demos
79
    $('.tooltip-demo').tooltip({
80
      selector: '[data-toggle="tooltip"]',
XhmikosR's avatar
XhmikosR committed
81
      container: 'body'
Jacob Thornton's avatar
Jacob Thornton committed
82
    })
83
84
85
86
    $('.popover-demo').popover({
      selector: '[data-toggle="popover"]',
      container: 'body'
    })
87

88
    // Demos within modals
89
90
    $('.tooltip-test').tooltip()
    $('.popover-test').popover()
Jacob Thornton's avatar
Jacob Thornton committed
91

92
    // Default & dismissible popover demos
Mark Otto's avatar
Mark Otto committed
93
    $('.bs-docs-popover').popover()
Chris Rebert's avatar
Chris Rebert committed
94
    $('.bs-docs-popover-dismiss').popover({ trigger: 'focus' })
Mark Otto's avatar
Mark Otto committed
95

Mark Otto's avatar
Mark Otto committed
96
97
98
99
100
101
102
    // 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
103
    })
Jacob Thornton's avatar
Jacob Thornton committed
104

Mark Otto's avatar
Mark Otto committed
105
106
107

    // Config ZeroClipboard
    ZeroClipboard.config({
XhmikosR's avatar
XhmikosR committed
108
      moviePath: '/assets/flash/ZeroClipboard.swf',
Mark Otto's avatar
Mark Otto committed
109
110
111
112
      hoverClass: 'btn-clipboard-hover'
    })

    // Insert copy to clipboard button before .highlight or .bs-example
113
    $('.highlight').each(function () {
Mark Otto's avatar
Mark Otto committed
114
115
116
117
118
119
120
121
122
123
124
125
      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')
126
127

    // Handlers for ZeroClipboard
128
    zeroClipboard.on('load', function () {
129
      htmlBridge
Mark Otto's avatar
Mark Otto committed
130
131
        .data('placement', 'top')
        .attr('title', 'Copy to clipboard')
132
133
134
135
        .tooltip()
    })

    // Copy to clipboard
136
    zeroClipboard.on('dataRequested', function (client) {
137
138
139
140
141
      var highlight = $(this).parent().nextAll('.highlight').first()
      client.setText(highlight.text())
    })

    // Notify copy success and reset tooltip title
142
    zeroClipboard.on('complete', function () {
143
      htmlBridge
Mark Otto's avatar
Mark Otto committed
144
        .attr('title', 'Copied!')
145
146
        .tooltip('fixTitle')
        .tooltip('show')
Mark Otto's avatar
Mark Otto committed
147
        .attr('title', 'Copy to clipboard')
148
149
150
151
        .tooltip('fixTitle')
    })

    // Notify copy failure
152
    zeroClipboard.on('noflash wrongflash', function () {
153
      htmlBridge
Mark Otto's avatar
Mark Otto committed
154
        .attr('title', 'Flash required')
155
156
157
158
        .tooltip('fixTitle')
        .tooltip('show')
    })

159
  })
160

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