application.js 4.06 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
    // Demos within modals
85
86
    $('.tooltip-test').tooltip()
    $('.popover-test').popover()
Jacob Thornton's avatar
Jacob Thornton committed
87

Mark Otto's avatar
Mark Otto committed
88
    // Default popover demo
Mark Otto's avatar
Mark Otto committed
89
90
    $('.bs-docs-popover').popover()

Mark Otto's avatar
Mark Otto committed
91
92
93
94
95
96
97
    // 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
98
    })
Jacob Thornton's avatar
Jacob Thornton committed
99

Mark Otto's avatar
Mark Otto committed
100
101
102

    // Config ZeroClipboard
    ZeroClipboard.config({
XhmikosR's avatar
XhmikosR committed
103
      moviePath: '/assets/flash/ZeroClipboard.swf',
Mark Otto's avatar
Mark Otto committed
104
105
106
107
      hoverClass: 'btn-clipboard-hover'
    })

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

    // Handlers for ZeroClipboard
123
    zeroClipboard.on('load', function () {
124
      htmlBridge
Mark Otto's avatar
Mark Otto committed
125
126
        .data('placement', 'top')
        .attr('title', 'Copy to clipboard')
127
128
129
130
        .tooltip()
    })

    // Copy to clipboard
131
    zeroClipboard.on('dataRequested', function (client) {
132
133
134
135
136
      var highlight = $(this).parent().nextAll('.highlight').first()
      client.setText(highlight.text())
    })

    // Notify copy success and reset tooltip title
137
    zeroClipboard.on('complete', function () {
138
      htmlBridge
Mark Otto's avatar
Mark Otto committed
139
        .attr('title', 'Copied!')
140
141
        .tooltip('fixTitle')
        .tooltip('show')
Mark Otto's avatar
Mark Otto committed
142
        .attr('title', 'Copy to clipboard')
143
144
145
146
        .tooltip('fixTitle')
    })

    // Notify copy failure
147
    zeroClipboard.on('noflash wrongflash', function () {
148
      htmlBridge
Mark Otto's avatar
Mark Otto committed
149
        .attr('title', 'Flash required')
150
151
152
153
        .tooltip('fixTitle')
        .tooltip('show')
    })

154
  })
155

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