locomotivecms_wagon 2.0.0.rc2 → 2.0.0.rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/generators/{bootstrap3 → bootstrap}/Gemfile.tt +0 -0
  4. data/generators/{bootstrap3 → bootstrap}/app/content_types/.empty_directory +0 -0
  5. data/generators/bootstrap/app/views/pages/404.liquid +18 -0
  6. data/generators/bootstrap/app/views/pages/404.liquid.haml +14 -0
  7. data/generators/bootstrap/app/views/pages/index.liquid +31 -0
  8. data/generators/bootstrap/app/views/pages/index.liquid.haml +25 -0
  9. data/generators/bootstrap/app/views/pages/layouts/default.liquid +31 -0
  10. data/generators/bootstrap/app/views/pages/layouts/default.liquid.haml +30 -0
  11. data/generators/bootstrap/app/views/pages/layouts/simple.liquid +36 -0
  12. data/generators/bootstrap/app/views/pages/layouts/simple.liquid.haml +29 -0
  13. data/generators/bootstrap/app/views/snippets/footer.liquid +5 -0
  14. data/generators/bootstrap/app/views/snippets/footer.liquid.haml +3 -0
  15. data/generators/bootstrap/app/views/snippets/nav.liquid +26 -0
  16. data/generators/bootstrap/app/views/snippets/nav.liquid.haml +19 -0
  17. data/generators/{bootstrap3 → bootstrap}/config/deploy.yml +0 -0
  18. data/generators/bootstrap/config/site.yml.tt +1 -6
  19. data/generators/{bootstrap3 → bootstrap}/config/translations.yml +0 -0
  20. data/generators/{bootstrap3 → bootstrap}/data/.empty_directory +0 -0
  21. data/generators/{bootstrap3 → bootstrap}/icon.png +0 -0
  22. data/generators/bootstrap/public/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  23. data/generators/bootstrap/public/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  24. data/generators/bootstrap/public/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  25. data/generators/bootstrap/public/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  26. data/generators/bootstrap/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  27. data/generators/{bootstrap3/public/samples → bootstrap/public/images}/favicon.png +0 -0
  28. data/generators/bootstrap/public/javascripts/application.js +2 -0
  29. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/affix.js +60 -35
  30. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/alert.js +15 -9
  31. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/button.js +33 -20
  32. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/carousel.js +79 -47
  33. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/collapse.js +84 -43
  34. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/dropdown.js +64 -46
  35. data/generators/bootstrap/public/javascripts/bootstrap/modal.js +337 -0
  36. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/popover.js +12 -14
  37. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/scrollspy.js +57 -38
  38. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/tab.js +54 -24
  39. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/tooltip.js +202 -87
  40. data/generators/{bootstrap3 → bootstrap}/public/javascripts/bootstrap/transition.js +19 -8
  41. data/generators/bootstrap/public/javascripts/bootstrap.min.js +7 -0
  42. data/generators/bootstrap/public/javascripts/jquery.min.js +5 -0
  43. data/generators/bootstrap/public/stylesheets/application.css +7 -0
  44. data/generators/bootstrap/public/stylesheets/application.scss +7 -0
  45. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_alerts.scss +9 -3
  46. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_badges.scss +26 -13
  47. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_breadcrumbs.scss +3 -1
  48. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_button-groups.scss +32 -14
  49. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_buttons.scss +22 -13
  50. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_carousel.scss +43 -6
  51. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_close.scss +1 -0
  52. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_code.scss +7 -1
  53. data/generators/bootstrap/public/stylesheets/bootstrap/_component-animations.scss +37 -0
  54. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_dropdowns.scss +12 -9
  55. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_forms.scss +240 -65
  56. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_glyphicons.scss +83 -9
  57. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_grid.scss +4 -4
  58. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_input-groups.scss +7 -2
  59. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_jumbotron.scss +12 -4
  60. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_labels.scss +11 -9
  61. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_list-group.scss +32 -12
  62. data/generators/bootstrap/public/stylesheets/bootstrap/_media.scss +66 -0
  63. data/generators/bootstrap/public/stylesheets/bootstrap/_mixins.scss +40 -0
  64. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_modals.scss +18 -7
  65. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_navbar.scss +75 -33
  66. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_navs.scss +4 -4
  67. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_normalize.scss +29 -28
  68. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_pager.scss +2 -3
  69. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_pagination.scss +4 -3
  70. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_panels.scss +40 -10
  71. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_popovers.scss +6 -8
  72. data/generators/bootstrap/public/stylesheets/bootstrap/_print.scss +101 -0
  73. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_progress-bars.scss +13 -6
  74. data/generators/bootstrap/public/stylesheets/bootstrap/_responsive-embed.scss +35 -0
  75. data/generators/bootstrap/public/stylesheets/bootstrap/_responsive-utilities.scss +179 -0
  76. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_scaffolding.scss +31 -4
  77. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_tables.scss +17 -16
  78. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_theme.scss +57 -13
  79. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_thumbnails.scss +2 -2
  80. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_tooltip.scss +13 -7
  81. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_type.scss +38 -24
  82. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_utilities.scss +3 -4
  83. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_variables.scss +86 -47
  84. data/generators/{bootstrap3 → bootstrap}/public/stylesheets/bootstrap/_wells.scss +0 -0
  85. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_alerts.scss +14 -0
  86. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_background-variant.scss +12 -0
  87. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
  88. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_buttons.scss +68 -0
  89. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
  90. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
  91. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_forms.scss +88 -0
  92. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_gradients.scss +58 -0
  93. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_grid-framework.scss +81 -0
  94. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_grid.scss +122 -0
  95. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
  96. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_image.scss +33 -0
  97. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_labels.scss +12 -0
  98. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_list-group.scss +32 -0
  99. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
  100. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  101. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_opacity.scss +8 -0
  102. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_pagination.scss +24 -0
  103. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_panels.scss +24 -0
  104. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_progress-bar.scss +10 -0
  105. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
  106. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_reset-text.scss +18 -0
  107. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_resize.scss +6 -0
  108. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_responsive-visibility.scss +21 -0
  109. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_size.scss +10 -0
  110. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
  111. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
  112. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_text-emphasis.scss +12 -0
  113. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
  114. data/generators/bootstrap/public/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  115. data/generators/bootstrap/public/stylesheets/bootstrap.css +5 -0
  116. data/generators/{bootstrap3/public/stylesheets/bootstrap.css.scss → bootstrap/public/stylesheets/bootstrap.scss} +16 -2
  117. data/lib/locomotive/wagon/cli.rb +3 -3
  118. data/lib/locomotive/wagon/commands/authenticate_command.rb +2 -1
  119. data/lib/locomotive/wagon/commands/concerns/spinner_concern.rb +29 -0
  120. data/lib/locomotive/wagon/commands/pull_command.rb +18 -3
  121. data/lib/locomotive/wagon/commands/push_command.rb +28 -4
  122. data/lib/locomotive/wagon/commands/sync_command.rb +21 -6
  123. data/lib/locomotive/wagon/commands/sync_sub_commands/sync_pages_command.rb +27 -3
  124. data/lib/locomotive/wagon/generators/site/{bootstrap3.rb → bootstrap.rb} +12 -6
  125. data/lib/locomotive/wagon/generators/site.rb +1 -1
  126. data/lib/locomotive/wagon/tools/listen.rb +1 -1
  127. data/lib/locomotive/wagon/version.rb +1 -1
  128. data/lib/locomotive/wagon.rb +2 -2
  129. data/locomotivecms_wagon.gemspec +3 -2
  130. data/spec/unit/decorators/theme_asset_decorator_spec.rb +10 -0
  131. metadata +124 -90
  132. data/generators/bootstrap3/app/views/pages/404.liquid +0 -13
  133. data/generators/bootstrap3/app/views/pages/404.liquid.haml +0 -10
  134. data/generators/bootstrap3/app/views/pages/index.liquid +0 -738
  135. data/generators/bootstrap3/app/views/pages/index.liquid.haml +0 -1018
  136. data/generators/bootstrap3/app/views/snippets/footer.liquid +0 -3
  137. data/generators/bootstrap3/app/views/snippets/footer.liquid.haml +0 -2
  138. data/generators/bootstrap3/config/site.yml.tt +0 -28
  139. data/generators/bootstrap3/public/fonts/glyphicons-halflings-regular.eot +0 -0
  140. data/generators/bootstrap3/public/fonts/glyphicons-halflings-regular.svg +0 -229
  141. data/generators/bootstrap3/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  142. data/generators/bootstrap3/public/fonts/glyphicons-halflings-regular.woff +0 -0
  143. data/generators/bootstrap3/public/images/.empty_directory +0 -1
  144. data/generators/bootstrap3/public/javascripts/bootstrap/modal.js +0 -243
  145. data/generators/bootstrap3/public/javascripts/bootstrap.min.js +0 -12
  146. data/generators/bootstrap3/public/samples/apple-touch-icon-114x114-precomposed.png +0 -0
  147. data/generators/bootstrap3/public/samples/apple-touch-icon-144x144-precomposed.png +0 -0
  148. data/generators/bootstrap3/public/samples/apple-touch-icon-72x72-precomposed.png +0 -0
  149. data/generators/bootstrap3/public/samples/apple-touch-icon-precomposed.png +0 -0
  150. data/generators/bootstrap3/public/stylesheets/application.css +0 -1
  151. data/generators/bootstrap3/public/stylesheets/application.css.scss +0 -8
  152. data/generators/bootstrap3/public/stylesheets/bootstrap/_component-animations.scss +0 -29
  153. data/generators/bootstrap3/public/stylesheets/bootstrap/_media.scss +0 -56
  154. data/generators/bootstrap3/public/stylesheets/bootstrap/_mixins.scss +0 -947
  155. data/generators/bootstrap3/public/stylesheets/bootstrap/_print.scss +0 -101
  156. data/generators/bootstrap3/public/stylesheets/bootstrap/_responsive-utilities.scss +0 -74
  157. data/generators/bootstrap3/public/stylesheets/bootstrap/bootstrap.css.scss +0 -49
  158. data/generators/bootstrap3/public/stylesheets/bootstrap.css +0 -5784
  159. data/lib/locomotive/wagon/generators/site/bootstrap2.rb +0 -34
