entreprise7pro-bootstrap-sass 3.4.6

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 (171) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.travis.yml +19 -0
  4. data/CHANGELOG.md +233 -0
  5. data/CONTRIBUTING.md +86 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE +22 -0
  8. data/README.md +376 -0
  9. data/Rakefile +98 -0
  10. data/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  11. data/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  12. data/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  13. data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  14. data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  15. data/assets/images/.keep +0 -0
  16. data/assets/javascripts/bootstrap/affix.js +166 -0
  17. data/assets/javascripts/bootstrap/alert.js +97 -0
  18. data/assets/javascripts/bootstrap/button.js +136 -0
  19. data/assets/javascripts/bootstrap/carousel.js +248 -0
  20. data/assets/javascripts/bootstrap/collapse.js +214 -0
  21. data/assets/javascripts/bootstrap/dropdown.js +167 -0
  22. data/assets/javascripts/bootstrap/modal.js +356 -0
  23. data/assets/javascripts/bootstrap/popover.js +123 -0
  24. data/assets/javascripts/bootstrap/scrollspy.js +174 -0
  25. data/assets/javascripts/bootstrap/tab.js +157 -0
  26. data/assets/javascripts/bootstrap/tooltip.js +679 -0
  27. data/assets/javascripts/bootstrap/transition.js +61 -0
  28. data/assets/javascripts/bootstrap-sprockets.js +12 -0
  29. data/assets/javascripts/bootstrap.js +2611 -0
  30. data/assets/javascripts/bootstrap.min.js +7 -0
  31. data/assets/javascripts/jquery.min.js +2 -0
  32. data/assets/stylesheets/_bootstrap-compass.scss +9 -0
  33. data/assets/stylesheets/_bootstrap-mincer.scss +19 -0
  34. data/assets/stylesheets/_bootstrap-sprockets.scss +9 -0
  35. data/assets/stylesheets/_bootstrap.scss +56 -0
  36. data/assets/stylesheets/bootstrap/_alerts.scss +73 -0
  37. data/assets/stylesheets/bootstrap/_badges.scss +68 -0
  38. data/assets/stylesheets/bootstrap/_breadcrumbs.scss +28 -0
  39. data/assets/stylesheets/bootstrap/_button-groups.scss +244 -0
  40. data/assets/stylesheets/bootstrap/_buttons.scss +168 -0
  41. data/assets/stylesheets/bootstrap/_carousel.scss +263 -0
  42. data/assets/stylesheets/bootstrap/_close.scss +37 -0
  43. data/assets/stylesheets/bootstrap/_code.scss +70 -0
  44. data/assets/stylesheets/bootstrap/_component-animations.scss +38 -0
  45. data/assets/stylesheets/bootstrap/_dropdowns.scss +212 -0
  46. data/assets/stylesheets/bootstrap/_forms.scss +602 -0
  47. data/assets/stylesheets/bootstrap/_glyphicons.scss +307 -0
  48. data/assets/stylesheets/bootstrap/_grid.scss +94 -0
  49. data/assets/stylesheets/bootstrap/_input-groups.scss +166 -0
  50. data/assets/stylesheets/bootstrap/_jumbotron.scss +55 -0
  51. data/assets/stylesheets/bootstrap/_labels.scss +66 -0
  52. data/assets/stylesheets/bootstrap/_list-group.scss +128 -0
  53. data/assets/stylesheets/bootstrap/_media.scss +66 -0
  54. data/assets/stylesheets/bootstrap/_mixins.scss +39 -0
  55. data/assets/stylesheets/bootstrap/_modals.scss +150 -0
  56. data/assets/stylesheets/bootstrap/_navbar.scss +657 -0
  57. data/assets/stylesheets/bootstrap/_navs.scss +242 -0
  58. data/assets/stylesheets/bootstrap/_normalize.scss +422 -0
  59. data/assets/stylesheets/bootstrap/_pager.scss +54 -0
  60. data/assets/stylesheets/bootstrap/_pagination.scss +86 -0
  61. data/assets/stylesheets/bootstrap/_panels.scss +271 -0
  62. data/assets/stylesheets/bootstrap/_popovers.scss +126 -0
  63. data/assets/stylesheets/bootstrap/_print.scss +99 -0
  64. data/assets/stylesheets/bootstrap/_progress-bars.scss +87 -0
  65. data/assets/stylesheets/bootstrap/_responsive-embed.scss +35 -0
  66. data/assets/stylesheets/bootstrap/_responsive-utilities.scss +157 -0
  67. data/assets/stylesheets/bootstrap/_scaffolding.scss +161 -0
  68. data/assets/stylesheets/bootstrap/_tables.scss +233 -0
  69. data/assets/stylesheets/bootstrap/_theme.scss +293 -0
  70. data/assets/stylesheets/bootstrap/_thumbnails.scss +38 -0
  71. data/assets/stylesheets/bootstrap/_tooltip.scss +112 -0
  72. data/assets/stylesheets/bootstrap/_type.scss +299 -0
  73. data/assets/stylesheets/bootstrap/_utilities.scss +55 -0
  74. data/assets/stylesheets/bootstrap/_variables.scss +875 -0
  75. data/assets/stylesheets/bootstrap/_wells.scss +29 -0
  76. data/assets/stylesheets/bootstrap/mixins/_alerts.scss +15 -0
  77. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +12 -0
  78. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
  79. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +61 -0
  80. data/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
  81. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
  82. data/assets/stylesheets/bootstrap/mixins/_forms.scss +88 -0
  83. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +50 -0
  84. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +82 -0
  85. data/assets/stylesheets/bootstrap/mixins/_grid.scss +123 -0
  86. data/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
  87. data/assets/stylesheets/bootstrap/mixins/_image.scss +28 -0
  88. data/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
  89. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +32 -0
  90. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +11 -0
  91. data/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +10 -0
  92. data/assets/stylesheets/bootstrap/mixins/_opacity.scss +7 -0
  93. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +24 -0
  94. data/assets/stylesheets/bootstrap/mixins/_panels.scss +24 -0
  95. data/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +10 -0
  96. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +18 -0
  97. data/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
  98. data/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +17 -0
  99. data/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
  100. data/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
  101. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
  102. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +12 -0
  103. data/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
  104. data/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +210 -0
  105. data/bower.json +38 -0
  106. data/composer.json +21 -0
  107. data/entreprise7pro-bootstrap-sass.gemspec +37 -0
  108. data/eyeglass-exports.js +7 -0
  109. data/lib/entreprise7pro-bootstrap-sass/engine.rb +17 -0
  110. data/lib/entreprise7pro-bootstrap-sass/version.rb +4 -0
  111. data/lib/entreprise7pro-bootstrap-sass.rb +91 -0
  112. data/package-lock.json +1011 -0
  113. data/package.json +48 -0
  114. data/sache.json +5 -0
  115. data/tasks/bower.rake +31 -0
  116. data/tasks/converter/char_string_scanner.rb +38 -0
  117. data/tasks/converter/fonts_conversion.rb +16 -0
  118. data/tasks/converter/js_conversion.rb +47 -0
  119. data/tasks/converter/less_conversion.rb +752 -0
  120. data/tasks/converter/logger.rb +57 -0
  121. data/tasks/converter/network.rb +97 -0
  122. data/tasks/converter.rb +80 -0
  123. data/templates/project/_bootstrap-variables.sass +876 -0
  124. data/templates/project/manifest.rb +20 -0
  125. data/templates/project/styles.sass +6 -0
  126. data/test/compilation_test.rb +30 -0
  127. data/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png +0 -0
  128. data/test/dummy_node_mincer/application.css.ejs.scss +6 -0
  129. data/test/dummy_node_mincer/manifest.js +87 -0
  130. data/test/dummy_rails/README.rdoc +3 -0
  131. data/test/dummy_rails/Rakefile +6 -0
  132. data/test/dummy_rails/app/assets/images/.keep +0 -0
  133. data/test/dummy_rails/app/assets/javascripts/application.js +2 -0
  134. data/test/dummy_rails/app/assets/stylesheets/application.sass +2 -0
  135. data/test/dummy_rails/app/controllers/application_controller.rb +5 -0
  136. data/test/dummy_rails/app/controllers/pages_controller.rb +4 -0
  137. data/test/dummy_rails/app/helpers/application_helper.rb +2 -0
  138. data/test/dummy_rails/app/views/layouts/application.html.erb +14 -0
  139. data/test/dummy_rails/app/views/pages/root.html.slim +84 -0
  140. data/test/dummy_rails/config/application.rb +31 -0
  141. data/test/dummy_rails/config/boot.rb +5 -0
  142. data/test/dummy_rails/config/environment.rb +5 -0
  143. data/test/dummy_rails/config/environments/development.rb +23 -0
  144. data/test/dummy_rails/config/environments/production.rb +82 -0
  145. data/test/dummy_rails/config/environments/test.rb +38 -0
  146. data/test/dummy_rails/config/initializers/backtrace_silencers.rb +7 -0
  147. data/test/dummy_rails/config/initializers/filter_parameter_logging.rb +4 -0
  148. data/test/dummy_rails/config/initializers/inflections.rb +16 -0
  149. data/test/dummy_rails/config/initializers/mime_types.rb +5 -0
  150. data/test/dummy_rails/config/initializers/secret_token.rb +18 -0
  151. data/test/dummy_rails/config/initializers/session_store.rb +3 -0
  152. data/test/dummy_rails/config/initializers/wrap_parameters.rb +14 -0
  153. data/test/dummy_rails/config/locales/en.yml +3 -0
  154. data/test/dummy_rails/config/locales/es.yml +3 -0
  155. data/test/dummy_rails/config/routes.rb +3 -0
  156. data/test/dummy_rails/config.ru +4 -0
  157. data/test/dummy_rails/log/.keep +0 -0
  158. data/test/dummy_sass_only/Gemfile +4 -0
  159. data/test/dummy_sass_only/compile.rb +20 -0
  160. data/test/dummy_sass_only/import_all.scss +2 -0
  161. data/test/gemfiles/default.gemfile +3 -0
  162. data/test/node_mincer_test.rb +35 -0
  163. data/test/node_sass_compile_test.sh +9 -0
  164. data/test/pages_test.rb +14 -0
  165. data/test/sass_test.rb +29 -0
  166. data/test/sprockets_rails_test.rb +31 -0
  167. data/test/support/dummy_rails_integration.rb +22 -0
  168. data/test/support/reporting.rb +27 -0
  169. data/test/test_helper.rb +36 -0
  170. data/test/test_helper_rails.rb +6 -0
  171. metadata +467 -0
