binda 0.0.2 → 0.0.3

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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/binda/version.rb +1 -1
  4. data/lib/generators/binda/install/install_generator.rb +11 -2
  5. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  6. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  7. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  8. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  9. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  10. data/vendor/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  11. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  12. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.svg +2671 -0
  13. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  14. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  15. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  16. data/vendor/assets/javascripts/bootstrap-select.js +1895 -0
  17. data/vendor/assets/javascripts/bootstrap/bootstrap-sprockets.js +12 -0
  18. data/vendor/assets/javascripts/bootstrap/bootstrap.js +2377 -0
  19. data/vendor/assets/javascripts/bootstrap/bootstrap.min.js +7 -0
  20. data/vendor/assets/javascripts/bootstrap/bootstrap/affix.js +162 -0
  21. data/vendor/assets/javascripts/bootstrap/bootstrap/alert.js +94 -0
  22. data/vendor/assets/javascripts/bootstrap/bootstrap/button.js +125 -0
  23. data/vendor/assets/javascripts/bootstrap/bootstrap/carousel.js +237 -0
  24. data/vendor/assets/javascripts/bootstrap/bootstrap/collapse.js +212 -0
  25. data/vendor/assets/javascripts/bootstrap/bootstrap/dropdown.js +165 -0
  26. data/vendor/assets/javascripts/bootstrap/bootstrap/modal.js +339 -0
  27. data/vendor/assets/javascripts/bootstrap/bootstrap/popover.js +108 -0
  28. data/vendor/assets/javascripts/bootstrap/bootstrap/scrollspy.js +172 -0
  29. data/vendor/assets/javascripts/bootstrap/bootstrap/tab.js +155 -0
  30. data/vendor/assets/javascripts/bootstrap/bootstrap/tooltip.js +520 -0
  31. data/vendor/assets/javascripts/bootstrap/bootstrap/transition.js +59 -0
  32. data/vendor/assets/stylesheets/bootstrap-select.css +300 -0
  33. data/vendor/assets/stylesheets/bootstrap/_bootstrap-compass.scss +9 -0
  34. data/vendor/assets/stylesheets/bootstrap/_bootstrap-mincer.scss +19 -0
  35. data/vendor/assets/stylesheets/bootstrap/_bootstrap-sprockets.scss +9 -0
  36. data/vendor/assets/stylesheets/bootstrap/bootstrap.scss +58 -0
  37. data/vendor/assets/stylesheets/bootstrap/bootstrap/_alerts.scss +73 -0
  38. data/vendor/assets/stylesheets/bootstrap/bootstrap/_badges.scss +68 -0
  39. data/vendor/assets/stylesheets/bootstrap/bootstrap/_breadcrumbs.scss +28 -0
  40. data/vendor/assets/stylesheets/bootstrap/bootstrap/_button-groups.scss +244 -0
  41. data/vendor/assets/stylesheets/bootstrap/bootstrap/_buttons.scss +168 -0
  42. data/vendor/assets/stylesheets/bootstrap/bootstrap/_carousel.scss +270 -0
  43. data/vendor/assets/stylesheets/bootstrap/bootstrap/_close.scss +36 -0
  44. data/vendor/assets/stylesheets/bootstrap/bootstrap/_code.scss +69 -0
  45. data/vendor/assets/stylesheets/bootstrap/bootstrap/_component-animations.scss +37 -0
  46. data/vendor/assets/stylesheets/bootstrap/bootstrap/_dropdowns.scss +216 -0
  47. data/vendor/assets/stylesheets/bootstrap/bootstrap/_forms.scss +617 -0
  48. data/vendor/assets/stylesheets/bootstrap/bootstrap/_glyphicons.scss +307 -0
  49. data/vendor/assets/stylesheets/bootstrap/bootstrap/_grid.scss +84 -0
  50. data/vendor/assets/stylesheets/bootstrap/bootstrap/_input-groups.scss +171 -0
  51. data/vendor/assets/stylesheets/bootstrap/bootstrap/_jumbotron.scss +54 -0
  52. data/vendor/assets/stylesheets/bootstrap/bootstrap/_labels.scss +66 -0
  53. data/vendor/assets/stylesheets/bootstrap/bootstrap/_list-group.scss +130 -0
  54. data/vendor/assets/stylesheets/bootstrap/bootstrap/_media.scss +66 -0
  55. data/vendor/assets/stylesheets/bootstrap/bootstrap/_mixins.scss +40 -0
  56. data/vendor/assets/stylesheets/bootstrap/bootstrap/_modals.scss +150 -0
  57. data/vendor/assets/stylesheets/bootstrap/bootstrap/_navbar.scss +662 -0
  58. data/vendor/assets/stylesheets/bootstrap/bootstrap/_navs.scss +242 -0
  59. data/vendor/assets/stylesheets/bootstrap/bootstrap/_normalize.scss +424 -0
  60. data/vendor/assets/stylesheets/bootstrap/bootstrap/_pager.scss +54 -0
  61. data/vendor/assets/stylesheets/bootstrap/bootstrap/_pagination.scss +89 -0
  62. data/vendor/assets/stylesheets/bootstrap/bootstrap/_panels.scss +271 -0
  63. data/vendor/assets/stylesheets/bootstrap/bootstrap/_popovers.scss +131 -0
  64. data/vendor/assets/stylesheets/bootstrap/bootstrap/_print.scss +101 -0
  65. data/vendor/assets/stylesheets/bootstrap/bootstrap/_progress-bars.scss +87 -0
  66. data/vendor/assets/stylesheets/bootstrap/bootstrap/_responsive-embed.scss +35 -0
  67. data/vendor/assets/stylesheets/bootstrap/bootstrap/_responsive-utilities.scss +179 -0
  68. data/vendor/assets/stylesheets/bootstrap/bootstrap/_scaffolding.scss +161 -0
  69. data/vendor/assets/stylesheets/bootstrap/bootstrap/_tables.scss +234 -0
  70. data/vendor/assets/stylesheets/bootstrap/bootstrap/_theme.scss +291 -0
  71. data/vendor/assets/stylesheets/bootstrap/bootstrap/_thumbnails.scss +38 -0
  72. data/vendor/assets/stylesheets/bootstrap/bootstrap/_tooltip.scss +101 -0
  73. data/vendor/assets/stylesheets/bootstrap/bootstrap/_type.scss +298 -0
  74. data/vendor/assets/stylesheets/bootstrap/bootstrap/_utilities.scss +55 -0
  75. data/vendor/assets/stylesheets/bootstrap/bootstrap/_variables.scss +875 -0
  76. data/vendor/assets/stylesheets/bootstrap/bootstrap/_wells.scss +29 -0
  77. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_alerts.scss +14 -0
  78. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_background-variant.scss +12 -0
  79. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_border-radius.scss +18 -0
  80. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_buttons.scss +65 -0
  81. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_center-block.scss +7 -0
  82. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_clearfix.scss +22 -0
  83. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_forms.scss +88 -0
  84. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_gradients.scss +58 -0
  85. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_grid-framework.scss +81 -0
  86. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_grid.scss +122 -0
  87. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_hide-text.scss +21 -0
  88. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_image.scss +33 -0
  89. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_labels.scss +12 -0
  90. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_list-group.scss +32 -0
  91. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_nav-divider.scss +10 -0
  92. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  93. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_opacity.scss +8 -0
  94. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_pagination.scss +24 -0
  95. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_panels.scss +24 -0
  96. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_progress-bar.scss +10 -0
  97. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_reset-filter.scss +8 -0
  98. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_reset-text.scss +18 -0
  99. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_resize.scss +6 -0
  100. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_responsive-visibility.scss +21 -0
  101. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_size.scss +10 -0
  102. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_tab-focus.scss +9 -0
  103. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_table-row.scss +28 -0
  104. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_text-emphasis.scss +12 -0
  105. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_text-overflow.scss +8 -0
  106. data/vendor/assets/stylesheets/bootstrap/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  107. data/vendor/assets/stylesheets/font-awesome/_animated.scss +34 -0
  108. data/vendor/assets/stylesheets/font-awesome/_bordered-pulled.scss +25 -0
  109. data/vendor/assets/stylesheets/font-awesome/_core.scss +12 -0
  110. data/vendor/assets/stylesheets/font-awesome/_fixed-width.scss +6 -0
  111. data/vendor/assets/stylesheets/font-awesome/_icons.scss +789 -0
  112. data/vendor/assets/stylesheets/font-awesome/_larger.scss +13 -0
  113. data/vendor/assets/stylesheets/font-awesome/_list.scss +19 -0
  114. data/vendor/assets/stylesheets/font-awesome/_mixins.scss +60 -0
  115. data/vendor/assets/stylesheets/font-awesome/_path.scss +15 -0
  116. data/vendor/assets/stylesheets/font-awesome/_rotated-flipped.scss +20 -0
  117. data/vendor/assets/stylesheets/font-awesome/_screen-reader.scss +5 -0
  118. data/vendor/assets/stylesheets/font-awesome/_stacked.scss +20 -0
  119. data/vendor/assets/stylesheets/font-awesome/_variables.scss +800 -0
  120. data/vendor/assets/stylesheets/font-awesome/font-awesome.scss +18 -0
  121. metadata +119 -3