@@ -0,0 +1,337 @@
1
+ /* ========================================================================
2
+ * Bootstrap: modal.js v3.3.5
3
+ * http://getbootstrap.com/javascript/#modals
4
+ * ========================================================================
5
+ * Copyright 2011-2015 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+
10
+ +function ($) {
11
+ 'use strict';
12
+
13
+ // MODAL CLASS DEFINITION
14
+ // ======================
15
+
16
+ var Modal = function (element, options) {
17
+ this.options = options
18
+ this.$body = $(document.body)
19
+ this.$element = $(element)
20
+ this.$dialog = this.$element.find('.modal-dialog')
21
+ this.$backdrop = null
22
+ this.isShown = null
23
+ this.originalBodyPad = null
24
+ this.scrollbarWidth = 0
25
+ this.ignoreBackdropClick = false
26
+
27
+ if (this.options.remote) {
28
+ this.$element
29
+ .find('.modal-content')
30
+ .load(this.options.remote, $.proxy(function () {
31
+ this.$element.trigger('loaded.bs.modal')
32
+ }, this))
33
+ }
34
+ }
35
+
36
+ Modal.VERSION = '3.3.5'
37
+
38
+ Modal.TRANSITION_DURATION = 300
39
+ Modal.BACKDROP_TRANSITION_DURATION = 150
40
+
41
+ Modal.DEFAULTS = {
42
+ backdrop: true,
43
+ keyboard: true,
44
+ show: true
45
+ }
46
+
47
+ Modal.prototype.toggle = function (_relatedTarget) {
48
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
49
+ }
50
+
51
+ Modal.prototype.show = function (_relatedTarget) {
52
+ var that = this
53
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
54
+
55
+ this.$element.trigger(e)
56
+
57
+ if (this.isShown || e.isDefaultPrevented()) return
58
+
59
+ this.isShown = true
60
+
61
+ this.checkScrollbar()
62
+ this.setScrollbar()
63
+ this.$body.addClass('modal-open')
64
+
65
+ this.escape()
66
+ this.resize()
67
+
68
+ this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
69
+
70
+ this.$dialog.on('mousedown.dismiss.bs.modal', function () {
71
+ that.$element.one('mouseup.dismiss.bs.modal', function (e) {
72
+ if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
73
+ })
74
+ })
75
+
76
+ this.backdrop(function () {
77
+ var transition = $.support.transition && that.$element.hasClass('fade')
78
+
79
+ if (!that.$element.parent().length) {
80
+ that.$element.appendTo(that.$body) // don't move modals dom position
81
+ }
82
+
83
+ that.$element
84
+ .show()
85
+ .scrollTop(0)
86
+
87
+ that.adjustDialog()
88
+
89
+ if (transition) {
90
+ that.$element[0].offsetWidth // force reflow
91
+ }
92
+
93
+ that.$element.addClass('in')
94
+
95
+ that.enforceFocus()
96
+
97
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
98
+
99
+ transition ?
100
+ that.$dialog // wait for modal to slide in
101
+ .one('bsTransitionEnd', function () {
102
+ that.$element.trigger('focus').trigger(e)
103
+ })
104
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
105
+ that.$element.trigger('focus').trigger(e)
106
+ })
107
+ }
108
+
109
+ Modal.prototype.hide = function (e) {
110
+ if (e) e.preventDefault()
111
+
112
+ e = $.Event('hide.bs.modal')
113
+
114
+ this.$element.trigger(e)
115
+
116
+ if (!this.isShown || e.isDefaultPrevented()) return
117
+
118
+ this.isShown = false
119
+
120
+ this.escape()
121
+ this.resize()
122
+
123
+ $(document).off('focusin.bs.modal')
124
+
125
+ this.$element
126
+ .removeClass('in')
127
+ .off('click.dismiss.bs.modal')
128
+ .off('mouseup.dismiss.bs.modal')
129
+
130
+ this.$dialog.off('mousedown.dismiss.bs.modal')
131
+
132
+ $.support.transition && this.$element.hasClass('fade') ?
133
+ this.$element
134
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
135
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
136
+ this.hideModal()
137
+ }
138
+
139
+ Modal.prototype.enforceFocus = function () {
140
+ $(document)
141
+ .off('focusin.bs.modal') // guard against infinite focus loop
142
+ .on('focusin.bs.modal', $.proxy(function (e) {
143
+ if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
144
+ this.$element.trigger('focus')
145
+ }
146
+ }, this))
147
+ }
148
+
149
+ Modal.prototype.escape = function () {
150
+ if (this.isShown && this.options.keyboard) {
151
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
152
+ e.which == 27 && this.hide()
153
+ }, this))
154
+ } else if (!this.isShown) {
155
+ this.$element.off('keydown.dismiss.bs.modal')
156
+ }
157
+ }
158
+
159
+ Modal.prototype.resize = function () {
160
+ if (this.isShown) {
161
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
162
+ } else {
163
+ $(window).off('resize.bs.modal')
164
+ }
165
+ }
166
+
167
+ Modal.prototype.hideModal = function () {
168
+ var that = this
169
+ this.$element.hide()
170
+ this.backdrop(function () {
171
+ that.$body.removeClass('modal-open')
172
+ that.resetAdjustments()
173
+ that.resetScrollbar()
174
+ that.$element.trigger('hidden.bs.modal')
175
+ })
176
+ }
177
+
178
+ Modal.prototype.removeBackdrop = function () {
179
+ this.$backdrop && this.$backdrop.remove()
180
+ this.$backdrop = null
181
+ }
182
+
183
+ Modal.prototype.backdrop = function (callback) {
184
+ var that = this
185
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
186
+
187
+ if (this.isShown && this.options.backdrop) {
188
+ var doAnimate = $.support.transition && animate
189
+
190
+ this.$backdrop = $(document.createElement('div'))
191
+ .addClass('modal-backdrop ' + animate)
192
+ .appendTo(this.$body)
193
+
194
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
195
+ if (this.ignoreBackdropClick) {
196
+ this.ignoreBackdropClick = false
197
+ return
198
+ }
199
+ if (e.target !== e.currentTarget) return
200
+ this.options.backdrop == 'static'
201
+ ? this.$element[0].focus()
202
+ : this.hide()
203
+ }, this))
204
+
205
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
206
+
207
+ this.$backdrop.addClass('in')
208
+
209
+ if (!callback) return
210
+
211
+ doAnimate ?
212
+ this.$backdrop
213
+ .one('bsTransitionEnd', callback)
214
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
215
+ callback()
216
+
217
+ } else if (!this.isShown && this.$backdrop) {
218
+ this.$backdrop.removeClass('in')
219
+
220
+ var callbackRemove = function () {
221
+ that.removeBackdrop()
222
+ callback && callback()
223
+ }
224
+ $.support.transition && this.$element.hasClass('fade') ?
225
+ this.$backdrop
226
+ .one('bsTransitionEnd', callbackRemove)
227
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
228
+ callbackRemove()
229
+
230
+ } else if (callback) {
231
+ callback()
232
+ }
233
+ }
234
+
235
+ // these following methods are used to handle overflowing modals
236
+
237
+ Modal.prototype.handleUpdate = function () {
238
+ this.adjustDialog()
239
+ }
240
+
241
+ Modal.prototype.adjustDialog = function () {
242
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
243
+
244
+ this.$element.css({
245
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
246
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
247
+ })
248
+ }
249
+
250
+ Modal.prototype.resetAdjustments = function () {
251
+ this.$element.css({
252
+ paddingLeft: '',
253
+ paddingRight: ''
254
+ })
255
+ }
256
+
257
+ Modal.prototype.checkScrollbar = function () {
258
+ var fullWindowWidth = window.innerWidth
259
+ if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
260
+ var documentElementRect = document.documentElement.getBoundingClientRect()
261
+ fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
262
+ }
263
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
264
+ this.scrollbarWidth = this.measureScrollbar()
265
+ }
266
+
267
+ Modal.prototype.setScrollbar = function () {
268
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
269
+ this.originalBodyPad = document.body.style.paddingRight || ''
270
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
271
+ }
272
+
273
+ Modal.prototype.resetScrollbar = function () {
274
+ this.$body.css('padding-right', this.originalBodyPad)
275
+ }
276
+
277
+ Modal.prototype.measureScrollbar = function () { // thx walsh
278
+ var scrollDiv = document.createElement('div')
279
+ scrollDiv.className = 'modal-scrollbar-measure'
280
+ this.$body.append(scrollDiv)
281
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
282
+ this.$body[0].removeChild(scrollDiv)
283
+ return scrollbarWidth
284
+ }
285
+
286
+
287
+ // MODAL PLUGIN DEFINITION
288
+ // =======================
289
+
290
+ function Plugin(option, _relatedTarget) {
291
+ return this.each(function () {
292
+ var $this = $(this)
293
+ var data = $this.data('bs.modal')
294
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
295
+
296
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
297
+ if (typeof option == 'string') data[option](_relatedTarget)
298
+ else if (options.show) data.show(_relatedTarget)
299
+ })
300
+ }
301
+
302
+ var old = $.fn.modal
303
+
304
+ $.fn.modal = Plugin
305
+ $.fn.modal.Constructor = Modal
306
+
307
+
308
+ // MODAL NO CONFLICT
309
+ // =================
310
+
311
+ $.fn.modal.noConflict = function () {
312
+ $.fn.modal = old
313
+ return this
314
+ }
315
+
316
+
317
+ // MODAL DATA-API
318
+ // ==============
319
+
320
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
321
+ var $this = $(this)
322
+ var href = $this.attr('href')
323
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
324
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
325
+
326
+ if ($this.is('a')) e.preventDefault()
327
+
328
+ $target.one('show.bs.modal', function (showEvent) {
329
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
330
+ $target.one('hidden.bs.modal', function () {
331
+ $this.is(':visible') && $this.trigger('focus')
332
+ })
333
+ })
334
+ Plugin.call($target, option, this)
335
+ })
336
+
337
+ }(jQuery);
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: popover.js v3.1.1
2
+ * Bootstrap: popover.js v3.3.5
3
3
  * http://getbootstrap.com/javascript/#popovers
4
4
  * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
5
+ * Copyright 2011-2015 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -19,11 +19,13 @@
19
19
 
20
20
  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
21
21
 
22
+ Popover.VERSION = '3.3.5'
23
+
22
24
  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
23
25
  placement: 'right',
24
26
  trigger: 'click',
25
27
  content: '',
26
- template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
28
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
27
29
  })
28
30
 
29
31
 
@@ -44,7 +46,7 @@
44
46
  var content = this.getContent()
45
47
 
46
48
  $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
47
- $tip.find('.popover-content')[ // we use append for html objects to maintain js events
49
+ $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
48
50
  this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
49
51
  ](content)
50
52
 
@@ -70,32 +72,28 @@
70
72
  }
71
73
 
72
74
  Popover.prototype.arrow = function () {
73
- return this.$arrow = this.$arrow || this.tip().find('.arrow')
74
- }
75
-
76
- Popover.prototype.tip = function () {
77
- if (!this.$tip) this.$tip = $(this.options.template)
78
- return this.$tip
75
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
79
76
  }
80
77
 
81
78
 
82
79
  // POPOVER PLUGIN DEFINITION
83
80
  // =========================
84
81
 
85
- var old = $.fn.popover
86
-
87
- $.fn.popover = function (option) {
82
+ function Plugin(option) {
88
83
  return this.each(function () {
89
84
  var $this = $(this)
90
85
  var data = $this.data('bs.popover')
91
86
  var options = typeof option == 'object' && option
92
87
 
93
- if (!data && option == 'destroy') return
88
+ if (!data && /destroy|hide/.test(option)) return
94
89
  if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
95
90
  if (typeof option == 'string') data[option]()
96
91
  })
97
92
  }
98
93
 
94
+ var old = $.fn.popover
95
+
96
+ $.fn.popover = Plugin
99
97
  $.fn.popover.Constructor = Popover
100
98
 
101
99
 
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: scrollspy.js v3.1.1
2
+ * Bootstrap: scrollspy.js v3.3.5
3
3
  * http://getbootstrap.com/javascript/#scrollspy
4
4
  * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
5
+ * Copyright 2011-2015 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -14,36 +14,45 @@
14
14
  // ==========================
15
15
 
16
16
  function ScrollSpy(element, options) {
17
- var href
18
- var process = $.proxy(this.process, this)
19
-
20
- this.$element = $(element).is('body') ? $(window) : $(element)
21
- this.$body = $('body')
22
- this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
17
+ this.$body = $(document.body)
18
+ this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
23
19
  this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
24
- this.selector = (this.options.target
25
- || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
26
- || '') + ' .nav li > a'
27
- this.offsets = $([])
28
- this.targets = $([])
20
+ this.selector = (this.options.target || '') + ' .nav li > a'
21
+ this.offsets = []
22
+ this.targets = []
29
23
  this.activeTarget = null
24
+ this.scrollHeight = 0
30
25
 
26
+ this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
31
27
  this.refresh()
32
28
  this.process()
33
29
  }
34
30
 
31
+ ScrollSpy.VERSION = '3.3.5'
32
+
35
33
  ScrollSpy.DEFAULTS = {
36
34
  offset: 10
37
35
  }
38
36
 
37
+ ScrollSpy.prototype.getScrollHeight = function () {
38
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
39
+ }
40
+
39
41
  ScrollSpy.prototype.refresh = function () {
40
- var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
42
+ var that = this
43
+ var offsetMethod = 'offset'
44
+ var offsetBase = 0
45
+
46
+ this.offsets = []
47
+ this.targets = []
48
+ this.scrollHeight = this.getScrollHeight()
41
49
 
42
- this.offsets = $([])
43
- this.targets = $([])
50
+ if (!$.isWindow(this.$scrollElement[0])) {
51
+ offsetMethod = 'position'
52
+ offsetBase = this.$scrollElement.scrollTop()
53
+ }
44
54
 
45
- var self = this
46
- var $targets = this.$body
55
+ this.$body
47
56
  .find(this.selector)
48
57
  .map(function () {
49
58
  var $el = $(this)
@@ -53,50 +62,53 @@
53
62
  return ($href
54
63
  && $href.length
55
64
  && $href.is(':visible')
56
- && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
65
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
57
66
  })
58
67
  .sort(function (a, b) { return a[0] - b[0] })
59
68
  .each(function () {
60
- self.offsets.push(this[0])
61
- self.targets.push(this[1])
69
+ that.offsets.push(this[0])
70
+ that.targets.push(this[1])
62
71
  })
63
72
  }
64
73
 
65
74
  ScrollSpy.prototype.process = function () {
66
75
  var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
67
- var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
68
- var maxScroll = scrollHeight - this.$scrollElement.height()
76
+ var scrollHeight = this.getScrollHeight()
77
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
69
78
  var offsets = this.offsets
70
79
  var targets = this.targets
71
80
  var activeTarget = this.activeTarget
72
81
  var i
73
82
 
83
+ if (this.scrollHeight != scrollHeight) {
84
+ this.refresh()
85
+ }
86
+
74
87
  if (scrollTop >= maxScroll) {
75
- return activeTarget != (i = targets.last()[0]) && this.activate(i)
88
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
76
89
  }
77
90
 
78
- if (activeTarget && scrollTop <= offsets[0]) {
79
- return activeTarget != (i = targets[0]) && this.activate(i)
91
+ if (activeTarget && scrollTop < offsets[0]) {
92
+ this.activeTarget = null
93
+ return this.clear()
80
94
  }
81
95
 
82
96
  for (i = offsets.length; i--;) {
83
97
  activeTarget != targets[i]
84
98
  && scrollTop >= offsets[i]
85
- && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
86
- && this.activate( targets[i] )
99
+ && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
100
+ && this.activate(targets[i])
87
101
  }
88
102
  }
89
103
 
90
104
  ScrollSpy.prototype.activate = function (target) {
91
105
  this.activeTarget = target
92
106
 
93
- $(this.selector)
94
- .parentsUntil(this.options.target, '.active')
95
- .removeClass('active')
107
+ this.clear()
96
108
 
97
109
  var selector = this.selector +
98
- '[data-target="' + target + '"],' +
99
- this.selector + '[href="' + target + '"]'
110
+ '[data-target="' + target + '"],' +
111
+ this.selector + '[href="' + target + '"]'
100
112
 
101
113
  var active = $(selector)
102
114
  .parents('li')
@@ -111,13 +123,17 @@
111
123
  active.trigger('activate.bs.scrollspy')
112
124
  }
113
125
 
126
+ ScrollSpy.prototype.clear = function () {
127
+ $(this.selector)
128
+ .parentsUntil(this.options.target, '.active')
129
+ .removeClass('active')
130
+ }
131
+
114
132
 
115
133
  // SCROLLSPY PLUGIN DEFINITION
116
134
  // ===========================
117
135
 
118
- var old = $.fn.scrollspy
119
-
120
- $.fn.scrollspy = function (option) {
136
+ function Plugin(option) {
121
137
  return this.each(function () {
122
138
  var $this = $(this)
123
139
  var data = $this.data('bs.scrollspy')
@@ -128,6 +144,9 @@
128
144
  })
129
145
  }
130
146
 
147
+ var old = $.fn.scrollspy
148
+
149
+ $.fn.scrollspy = Plugin
131
150
  $.fn.scrollspy.Constructor = ScrollSpy
132
151
 
133
152
 
@@ -143,10 +162,10 @@
143
162
  // SCROLLSPY DATA-API
144
163
  // ==================
145
164
 
146
- $(window).on('load', function () {
165
+ $(window).on('load.bs.scrollspy.data-api', function () {
147
166
  $('[data-spy="scroll"]').each(function () {
148
167
  var $spy = $(this)
149
- $spy.scrollspy($spy.data())
168
+ Plugin.call($spy, $spy.data())
150
169
  })
151
170
  })
152
171