@@ -0,0 +1,356 @@
1
+ /* ========================================================================
2
+ * Bootstrap: modal.js v3.4.3
3
+ * https://bootstrap.7pro.ca/docs/3.4/javascript/#modals
4
+ * ========================================================================
5
+ * Copyright 2024 Entreprise 7pro.ca Inc.
6
+ * Licensed under MIT (https://github.com/entreprise7pro/bootstrap/blob/v3-dev/LICENSE)
7
+ * Copyright 2011-2019 Twitter, Inc.
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
9
+ * ======================================================================== */
10
+
11
+
12
+ +function ($) {
13
+ 'use strict';
14
+
15
+ // MODAL CLASS DEFINITION
16
+ // ======================
17
+
18
+ var Modal = function (element, options) {
19
+ this.options = options
20
+ this.$body = $(document.body)
21
+ this.$element = $(element)
22
+ this.$dialog = this.$element.find('.modal-dialog')
23
+ this.$backdrop = null
24
+ this.isShown = null
25
+ this.originalBodyPad = null
26
+ this.scrollbarWidth = 0
27
+ this.ignoreBackdropClick = false
28
+ this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
29
+
30
+ if (this.options.remote) {
31
+ this.$element
32
+ .find('.modal-content')
33
+ .load(this.options.remote, $.proxy(function () {
34
+ this.$element.trigger('loaded.bs.modal')
35
+ }, this))
36
+ }
37
+ }
38
+
39
+ Modal.VERSION = '3.4.3'
40
+
41
+ Modal.TRANSITION_DURATION = 300
42
+ Modal.BACKDROP_TRANSITION_DURATION = 150
43
+
44
+ Modal.DEFAULTS = {
45
+ backdrop: true,
46
+ keyboard: true,
47
+ show: true
48
+ }
49
+
50
+ Modal.prototype.toggle = function (_relatedTarget) {
51
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
52
+ }
53
+
54
+ Modal.prototype.show = function (_relatedTarget) {
55
+ var that = this
56
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
57
+
58
+ this.$element.trigger(e)
59
+
60
+ if (this.isShown || e.isDefaultPrevented()) return
61
+
62
+ this.isShown = true
63
+
64
+ this.checkScrollbar()
65
+ this.setScrollbar()
66
+ this.$body.addClass('modal-open')
67
+
68
+ this.escape()
69
+ this.resize()
70
+
71
+ this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
72
+
73
+ this.$dialog.on('mousedown.dismiss.bs.modal', function () {
74
+ that.$element.one('mouseup.dismiss.bs.modal', function (e) {
75
+ if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
76
+ })
77
+ })
78
+
79
+ this.backdrop(function () {
80
+ var transition = $.support.transition && that.$element.hasClass('fade')
81
+
82
+ if (!that.$element.parent().length) {
83
+ that.$element.appendTo(that.$body) // don't move modals dom position
84
+ }
85
+
86
+ that.$element
87
+ .show()
88
+ .scrollTop(0)
89
+
90
+ that.adjustDialog()
91
+
92
+ if (transition) {
93
+ that.$element[0].offsetWidth // force reflow
94
+ }
95
+
96
+ that.$element.addClass('in')
97
+
98
+ that.enforceFocus()
99
+
100
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
101
+
102
+ transition ?
103
+ that.$dialog // wait for modal to slide in
104
+ .one('bsTransitionEnd', function () {
105
+ that.$element.trigger('focus').trigger(e)
106
+ })
107
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
108
+ that.$element.trigger('focus').trigger(e)
109
+ })
110
+ }
111
+
112
+ Modal.prototype.hide = function (e) {
113
+ if (e) e.preventDefault()
114
+
115
+ e = $.Event('hide.bs.modal')
116
+
117
+ this.$element.trigger(e)
118
+
119
+ if (!this.isShown || e.isDefaultPrevented()) return
120
+
121
+ this.isShown = false
122
+
123
+ this.escape()
124
+ this.resize()
125
+
126
+ $(document).off('focusin.bs.modal')
127
+
128
+ this.$element
129
+ .removeClass('in')
130
+ .off('click.dismiss.bs.modal')
131
+ .off('mouseup.dismiss.bs.modal')
132
+
133
+ this.$dialog.off('mousedown.dismiss.bs.modal')
134
+
135
+ $.support.transition && this.$element.hasClass('fade') ?
136
+ this.$element
137
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
138
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
139
+ this.hideModal()
140
+ }
141
+
142
+ Modal.prototype.enforceFocus = function () {
143
+ $(document)
144
+ .off('focusin.bs.modal') // guard against infinite focus loop
145
+ .on('focusin.bs.modal', $.proxy(function (e) {
146
+ if (document !== e.target &&
147
+ this.$element[0] !== e.target &&
148
+ !this.$element.has(e.target).length) {
149
+ this.$element.trigger('focus')
150
+ }
151
+ }, this))
152
+ }
153
+
154
+ Modal.prototype.escape = function () {
155
+ if (this.isShown && this.options.keyboard) {
156
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
157
+ e.which == 27 && this.hide()
158
+ }, this))
159
+ } else if (!this.isShown) {
160
+ this.$element.off('keydown.dismiss.bs.modal')
161
+ }
162
+ }
163
+
164
+ Modal.prototype.resize = function () {
165
+ if (this.isShown) {
166
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
167
+ } else {
168
+ $(window).off('resize.bs.modal')
169
+ }
170
+ }
171
+
172
+ Modal.prototype.hideModal = function () {
173
+ var that = this
174
+ this.$element.hide()
175
+ this.backdrop(function () {
176
+ that.$body.removeClass('modal-open')
177
+ that.resetAdjustments()
178
+ that.resetScrollbar()
179
+ that.$element.trigger('hidden.bs.modal')
180
+ })
181
+ }
182
+
183
+ Modal.prototype.removeBackdrop = function () {
184
+ this.$backdrop && this.$backdrop.remove()
185
+ this.$backdrop = null
186
+ }
187
+
188
+ Modal.prototype.backdrop = function (callback) {
189
+ var that = this
190
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
191
+
192
+ if (this.isShown && this.options.backdrop) {
193
+ var doAnimate = $.support.transition && animate
194
+
195
+ this.$backdrop = $(document.createElement('div'))
196
+ .addClass('modal-backdrop ' + animate)
197
+ .appendTo(this.$body)
198
+
199
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
200
+ if (this.ignoreBackdropClick) {
201
+ this.ignoreBackdropClick = false
202
+ return
203
+ }
204
+ if (e.target !== e.currentTarget) return
205
+ this.options.backdrop == 'static'
206
+ ? this.$element[0].focus()
207
+ : this.hide()
208
+ }, this))
209
+
210
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
211
+
212
+ this.$backdrop.addClass('in')
213
+
214
+ if (!callback) return
215
+
216
+ doAnimate ?
217
+ this.$backdrop
218
+ .one('bsTransitionEnd', callback)
219
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
220
+ callback()
221
+
222
+ } else if (!this.isShown && this.$backdrop) {
223
+ this.$backdrop.removeClass('in')
224
+
225
+ var callbackRemove = function () {
226
+ that.removeBackdrop()
227
+ callback && callback()
228
+ }
229
+ $.support.transition && this.$element.hasClass('fade') ?
230
+ this.$backdrop
231
+ .one('bsTransitionEnd', callbackRemove)
232
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
233
+ callbackRemove()
234
+
235
+ } else if (callback) {
236
+ callback()
237
+ }
238
+ }
239
+
240
+ // these following methods are used to handle overflowing modals
241
+
242
+ Modal.prototype.handleUpdate = function () {
243
+ this.adjustDialog()
244
+ }
245
+
246
+ Modal.prototype.adjustDialog = function () {
247
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
248
+
249
+ this.$element.css({
250
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
251
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
252
+ })
253
+ }
254
+
255
+ Modal.prototype.resetAdjustments = function () {
256
+ this.$element.css({
257
+ paddingLeft: '',
258
+ paddingRight: ''
259
+ })
260
+ }
261
+
262
+ Modal.prototype.checkScrollbar = function () {
263
+ var fullWindowWidth = window.innerWidth
264
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
265
+ this.scrollbarWidth = this.measureScrollbar()
266
+ }
267
+
268
+ Modal.prototype.setScrollbar = function () {
269
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
270
+ this.originalBodyPad = document.body.style.paddingRight || ''
271
+ var scrollbarWidth = this.scrollbarWidth
272
+ if (this.bodyIsOverflowing) {
273
+ this.$body.css('padding-right', bodyPad + scrollbarWidth)
274
+ $(this.fixedContent).each(function (index, element) {
275
+ var actualPadding = element.style.paddingRight
276
+ var calculatedPadding = $(element).css('padding-right')
277
+ $(element)
278
+ .data('padding-right', actualPadding)
279
+ .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
280
+ })
281
+ }
282
+ }
283
+
284
+ Modal.prototype.resetScrollbar = function () {
285
+ this.$body.css('padding-right', this.originalBodyPad)
286
+ $(this.fixedContent).each(function (index, element) {
287
+ var padding = $(element).data('padding-right')
288
+ $(element).removeData('padding-right')
289
+ element.style.paddingRight = padding ? padding : ''
290
+ })
291
+ }
292
+
293
+ Modal.prototype.measureScrollbar = function () { // thx walsh
294
+ var scrollDiv = document.createElement('div')
295
+ scrollDiv.className = 'modal-scrollbar-measure'
296
+ this.$body.append(scrollDiv)
297
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
298
+ this.$body[0].removeChild(scrollDiv)
299
+ return scrollbarWidth
300
+ }
301
+
302
+
303
+ // MODAL PLUGIN DEFINITION
304
+ // =======================
305
+
306
+ function Plugin(option, _relatedTarget) {
307
+ return this.each(function () {
308
+ var $this = $(this)
309
+ var data = $this.data('bs.modal')
310
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
311
+
312
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
313
+ if (typeof option == 'string') data[option](_relatedTarget)
314
+ else if (options.show) data.show(_relatedTarget)
315
+ })
316
+ }
317
+
318
+ var old = $.fn.modal
319
+
320
+ $.fn.modal = Plugin
321
+ $.fn.modal.Constructor = Modal
322
+
323
+
324
+ // MODAL NO CONFLICT
325
+ // =================
326
+
327
+ $.fn.modal.noConflict = function () {
328
+ $.fn.modal = old
329
+ return this
330
+ }
331
+
332
+
333
+ // MODAL DATA-API
334
+ // ==============
335
+
336
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
337
+ var $this = $(this)
338
+ var href = $this.attr('href')
339
+ var target = $this.attr('data-target') ||
340
+ (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
341
+
342
+ var $target = $(document).find(target)
343
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
344
+
345
+ if ($this.is('a')) e.preventDefault()
346
+
347
+ $target.one('show.bs.modal', function (showEvent) {
348
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
349
+ $target.one('hidden.bs.modal', function () {
350
+ $this.is(':visible') && $this.trigger('focus')
351
+ })
352
+ })
353
+ Plugin.call($target, option, this)
354
+ })
355
+
356
+ }(jQuery);
@@ -0,0 +1,123 @@
1
+ /* ========================================================================
2
+ * Bootstrap: popover.js v3.4.3
3
+ * https://bootstrap.7pro.ca/docs/3.4/javascript/#popovers
4
+ * ========================================================================
5
+ * Copyright 2024 Entreprise 7pro.ca Inc.
6
+ * Licensed under MIT (https://github.com/entreprise7pro/bootstrap/blob/v3-dev/LICENSE)
7
+ * Copyright 2011-2019 Twitter, Inc.
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
9
+ * ======================================================================== */
10
+
11
+
12
+ +function ($) {
13
+ 'use strict';
14
+
15
+ // POPOVER PUBLIC CLASS DEFINITION
16
+ // ===============================
17
+
18
+ var Popover = function (element, options) {
19
+ this.init('popover', element, options)
20
+ }
21
+
22
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
23
+
24
+ Popover.VERSION = '3.4.3'
25
+
26
+ Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
27
+ placement: 'right',
28
+ trigger: 'click',
29
+ content: '',
30
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
31
+ })
32
+
33
+
34
+ // NOTE: POPOVER EXTENDS tooltip.js
35
+ // ================================
36
+
37
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
38
+
39
+ Popover.prototype.constructor = Popover
40
+
41
+ Popover.prototype.getDefaults = function () {
42
+ return Popover.DEFAULTS
43
+ }
44
+
45
+ Popover.prototype.setContent = function () {
46
+ var $tip = this.tip()
47
+ var title = this.getTitle()
48
+ var content = this.getContent()
49
+
50
+ if (this.options.html) {
51
+ var typeContent = typeof content
52
+
53
+ if (this.options.sanitize) {
54
+ title = this.sanitizeHtml(title)
55
+
56
+ if (typeContent === 'string') {
57
+ content = this.sanitizeHtml(content)
58
+ }
59
+ }
60
+
61
+ $tip.find('.popover-title').html(title)
62
+ $tip.find('.popover-content').children().detach().end()[
63
+ typeContent === 'string' ? 'html' : 'append'
64
+ ](content)
65
+ } else {
66
+ $tip.find('.popover-title').text(title)
67
+ $tip.find('.popover-content').children().detach().end().text(content)
68
+ }
69
+
70
+ $tip.removeClass('fade top bottom left right in')
71
+
72
+ $tip.find('.popover-title').hide()
73
+ }
74
+
75
+ Popover.prototype.hasContent = function () {
76
+ return this.getTitle() || this.getContent()
77
+ }
78
+
79
+ Popover.prototype.getContent = function () {
80
+ var $e = this.$element
81
+ var o = this.options
82
+
83
+ return $e.attr('data-content')
84
+ || (typeof o.content == 'function' ?
85
+ o.content.call($e[0]) :
86
+ o.content)
87
+ }
88
+
89
+ Popover.prototype.arrow = function () {
90
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
91
+ }
92
+
93
+
94
+ // POPOVER PLUGIN DEFINITION
95
+ // =========================
96
+
97
+ function Plugin(option) {
98
+ return this.each(function () {
99
+ var $this = $(this)
100
+ var data = $this.data('bs.popover')
101
+ var options = typeof option == 'object' && option
102
+
103
+ if (!data && /destroy|hide/.test(option)) return
104
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
105
+ if (typeof option == 'string') data[option]()
106
+ })
107
+ }
108
+
109
+ var old = $.fn.popover
110
+
111
+ $.fn.popover = Plugin
112
+ $.fn.popover.Constructor = Popover
113
+
114
+
115
+ // POPOVER NO CONFLICT
116
+ // ===================
117
+
118
+ $.fn.popover.noConflict = function () {
119
+ $.fn.popover = old
120
+ return this
121
+ }
122
+
123
+ }(jQuery);
@@ -0,0 +1,174 @@
1
+ /* ========================================================================
2
+ * Bootstrap: scrollspy.js v3.4.3
3
+ * https://bootstrap.7pro.ca/docs/3.4/javascript/#scrollspy
4
+ * ========================================================================
5
+ * Copyright 2024 Entreprise 7pro.ca Inc.
6
+ * Licensed under MIT (https://github.com/entreprise7pro/bootstrap/blob/v3-dev/LICENSE)
7
+ * Copyright 2011-2019 Twitter, Inc.
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
9
+ * ======================================================================== */
10
+
11
+
12
+ +function ($) {
13
+ 'use strict';
14
+
15
+ // SCROLLSPY CLASS DEFINITION
16
+ // ==========================
17
+
18
+ function ScrollSpy(element, options) {
19
+ this.$body = $(document.body)
20
+ this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
21
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
22
+ this.selector = (this.options.target || '') + ' .nav li > a'
23
+ this.offsets = []
24
+ this.targets = []
25
+ this.activeTarget = null
26
+ this.scrollHeight = 0
27
+
28
+ this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
29
+ this.refresh()
30
+ this.process()
31
+ }
32
+
33
+ ScrollSpy.VERSION = '3.4.3'
34
+
35
+ ScrollSpy.DEFAULTS = {
36
+ offset: 10
37
+ }
38
+
39
+ ScrollSpy.prototype.getScrollHeight = function () {
40
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
41
+ }
42
+
43
+ ScrollSpy.prototype.refresh = function () {
44
+ var that = this
45
+ var offsetMethod = 'offset'
46
+ var offsetBase = 0
47
+
48
+ this.offsets = []
49
+ this.targets = []
50
+ this.scrollHeight = this.getScrollHeight()
51
+
52
+ if (!$.isWindow(this.$scrollElement[0])) {
53
+ offsetMethod = 'position'
54
+ offsetBase = this.$scrollElement.scrollTop()
55
+ }
56
+
57
+ this.$body
58
+ .find(this.selector)
59
+ .map(function () {
60
+ var $el = $(this)
61
+ var href = $el.data('target') || $el.attr('href')
62
+ var $href = /^#./.test(href) && $(href)
63
+
64
+ return ($href
65
+ && $href.length
66
+ && $href.is(':visible')
67
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
68
+ })
69
+ .sort(function (a, b) { return a[0] - b[0] })
70
+ .each(function () {
71
+ that.offsets.push(this[0])
72
+ that.targets.push(this[1])
73
+ })
74
+ }
75
+
76
+ ScrollSpy.prototype.process = function () {
77
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
78
+ var scrollHeight = this.getScrollHeight()
79
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
80
+ var offsets = this.offsets
81
+ var targets = this.targets
82
+ var activeTarget = this.activeTarget
83
+ var i
84
+
85
+ if (this.scrollHeight != scrollHeight) {
86
+ this.refresh()
87
+ }
88
+
89
+ if (scrollTop >= maxScroll) {
90
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
91
+ }
92
+
93
+ if (activeTarget && scrollTop < offsets[0]) {
94
+ this.activeTarget = null
95
+ return this.clear()
96
+ }
97
+
98
+ for (i = offsets.length; i--;) {
99
+ activeTarget != targets[i]
100
+ && scrollTop >= offsets[i]
101
+ && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
102
+ && this.activate(targets[i])
103
+ }
104
+ }
105
+
106
+ ScrollSpy.prototype.activate = function (target) {
107
+ this.activeTarget = target
108
+
109
+ this.clear()
110
+
111
+ var selector = this.selector +
112
+ '[data-target="' + target + '"],' +
113
+ this.selector + '[href="' + target + '"]'
114
+
115
+ var active = $(selector)
116
+ .parents('li')
117
+ .addClass('active')
118
+
119
+ if (active.parent('.dropdown-menu').length) {
120
+ active = active
121
+ .closest('li.dropdown')
122
+ .addClass('active')
123
+ }
124
+
125
+ active.trigger('activate.bs.scrollspy')
126
+ }
127
+
128
+ ScrollSpy.prototype.clear = function () {
129
+ $(this.selector)
130
+ .parentsUntil(this.options.target, '.active')
131
+ .removeClass('active')
132
+ }
133
+
134
+
135
+ // SCROLLSPY PLUGIN DEFINITION
136
+ // ===========================
137
+
138
+ function Plugin(option) {
139
+ return this.each(function () {
140
+ var $this = $(this)
141
+ var data = $this.data('bs.scrollspy')
142
+ var options = typeof option == 'object' && option
143
+
144
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
145
+ if (typeof option == 'string') data[option]()
146
+ })
147
+ }
148
+
149
+ var old = $.fn.scrollspy
150
+
151
+ $.fn.scrollspy = Plugin
152
+ $.fn.scrollspy.Constructor = ScrollSpy
153
+
154
+
155
+ // SCROLLSPY NO CONFLICT
156
+ // =====================
157
+
158
+ $.fn.scrollspy.noConflict = function () {
159
+ $.fn.scrollspy = old
160
+ return this
161
+ }
162
+
163
+
164
+ // SCROLLSPY DATA-API
165
+ // ==================
166
+
167
+ $(window).on('load.bs.scrollspy.data-api', function () {
168
+ $('[data-spy="scroll"]').each(function () {
169
+ var $spy = $(this)
170
+ Plugin.call($spy, $spy.data())
171
+ })
172
+ })
173
+
174
+ }(jQuery);