@@ -0,0 +1,212 @@
1
+ /* ========================================================================
2
+ * Bootstrap: collapse.js v3.3.7
3
+ * http://getbootstrap.com/javascript/#collapse
4
+ * ========================================================================
5
+ * Copyright 2011-2016 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+ /* jshint latedef: false */
10
+
11
+ +function ($) {
12
+ 'use strict';
13
+
14
+ // COLLAPSE PUBLIC CLASS DEFINITION
15
+ // ================================
16
+
17
+ var Collapse = function (element, options) {
18
+ this.$element = $(element)
19
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
20
+ this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
21
+ '[data-toggle="collapse"][data-target="#' + element.id + '"]')
22
+ this.transitioning = null
23
+
24
+ if (this.options.parent) {
25
+ this.$parent = this.getParent()
26
+ } else {
27
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
28
+ }
29
+
30
+ if (this.options.toggle) this.toggle()
31
+ }
32
+
33
+ Collapse.VERSION = '3.3.7'
34
+
35
+ Collapse.TRANSITION_DURATION = 350
36
+
37
+ Collapse.DEFAULTS = {
38
+ toggle: true
39
+ }
40
+
41
+ Collapse.prototype.dimension = function () {
42
+ var hasWidth = this.$element.hasClass('width')
43
+ return hasWidth ? 'width' : 'height'
44
+ }
45
+
46
+ Collapse.prototype.show = function () {
47
+ if (this.transitioning || this.$element.hasClass('in')) return
48
+
49
+ var activesData
50
+ var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
51
+
52
+ if (actives && actives.length) {
53
+ activesData = actives.data('bs.collapse')
54
+ if (activesData && activesData.transitioning) return
55
+ }
56
+
57
+ var startEvent = $.Event('show.bs.collapse')
58
+ this.$element.trigger(startEvent)
59
+ if (startEvent.isDefaultPrevented()) return
60
+
61
+ if (actives && actives.length) {
62
+ Plugin.call(actives, 'hide')
63
+ activesData || actives.data('bs.collapse', null)
64
+ }
65
+
66
+ var dimension = this.dimension()
67
+
68
+ this.$element
69
+ .removeClass('collapse')
70
+ .addClass('collapsing')[dimension](0)
71
+ .attr('aria-expanded', true)
72
+
73
+ this.$trigger
74
+ .removeClass('collapsed')
75
+ .attr('aria-expanded', true)
76
+
77
+ this.transitioning = 1
78
+
79
+ var complete = function () {
80
+ this.$element
81
+ .removeClass('collapsing')
82
+ .addClass('collapse in')[dimension]('')
83
+ this.transitioning = 0
84
+ this.$element
85
+ .trigger('shown.bs.collapse')
86
+ }
87
+
88
+ if (!$.support.transition) return complete.call(this)
89
+
90
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
91
+
92
+ this.$element
93
+ .one('bsTransitionEnd', $.proxy(complete, this))
94
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
95
+ }
96
+
97
+ Collapse.prototype.hide = function () {
98
+ if (this.transitioning || !this.$element.hasClass('in')) return
99
+
100
+ var startEvent = $.Event('hide.bs.collapse')
101
+ this.$element.trigger(startEvent)
102
+ if (startEvent.isDefaultPrevented()) return
103
+
104
+ var dimension = this.dimension()
105
+
106
+ this.$element[dimension](this.$element[dimension]())[0].offsetHeight
107
+
108
+ this.$element
109
+ .addClass('collapsing')
110
+ .removeClass('collapse in')
111
+ .attr('aria-expanded', false)
112
+
113
+ this.$trigger
114
+ .addClass('collapsed')
115
+ .attr('aria-expanded', false)
116
+
117
+ this.transitioning = 1
118
+
119
+ var complete = function () {
120
+ this.transitioning = 0
121
+ this.$element
122
+ .removeClass('collapsing')
123
+ .addClass('collapse')
124
+ .trigger('hidden.bs.collapse')
125
+ }
126
+
127
+ if (!$.support.transition) return complete.call(this)
128
+
129
+ this.$element
130
+ [dimension](0)
131
+ .one('bsTransitionEnd', $.proxy(complete, this))
132
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
133
+ }
134
+
135
+ Collapse.prototype.toggle = function () {
136
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
137
+ }
138
+
139
+ Collapse.prototype.getParent = function () {
140
+ return $(this.options.parent)
141
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
142
+ .each($.proxy(function (i, element) {
143
+ var $element = $(element)
144
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
145
+ }, this))
146
+ .end()
147
+ }
148
+
149
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
150
+ var isOpen = $element.hasClass('in')
151
+
152
+ $element.attr('aria-expanded', isOpen)
153
+ $trigger
154
+ .toggleClass('collapsed', !isOpen)
155
+ .attr('aria-expanded', isOpen)
156
+ }
157
+
158
+ function getTargetFromTrigger($trigger) {
159
+ var href
160
+ var target = $trigger.attr('data-target')
161
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
162
+
163
+ return $(target)
164
+ }
165
+
166
+
167
+ // COLLAPSE PLUGIN DEFINITION
168
+ // ==========================
169
+
170
+ function Plugin(option) {
171
+ return this.each(function () {
172
+ var $this = $(this)
173
+ var data = $this.data('bs.collapse')
174
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
175
+
176
+ if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
177
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
178
+ if (typeof option == 'string') data[option]()
179
+ })
180
+ }
181
+
182
+ var old = $.fn.collapse
183
+
184
+ $.fn.collapse = Plugin
185
+ $.fn.collapse.Constructor = Collapse
186
+
187
+
188
+ // COLLAPSE NO CONFLICT
189
+ // ====================
190
+
191
+ $.fn.collapse.noConflict = function () {
192
+ $.fn.collapse = old
193
+ return this
194
+ }
195
+
196
+
197
+ // COLLAPSE DATA-API
198
+ // =================
199
+
200
+ $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
201
+ var $this = $(this)
202
+
203
+ if (!$this.attr('data-target')) e.preventDefault()
204
+
205
+ var $target = getTargetFromTrigger($this)
206
+ var data = $target.data('bs.collapse')
207
+ var option = data ? 'toggle' : $this.data()
208
+
209
+ Plugin.call($target, option)
210
+ })
211
+
212
+ }(jQuery);
@@ -0,0 +1,165 @@
1
+ /* ========================================================================
2
+ * Bootstrap: dropdown.js v3.3.7
3
+ * http://getbootstrap.com/javascript/#dropdowns
4
+ * ========================================================================
5
+ * Copyright 2011-2016 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+
10
+ +function ($) {
11
+ 'use strict';
12
+
13
+ // DROPDOWN CLASS DEFINITION
14
+ // =========================
15
+
16
+ var backdrop = '.dropdown-backdrop'
17
+ var toggle = '[data-toggle="dropdown"]'
18
+ var Dropdown = function (element) {
19
+ $(element).on('click.bs.dropdown', this.toggle)
20
+ }
21
+
22
+ Dropdown.VERSION = '3.3.7'
23
+
24
+ function getParent($this) {
25
+ var selector = $this.attr('data-target')
26
+
27
+ if (!selector) {
28
+ selector = $this.attr('href')
29
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
30
+ }
31
+
32
+ var $parent = selector && $(selector)
33
+
34
+ return $parent && $parent.length ? $parent : $this.parent()
35
+ }
36
+
37
+ function clearMenus(e) {
38
+ if (e && e.which === 3) return
39
+ $(backdrop).remove()
40
+ $(toggle).each(function () {
41
+ var $this = $(this)
42
+ var $parent = getParent($this)
43
+ var relatedTarget = { relatedTarget: this }
44
+
45
+ if (!$parent.hasClass('open')) return
46
+
47
+ if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
48
+
49
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
50
+
51
+ if (e.isDefaultPrevented()) return
52
+
53
+ $this.attr('aria-expanded', 'false')
54
+ $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
55
+ })
56
+ }
57
+
58
+ Dropdown.prototype.toggle = function (e) {
59
+ var $this = $(this)
60
+
61
+ if ($this.is('.disabled, :disabled')) return
62
+
63
+ var $parent = getParent($this)
64
+ var isActive = $parent.hasClass('open')
65
+
66
+ clearMenus()
67
+
68
+ if (!isActive) {
69
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
70
+ // if mobile we use a backdrop because click events don't delegate
71
+ $(document.createElement('div'))
72
+ .addClass('dropdown-backdrop')
73
+ .insertAfter($(this))
74
+ .on('click', clearMenus)
75
+ }
76
+
77
+ var relatedTarget = { relatedTarget: this }
78
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
79
+
80
+ if (e.isDefaultPrevented()) return
81
+
82
+ $this
83
+ .trigger('focus')
84
+ .attr('aria-expanded', 'true')
85
+
86
+ $parent
87
+ .toggleClass('open')
88
+ .trigger($.Event('shown.bs.dropdown', relatedTarget))
89
+ }
90
+
91
+ return false
92
+ }
93
+
94
+ Dropdown.prototype.keydown = function (e) {
95
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
96
+
97
+ var $this = $(this)
98
+
99
+ e.preventDefault()
100
+ e.stopPropagation()
101
+
102
+ if ($this.is('.disabled, :disabled')) return
103
+
104
+ var $parent = getParent($this)
105
+ var isActive = $parent.hasClass('open')
106
+
107
+ if (!isActive && e.which != 27 || isActive && e.which == 27) {
108
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
109
+ return $this.trigger('click')
110
+ }
111
+
112
+ var desc = ' li:not(.disabled):visible a'
113
+ var $items = $parent.find('.dropdown-menu' + desc)
114
+
115
+ if (!$items.length) return
116
+
117
+ var index = $items.index(e.target)
118
+
119
+ if (e.which == 38 && index > 0) index-- // up
120
+ if (e.which == 40 && index < $items.length - 1) index++ // down
121
+ if (!~index) index = 0
122
+
123
+ $items.eq(index).trigger('focus')
124
+ }
125
+
126
+
127
+ // DROPDOWN PLUGIN DEFINITION
128
+ // ==========================
129
+
130
+ function Plugin(option) {
131
+ return this.each(function () {
132
+ var $this = $(this)
133
+ var data = $this.data('bs.dropdown')
134
+
135
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
136
+ if (typeof option == 'string') data[option].call($this)
137
+ })
138
+ }
139
+
140
+ var old = $.fn.dropdown
141
+
142
+ $.fn.dropdown = Plugin
143
+ $.fn.dropdown.Constructor = Dropdown
144
+
145
+
146
+ // DROPDOWN NO CONFLICT
147
+ // ====================
148
+
149
+ $.fn.dropdown.noConflict = function () {
150
+ $.fn.dropdown = old
151
+ return this
152
+ }
153
+
154
+
155
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
156
+ // ===================================
157
+
158
+ $(document)
159
+ .on('click.bs.dropdown.data-api', clearMenus)
160
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
161
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
162
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
163
+ .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
164
+
165
+ }(jQuery);
@@ -0,0 +1,339 @@
1
+ /* ========================================================================
2
+ * Bootstrap: modal.js v3.3.7
3
+ * http://getbootstrap.com/javascript/#modals
4
+ * ========================================================================
5
+ * Copyright 2011-2016 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.7'
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 (document !== e.target &&
144
+ this.$element[0] !== e.target &&
145
+ !this.$element.has(e.target).length) {
146
+ this.$element.trigger('focus')
147
+ }
148
+ }, this))
149
+ }
150
+
151
+ Modal.prototype.escape = function () {
152
+ if (this.isShown && this.options.keyboard) {
153
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
154
+ e.which == 27 && this.hide()
155
+ }, this))
156
+ } else if (!this.isShown) {
157
+ this.$element.off('keydown.dismiss.bs.modal')
158
+ }
159
+ }
160
+
161
+ Modal.prototype.resize = function () {
162
+ if (this.isShown) {
163
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
164
+ } else {
165
+ $(window).off('resize.bs.modal')
166
+ }
167
+ }
168
+
169
+ Modal.prototype.hideModal = function () {
170
+ var that = this
171
+ this.$element.hide()
172
+ this.backdrop(function () {
173
+ that.$body.removeClass('modal-open')
174
+ that.resetAdjustments()
175
+ that.resetScrollbar()
176
+ that.$element.trigger('hidden.bs.modal')
177
+ })
178
+ }
179
+
180
+ Modal.prototype.removeBackdrop = function () {
181
+ this.$backdrop && this.$backdrop.remove()
182
+ this.$backdrop = null
183
+ }
184
+
185
+ Modal.prototype.backdrop = function (callback) {
186
+ var that = this
187
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
188
+
189
+ if (this.isShown && this.options.backdrop) {
190
+ var doAnimate = $.support.transition && animate
191
+
192
+ this.$backdrop = $(document.createElement('div'))
193
+ .addClass('modal-backdrop ' + animate)
194
+ .appendTo(this.$body)
195
+
196
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
197
+ if (this.ignoreBackdropClick) {
198
+ this.ignoreBackdropClick = false
199
+ return
200
+ }
201
+ if (e.target !== e.currentTarget) return
202
+ this.options.backdrop == 'static'
203
+ ? this.$element[0].focus()
204
+ : this.hide()
205
+ }, this))
206
+
207
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
208
+
209
+ this.$backdrop.addClass('in')
210
+
211
+ if (!callback) return
212
+
213
+ doAnimate ?
214
+ this.$backdrop
215
+ .one('bsTransitionEnd', callback)
216
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
217
+ callback()
218
+
219
+ } else if (!this.isShown && this.$backdrop) {
220
+ this.$backdrop.removeClass('in')
221
+
222
+ var callbackRemove = function () {
223
+ that.removeBackdrop()
224
+ callback && callback()
225
+ }
226
+ $.support.transition && this.$element.hasClass('fade') ?
227
+ this.$backdrop
228
+ .one('bsTransitionEnd', callbackRemove)
229
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
230
+ callbackRemove()
231
+
232
+ } else if (callback) {
233
+ callback()
234
+ }
235
+ }
236
+
237
+ // these following methods are used to handle overflowing modals
238
+
239
+ Modal.prototype.handleUpdate = function () {
240
+ this.adjustDialog()
241
+ }
242
+
243
+ Modal.prototype.adjustDialog = function () {
244
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
245
+
246
+ this.$element.css({
247
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
248
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
249
+ })
250
+ }
251
+
252
+ Modal.prototype.resetAdjustments = function () {
253
+ this.$element.css({
254
+ paddingLeft: '',
255
+ paddingRight: ''
256
+ })
257
+ }
258
+
259
+ Modal.prototype.checkScrollbar = function () {
260
+ var fullWindowWidth = window.innerWidth
261
+ if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
262
+ var documentElementRect = document.documentElement.getBoundingClientRect()
263
+ fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
264
+ }
265
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
266
+ this.scrollbarWidth = this.measureScrollbar()
267
+ }
268
+
269
+ Modal.prototype.setScrollbar = function () {
270
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
271
+ this.originalBodyPad = document.body.style.paddingRight || ''
272
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
273
+ }
274
+
275
+ Modal.prototype.resetScrollbar = function () {
276
+ this.$body.css('padding-right', this.originalBodyPad)
277
+ }
278
+
279
+ Modal.prototype.measureScrollbar = function () { // thx walsh
280
+ var scrollDiv = document.createElement('div')
281
+ scrollDiv.className = 'modal-scrollbar-measure'
282
+ this.$body.append(scrollDiv)
283
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
284
+ this.$body[0].removeChild(scrollDiv)
285
+ return scrollbarWidth
286
+ }
287
+
288
+
289
+ // MODAL PLUGIN DEFINITION
290
+ // =======================
291
+
292
+ function Plugin(option, _relatedTarget) {
293
+ return this.each(function () {
294
+ var $this = $(this)
295
+ var data = $this.data('bs.modal')
296
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
297
+
298
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
299
+ if (typeof option == 'string') data[option](_relatedTarget)
300
+ else if (options.show) data.show(_relatedTarget)
301
+ })
302
+ }
303
+
304
+ var old = $.fn.modal
305
+
306
+ $.fn.modal = Plugin
307
+ $.fn.modal.Constructor = Modal
308
+
309
+
310
+ // MODAL NO CONFLICT
311
+ // =================
312
+
313
+ $.fn.modal.noConflict = function () {
314
+ $.fn.modal = old
315
+ return this
316
+ }
317
+
318
+
319
+ // MODAL DATA-API
320
+ // ==============
321
+
322
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
323
+ var $this = $(this)
324
+ var href = $this.attr('href')
325
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
326
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
327
+
328
+ if ($this.is('a')) e.preventDefault()
329
+
330
+ $target.one('show.bs.modal', function (showEvent) {
331
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
332
+ $target.one('hidden.bs.modal', function () {
333
+ $this.is(':visible') && $this.trigger('focus')
334
+ })
335
+ })
336
+ Plugin.call($target, option, this)
337
+ })
338
+
339
+ }(jQuery);