vertx-howtos-jekyll-theme 0.1.0

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 (164) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +52 -0
  4. data/_layouts/page.html +61 -0
  5. data/_sass/bootstrap/js/dist/alert.js +199 -0
  6. data/_sass/bootstrap/js/dist/alert.js.map +1 -0
  7. data/_sass/bootstrap/js/dist/button.js +187 -0
  8. data/_sass/bootstrap/js/dist/button.js.map +1 -0
  9. data/_sass/bootstrap/js/dist/carousel.js +666 -0
  10. data/_sass/bootstrap/js/dist/carousel.js.map +1 -0
  11. data/_sass/bootstrap/js/dist/collapse.js +428 -0
  12. data/_sass/bootstrap/js/dist/collapse.js.map +1 -0
  13. data/_sass/bootstrap/js/dist/dropdown.js +591 -0
  14. data/_sass/bootstrap/js/dist/dropdown.js.map +1 -0
  15. data/_sass/bootstrap/js/dist/index.js +23 -0
  16. data/_sass/bootstrap/js/dist/index.js.map +1 -0
  17. data/_sass/bootstrap/js/dist/modal.js +644 -0
  18. data/_sass/bootstrap/js/dist/modal.js.map +1 -0
  19. data/_sass/bootstrap/js/dist/popover.js +261 -0
  20. data/_sass/bootstrap/js/dist/popover.js.map +1 -0
  21. data/_sass/bootstrap/js/dist/scrollspy.js +375 -0
  22. data/_sass/bootstrap/js/dist/scrollspy.js.map +1 -0
  23. data/_sass/bootstrap/js/dist/tab.js +266 -0
  24. data/_sass/bootstrap/js/dist/tab.js.map +1 -0
  25. data/_sass/bootstrap/js/dist/toast.js +278 -0
  26. data/_sass/bootstrap/js/dist/toast.js.map +1 -0
  27. data/_sass/bootstrap/js/dist/tooltip.js +745 -0
  28. data/_sass/bootstrap/js/dist/tooltip.js.map +1 -0
  29. data/_sass/bootstrap/js/dist/util.js +168 -0
  30. data/_sass/bootstrap/js/dist/util.js.map +1 -0
  31. data/_sass/bootstrap/js/src/alert.js +179 -0
  32. data/_sass/bootstrap/js/src/button.js +171 -0
  33. data/_sass/bootstrap/js/src/carousel.js +604 -0
  34. data/_sass/bootstrap/js/src/collapse.js +402 -0
  35. data/_sass/bootstrap/js/src/dropdown.js +538 -0
  36. data/_sass/bootstrap/js/src/index.js +52 -0
  37. data/_sass/bootstrap/js/src/modal.js +587 -0
  38. data/_sass/bootstrap/js/src/popover.js +184 -0
  39. data/_sass/bootstrap/js/src/scrollspy.js +326 -0
  40. data/_sass/bootstrap/js/src/tab.js +257 -0
  41. data/_sass/bootstrap/js/src/toast.js +223 -0
  42. data/_sass/bootstrap/js/src/tooltip.js +735 -0
  43. data/_sass/bootstrap/js/src/util.js +173 -0
  44. data/_sass/bootstrap/js/tests/README.md +69 -0
  45. data/_sass/bootstrap/js/tests/browsers.js +82 -0
  46. data/_sass/bootstrap/js/tests/index.html +145 -0
  47. data/_sass/bootstrap/js/tests/integration/bundle.js +8 -0
  48. data/_sass/bootstrap/js/tests/integration/index.html +66 -0
  49. data/_sass/bootstrap/js/tests/integration/rollup.bundle.js +20 -0
  50. data/_sass/bootstrap/js/tests/karma.conf.js +145 -0
  51. data/_sass/bootstrap/js/tests/unit/.eslintrc.json +40 -0
  52. data/_sass/bootstrap/js/tests/unit/alert.js +123 -0
  53. data/_sass/bootstrap/js/tests/unit/button.js +222 -0
  54. data/_sass/bootstrap/js/tests/unit/carousel.js +1273 -0
  55. data/_sass/bootstrap/js/tests/unit/collapse.js +892 -0
  56. data/_sass/bootstrap/js/tests/unit/dropdown.js +1364 -0
  57. data/_sass/bootstrap/js/tests/unit/modal.js +796 -0
  58. data/_sass/bootstrap/js/tests/unit/popover.js +471 -0
  59. data/_sass/bootstrap/js/tests/unit/scrollspy.js +728 -0
  60. data/_sass/bootstrap/js/tests/unit/tab.js +462 -0
  61. data/_sass/bootstrap/js/tests/unit/toast.js +239 -0
  62. data/_sass/bootstrap/js/tests/unit/tooltip.js +1072 -0
  63. data/_sass/bootstrap/js/tests/unit/util.js +164 -0
  64. data/_sass/bootstrap/js/tests/visual/alert.html +58 -0
  65. data/_sass/bootstrap/js/tests/visual/button.html +51 -0
  66. data/_sass/bootstrap/js/tests/visual/carousel.html +66 -0
  67. data/_sass/bootstrap/js/tests/visual/collapse.html +78 -0
  68. data/_sass/bootstrap/js/tests/visual/dropdown.html +212 -0
  69. data/_sass/bootstrap/js/tests/visual/modal.html +268 -0
  70. data/_sass/bootstrap/js/tests/visual/popover.html +46 -0
  71. data/_sass/bootstrap/js/tests/visual/scrollspy.html +95 -0
  72. data/_sass/bootstrap/js/tests/visual/tab.html +234 -0
  73. data/_sass/bootstrap/js/tests/visual/toast.html +72 -0
  74. data/_sass/bootstrap/js/tests/visual/tooltip.html +106 -0
  75. data/_sass/bootstrap/scss/_alert.scss +51 -0
  76. data/_sass/bootstrap/scss/_badge.scss +53 -0
  77. data/_sass/bootstrap/scss/_breadcrumb.scss +41 -0
  78. data/_sass/bootstrap/scss/_button-group.scss +163 -0
  79. data/_sass/bootstrap/scss/_buttons.scss +140 -0
  80. data/_sass/bootstrap/scss/_card.scss +310 -0
  81. data/_sass/bootstrap/scss/_carousel.scss +198 -0
  82. data/_sass/bootstrap/scss/_close.scss +44 -0
  83. data/_sass/bootstrap/scss/_code.scss +48 -0
  84. data/_sass/bootstrap/scss/_custom-forms.scss +507 -0
  85. data/_sass/bootstrap/scss/_dropdown.scss +191 -0
  86. data/_sass/bootstrap/scss/_forms.scss +334 -0
  87. data/_sass/bootstrap/scss/_functions.scss +86 -0
  88. data/_sass/bootstrap/scss/_grid.scss +52 -0
  89. data/_sass/bootstrap/scss/_images.scss +42 -0
  90. data/_sass/bootstrap/scss/_input-group.scss +193 -0
  91. data/_sass/bootstrap/scss/_jumbotron.scss +16 -0
  92. data/_sass/bootstrap/scss/_list-group.scss +121 -0
  93. data/_sass/bootstrap/scss/_media.scss +8 -0
  94. data/_sass/bootstrap/scss/_mixins.scss +41 -0
  95. data/_sass/bootstrap/scss/_modal.scss +186 -0
  96. data/_sass/bootstrap/scss/_nav.scss +120 -0
  97. data/_sass/bootstrap/scss/_navbar.scss +299 -0
  98. data/_sass/bootstrap/scss/_pagination.scss +78 -0
  99. data/_sass/bootstrap/scss/_popover.scss +183 -0
  100. data/_sass/bootstrap/scss/_print.scss +141 -0
  101. data/_sass/bootstrap/scss/_progress.scss +34 -0
  102. data/_sass/bootstrap/scss/_reboot.scss +462 -0
  103. data/_sass/bootstrap/scss/_root.scss +19 -0
  104. data/_sass/bootstrap/scss/_spinners.scss +53 -0
  105. data/_sass/bootstrap/scss/_tables.scss +187 -0
  106. data/_sass/bootstrap/scss/_toasts.scss +43 -0
  107. data/_sass/bootstrap/scss/_tooltip.scss +115 -0
  108. data/_sass/bootstrap/scss/_transitions.scss +22 -0
  109. data/_sass/bootstrap/scss/_type.scss +125 -0
  110. data/_sass/bootstrap/scss/_utilities.scss +16 -0
  111. data/_sass/bootstrap/scss/_variables.scss +1091 -0
  112. data/_sass/bootstrap/scss/bootstrap-grid.scss +29 -0
  113. data/_sass/bootstrap/scss/bootstrap-reboot.scss +12 -0
  114. data/_sass/bootstrap/scss/bootstrap.scss +44 -0
  115. data/_sass/bootstrap/scss/mixins/_alert.scss +13 -0
  116. data/_sass/bootstrap/scss/mixins/_background-variant.scss +21 -0
  117. data/_sass/bootstrap/scss/mixins/_badge.scss +11 -0
  118. data/_sass/bootstrap/scss/mixins/_border-radius.scss +35 -0
  119. data/_sass/bootstrap/scss/mixins/_box-shadow.scss +5 -0
  120. data/_sass/bootstrap/scss/mixins/_breakpoints.scss +123 -0
  121. data/_sass/bootstrap/scss/mixins/_buttons.scss +111 -0
  122. data/_sass/bootstrap/scss/mixins/_caret.scss +62 -0
  123. data/_sass/bootstrap/scss/mixins/_clearfix.scss +7 -0
  124. data/_sass/bootstrap/scss/mixins/_float.scss +11 -0
  125. data/_sass/bootstrap/scss/mixins/_forms.scss +198 -0
  126. data/_sass/bootstrap/scss/mixins/_gradients.scss +45 -0
  127. data/_sass/bootstrap/scss/mixins/_grid-framework.scss +66 -0
  128. data/_sass/bootstrap/scss/mixins/_grid.scss +51 -0
  129. data/_sass/bootstrap/scss/mixins/_hover.scss +37 -0
  130. data/_sass/bootstrap/scss/mixins/_image.scss +36 -0
  131. data/_sass/bootstrap/scss/mixins/_list-group.scss +21 -0
  132. data/_sass/bootstrap/scss/mixins/_lists.scss +7 -0
  133. data/_sass/bootstrap/scss/mixins/_nav-divider.scss +10 -0
  134. data/_sass/bootstrap/scss/mixins/_pagination.scss +22 -0
  135. data/_sass/bootstrap/scss/mixins/_reset-text.scss +17 -0
  136. data/_sass/bootstrap/scss/mixins/_resize.scss +6 -0
  137. data/_sass/bootstrap/scss/mixins/_screen-reader.scss +33 -0
  138. data/_sass/bootstrap/scss/mixins/_size.scss +6 -0
  139. data/_sass/bootstrap/scss/mixins/_table-row.scss +39 -0
  140. data/_sass/bootstrap/scss/mixins/_text-emphasis.scss +14 -0
  141. data/_sass/bootstrap/scss/mixins/_text-hide.scss +13 -0
  142. data/_sass/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  143. data/_sass/bootstrap/scss/mixins/_transition.scss +16 -0
  144. data/_sass/bootstrap/scss/mixins/_visibility.scss +7 -0
  145. data/_sass/bootstrap/scss/utilities/_align.scss +8 -0
  146. data/_sass/bootstrap/scss/utilities/_background.scss +19 -0
  147. data/_sass/bootstrap/scss/utilities/_borders.scss +63 -0
  148. data/_sass/bootstrap/scss/utilities/_clearfix.scss +3 -0
  149. data/_sass/bootstrap/scss/utilities/_display.scss +38 -0
  150. data/_sass/bootstrap/scss/utilities/_embed.scss +39 -0
  151. data/_sass/bootstrap/scss/utilities/_flex.scss +51 -0
  152. data/_sass/bootstrap/scss/utilities/_float.scss +9 -0
  153. data/_sass/bootstrap/scss/utilities/_overflow.scss +5 -0
  154. data/_sass/bootstrap/scss/utilities/_position.scss +32 -0
  155. data/_sass/bootstrap/scss/utilities/_screenreaders.scss +11 -0
  156. data/_sass/bootstrap/scss/utilities/_shadows.scss +6 -0
  157. data/_sass/bootstrap/scss/utilities/_sizing.scss +20 -0
  158. data/_sass/bootstrap/scss/utilities/_spacing.scss +73 -0
  159. data/_sass/bootstrap/scss/utilities/_text.scss +67 -0
  160. data/_sass/bootstrap/scss/utilities/_visibility.scss +11 -0
  161. data/_sass/custom.scss +1 -0
  162. data/assets/css/style.scss +65 -0
  163. data/assets/images/vertx-square.svg +1 -0
  164. metadata +248 -0
@@ -0,0 +1,892 @@
1
+ $(function () {
2
+ 'use strict'
3
+
4
+ QUnit.module('collapse plugin')
5
+
6
+ QUnit.test('should be defined on jquery object', function (assert) {
7
+ assert.expect(1)
8
+ assert.ok($(document.body).collapse, 'collapse method is defined')
9
+ })
10
+
11
+ QUnit.module('collapse', {
12
+ beforeEach: function () {
13
+ // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
14
+ $.fn.bootstrapCollapse = $.fn.collapse.noConflict()
15
+ },
16
+ afterEach: function () {
17
+ $.fn.collapse = $.fn.bootstrapCollapse
18
+ delete $.fn.bootstrapCollapse
19
+ $('#qunit-fixture').html('')
20
+ }
21
+ })
22
+
23
+ QUnit.test('should provide no conflict', function (assert) {
24
+ assert.expect(1)
25
+ assert.strictEqual(typeof $.fn.collapse, 'undefined', 'collapse was set back to undefined (org value)')
26
+ })
27
+
28
+ QUnit.test('should throw explicit error on undefined method', function (assert) {
29
+ assert.expect(1)
30
+ var $el = $('<div/>')
31
+ $el.bootstrapCollapse()
32
+ try {
33
+ $el.bootstrapCollapse('noMethod')
34
+ } catch (err) {
35
+ assert.strictEqual(err.message, 'No method named "noMethod"')
36
+ }
37
+ })
38
+
39
+ QUnit.test('should return jquery collection containing the element', function (assert) {
40
+ assert.expect(2)
41
+ var $el = $('<div/>')
42
+ var $collapse = $el.bootstrapCollapse()
43
+ assert.ok($collapse instanceof $, 'returns jquery collection')
44
+ assert.strictEqual($collapse[0], $el[0], 'collection contains element')
45
+ })
46
+
47
+ QUnit.test('should show a collapsed element', function (assert) {
48
+ assert.expect(2)
49
+ var done = assert.async()
50
+ var $el = $('<div class="collapse"/>')
51
+
52
+ $el.one('shown.bs.collapse', function () {
53
+ assert.ok($el.hasClass('show'), 'has class "show"')
54
+ assert.ok(!/height/i.test($el.attr('style')), 'has height reset')
55
+ done()
56
+ }).bootstrapCollapse('show')
57
+ })
58
+
59
+ QUnit.test('should show multiple collapsed elements', function (assert) {
60
+ assert.expect(4)
61
+ var done = assert.async()
62
+ var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href=".multi"/>').appendTo('#qunit-fixture')
63
+ var $el = $('<div class="collapse multi"/>').appendTo('#qunit-fixture')
64
+ var $el2 = $('<div class="collapse multi"/>').appendTo('#qunit-fixture')
65
+ $el.one('shown.bs.collapse', function () {
66
+ assert.ok($el.hasClass('show'), 'has class "show"')
67
+ assert.ok(!/height/i.test($el.attr('style')), 'has height reset')
68
+ })
69
+ $el2.one('shown.bs.collapse', function () {
70
+ assert.ok($el2.hasClass('show'), 'has class "show"')
71
+ assert.ok(!/height/i.test($el2.attr('style')), 'has height reset')
72
+ done()
73
+ })
74
+ $target.trigger('click')
75
+ })
76
+
77
+ QUnit.test('should collapse only the first collapse', function (assert) {
78
+ assert.expect(2)
79
+ var done = assert.async()
80
+ var html = [
81
+ '<div class="panel-group" id="accordion1">',
82
+ '<div class="panel">',
83
+ '<div id="collapse1" class="collapse"/>',
84
+ '</div>',
85
+ '</div>',
86
+ '<div class="panel-group" id="accordion2">',
87
+ '<div class="panel">',
88
+ '<div id="collapse2" class="collapse show"/>',
89
+ '</div>',
90
+ '</div>'
91
+ ].join('')
92
+ $(html).appendTo('#qunit-fixture')
93
+ var $el1 = $('#collapse1')
94
+ var $el2 = $('#collapse2')
95
+ $el1.one('shown.bs.collapse', function () {
96
+ assert.ok($el1.hasClass('show'))
97
+ assert.ok($el2.hasClass('show'))
98
+ done()
99
+ }).bootstrapCollapse('show')
100
+ })
101
+
102
+ QUnit.test('should hide a collapsed element', function (assert) {
103
+ assert.expect(1)
104
+ var $el = $('<div class="collapse"/>').bootstrapCollapse('hide')
105
+
106
+ assert.ok(!$el.hasClass('show'), 'does not have class "show"')
107
+ })
108
+
109
+ QUnit.test('should not fire shown when show is prevented', function (assert) {
110
+ assert.expect(1)
111
+ var done = assert.async()
112
+
113
+ $('<div class="collapse"/>')
114
+ .on('show.bs.collapse', function (e) {
115
+ e.preventDefault()
116
+ assert.ok(true, 'show event fired')
117
+ done()
118
+ })
119
+ .on('shown.bs.collapse', function () {
120
+ assert.ok(false, 'shown event fired')
121
+ })
122
+ .bootstrapCollapse('show')
123
+ })
124
+
125
+ QUnit.test('should reset style to auto after finishing opening collapse', function (assert) {
126
+ assert.expect(2)
127
+ var done = assert.async()
128
+
129
+ $('<div class="collapse" style="height: 0px"/>')
130
+ .on('show.bs.collapse', function () {
131
+ assert.strictEqual(this.style.height, '0px', 'height is 0px')
132
+ })
133
+ .on('shown.bs.collapse', function () {
134
+ assert.strictEqual(this.style.height, '', 'height is auto')
135
+ done()
136
+ })
137
+ .bootstrapCollapse('show')
138
+ })
139
+
140
+ QUnit.test('should reset style to auto after finishing closing collapse', function (assert) {
141
+ assert.expect(1)
142
+ var done = assert.async()
143
+
144
+ $('<div class="collapse"/>')
145
+ .on('shown.bs.collapse', function () {
146
+ $(this).bootstrapCollapse('hide')
147
+ })
148
+ .on('hidden.bs.collapse', function () {
149
+ assert.strictEqual(this.style.height, '', 'height is auto')
150
+ done()
151
+ })
152
+ .bootstrapCollapse('show')
153
+ })
154
+
155
+ QUnit.test('should remove "collapsed" class from target when collapse is shown', function (assert) {
156
+ assert.expect(1)
157
+ var done = assert.async()
158
+
159
+ var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
160
+
161
+ $('<div id="test1"/>')
162
+ .appendTo('#qunit-fixture')
163
+ .on('shown.bs.collapse', function () {
164
+ assert.ok(!$target.hasClass('collapsed'), 'target does not have collapsed class')
165
+ done()
166
+ })
167
+
168
+ $target.trigger('click')
169
+ })
170
+
171
+ QUnit.test('should add "collapsed" class to target when collapse is hidden', function (assert) {
172
+ assert.expect(1)
173
+ var done = assert.async()
174
+
175
+ var $target = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
176
+
177
+ $('<div id="test1" class="show"/>')
178
+ .appendTo('#qunit-fixture')
179
+ .on('hidden.bs.collapse', function () {
180
+ assert.ok($target.hasClass('collapsed'), 'target has collapsed class')
181
+ done()
182
+ })
183
+
184
+ $target.trigger('click')
185
+ })
186
+
187
+ QUnit.test('should remove "collapsed" class from all triggers targeting the collapse when the collapse is shown', function (assert) {
188
+ assert.expect(2)
189
+ var done = assert.async()
190
+
191
+ var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
192
+ var $alt = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
193
+
194
+ $('<div id="test1"/>')
195
+ .appendTo('#qunit-fixture')
196
+ .on('shown.bs.collapse', function () {
197
+ assert.ok(!$target.hasClass('collapsed'), 'target trigger does not have collapsed class')
198
+ assert.ok(!$alt.hasClass('collapsed'), 'alt trigger does not have collapsed class')
199
+ done()
200
+ })
201
+
202
+ $target.trigger('click')
203
+ })
204
+
205
+ QUnit.test('should add "collapsed" class to all triggers targeting the collapse when the collapse is hidden', function (assert) {
206
+ assert.expect(2)
207
+ var done = assert.async()
208
+
209
+ var $target = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
210
+ var $alt = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
211
+
212
+ $('<div id="test1" class="show"/>')
213
+ .appendTo('#qunit-fixture')
214
+ .on('hidden.bs.collapse', function () {
215
+ assert.ok($target.hasClass('collapsed'), 'target has collapsed class')
216
+ assert.ok($alt.hasClass('collapsed'), 'alt trigger has collapsed class')
217
+ done()
218
+ })
219
+
220
+ $target.trigger('click')
221
+ })
222
+
223
+ QUnit.test('should not close a collapse when initialized with "show" option if already shown', function (assert) {
224
+ assert.expect(0)
225
+ var done = assert.async()
226
+
227
+ var $test = $('<div id="test1" class="show"/>')
228
+ .appendTo('#qunit-fixture')
229
+ .on('hide.bs.collapse', function () {
230
+ assert.ok(false)
231
+ })
232
+
233
+ $test.bootstrapCollapse('show')
234
+
235
+ setTimeout(done, 0)
236
+ })
237
+
238
+ QUnit.test('should open a collapse when initialized with "show" option if not already shown', function (assert) {
239
+ assert.expect(1)
240
+ var done = assert.async()
241
+
242
+ var $test = $('<div id="test1" />')
243
+ .appendTo('#qunit-fixture')
244
+ .on('show.bs.collapse', function () {
245
+ assert.ok(true)
246
+ })
247
+
248
+ $test.bootstrapCollapse('show')
249
+
250
+ setTimeout(done, 0)
251
+ })
252
+
253
+ QUnit.test('should not show a collapse when initialized with "hide" option if already hidden', function (assert) {
254
+ assert.expect(0)
255
+ var done = assert.async()
256
+
257
+ $('<div class="collapse"></div>')
258
+ .appendTo('#qunit-fixture')
259
+ .on('show.bs.collapse', function () {
260
+ assert.ok(false, 'showing a previously-uninitialized hidden collapse when the "hide" method is called')
261
+ })
262
+ .bootstrapCollapse('hide')
263
+
264
+ setTimeout(done, 0)
265
+ })
266
+
267
+ QUnit.test('should hide a collapse when initialized with "hide" option if not already hidden', function (assert) {
268
+ assert.expect(1)
269
+ var done = assert.async()
270
+
271
+ $('<div class="collapse show"></div>')
272
+ .appendTo('#qunit-fixture')
273
+ .on('hide.bs.collapse', function () {
274
+ assert.ok(true, 'hiding a previously-uninitialized shown collapse when the "hide" method is called')
275
+ })
276
+ .bootstrapCollapse('hide')
277
+
278
+ setTimeout(done, 0)
279
+ })
280
+
281
+ QUnit.test('should remove "collapsed" class from active accordion target', function (assert) {
282
+ assert.expect(3)
283
+ var done = assert.async()
284
+
285
+ var accordionHTML = '<div id="accordion">' +
286
+ '<div class="card"/>' +
287
+ '<div class="card"/>' +
288
+ '<div class="card"/>' +
289
+ '</div>'
290
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
291
+
292
+ var $target1 = $('<a role="button" data-toggle="collapse" href="#body1" />').appendTo($groups.eq(0))
293
+
294
+ $('<div id="body1" class="show" data-parent="#accordion"/>').appendTo($groups.eq(0))
295
+
296
+ var $target2 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body2" />').appendTo($groups.eq(1))
297
+
298
+ $('<div id="body2" data-parent="#accordion"/>').appendTo($groups.eq(1))
299
+
300
+ var $target3 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body3" />').appendTo($groups.eq(2))
301
+
302
+ $('<div id="body3" data-parent="#accordion"/>')
303
+ .appendTo($groups.eq(2))
304
+ .on('shown.bs.collapse', function () {
305
+ assert.ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
306
+ assert.ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
307
+ assert.ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
308
+
309
+ done()
310
+ })
311
+
312
+ $target3.trigger('click')
313
+ })
314
+
315
+ QUnit.test('should allow dots in data-parent', function (assert) {
316
+ assert.expect(3)
317
+ var done = assert.async()
318
+
319
+ var accordionHTML = '<div class="accordion">' +
320
+ '<div class="card"/>' +
321
+ '<div class="card"/>' +
322
+ '<div class="card"/>' +
323
+ '</div>'
324
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
325
+
326
+ var $target1 = $('<a role="button" data-toggle="collapse" href="#body1"/>').appendTo($groups.eq(0))
327
+
328
+ $('<div id="body1" class="show" data-parent=".accordion"/>').appendTo($groups.eq(0))
329
+
330
+ var $target2 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body2"/>').appendTo($groups.eq(1))
331
+
332
+ $('<div id="body2" data-parent=".accordion"/>').appendTo($groups.eq(1))
333
+
334
+ var $target3 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body3"/>').appendTo($groups.eq(2))
335
+
336
+ $('<div id="body3" data-parent=".accordion"/>')
337
+ .appendTo($groups.eq(2))
338
+ .on('shown.bs.collapse', function () {
339
+ assert.ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
340
+ assert.ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
341
+ assert.ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
342
+
343
+ done()
344
+ })
345
+
346
+ $target3.trigger('click')
347
+ })
348
+
349
+ QUnit.test('should set aria-expanded="true" on trigger/control when collapse is shown', function (assert) {
350
+ assert.expect(1)
351
+ var done = assert.async()
352
+
353
+ var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
354
+
355
+ $('<div id="test1"/>')
356
+ .appendTo('#qunit-fixture')
357
+ .on('shown.bs.collapse', function () {
358
+ assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
359
+ done()
360
+ })
361
+
362
+ $target.trigger('click')
363
+ })
364
+
365
+ QUnit.test('should set aria-expanded="false" on trigger/control when collapse is hidden', function (assert) {
366
+ assert.expect(1)
367
+ var done = assert.async()
368
+
369
+ var $target = $('<a role="button" data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
370
+
371
+ $('<div id="test1" class="show"/>')
372
+ .appendTo('#qunit-fixture')
373
+ .on('hidden.bs.collapse', function () {
374
+ assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
375
+ done()
376
+ })
377
+
378
+ $target.trigger('click')
379
+ })
380
+
381
+ QUnit.test('should set aria-expanded="true" on all triggers targeting the collapse when the collapse is shown', function (assert) {
382
+ assert.expect(2)
383
+ var done = assert.async()
384
+
385
+ var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
386
+ var $alt = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
387
+
388
+ $('<div id="test1"/>')
389
+ .appendTo('#qunit-fixture')
390
+ .on('shown.bs.collapse', function () {
391
+ assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on trigger/control is "true"')
392
+ assert.strictEqual($alt.attr('aria-expanded'), 'true', 'aria-expanded on alternative trigger/control is "true"')
393
+ done()
394
+ })
395
+
396
+ $target.trigger('click')
397
+ })
398
+
399
+ QUnit.test('should set aria-expanded="false" on all triggers targeting the collapse when the collapse is hidden', function (assert) {
400
+ assert.expect(2)
401
+ var done = assert.async()
402
+
403
+ var $target = $('<a role="button" data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
404
+ var $alt = $('<a role="button" data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
405
+
406
+ $('<div id="test1" class="show"/>')
407
+ .appendTo('#qunit-fixture')
408
+ .on('hidden.bs.collapse', function () {
409
+ assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on trigger/control is "false"')
410
+ assert.strictEqual($alt.attr('aria-expanded'), 'false', 'aria-expanded on alternative trigger/control is "false"')
411
+ done()
412
+ })
413
+
414
+ $target.trigger('click')
415
+ })
416
+
417
+ QUnit.test('should change aria-expanded from active accordion trigger/control to "false" and set the trigger/control for the newly active one to "true"', function (assert) {
418
+ assert.expect(3)
419
+ var done = assert.async()
420
+
421
+ var accordionHTML = '<div id="accordion">' +
422
+ '<div class="card"/>' +
423
+ '<div class="card"/>' +
424
+ '<div class="card"/>' +
425
+ '</div>'
426
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
427
+
428
+ var $target1 = $('<a role="button" data-toggle="collapse" aria-expanded="true" href="#body1"/>').appendTo($groups.eq(0))
429
+
430
+ $('<div id="body1" class="show" data-parent="#accordion"/>').appendTo($groups.eq(0))
431
+
432
+ var $target2 = $('<a role="button" data-toggle="collapse" aria-expanded="false" href="#body2" class="collapsed" aria-expanded="false" />').appendTo($groups.eq(1))
433
+
434
+ $('<div id="body2" data-parent="#accordion"/>').appendTo($groups.eq(1))
435
+
436
+ var $target3 = $('<a class="collapsed" data-toggle="collapse" aria-expanded="false" role="button" href="#body3"/>').appendTo($groups.eq(2))
437
+
438
+ $('<div id="body3" data-parent="#accordion"/>')
439
+ .appendTo($groups.eq(2))
440
+ .on('shown.bs.collapse', function () {
441
+ assert.strictEqual($target1.attr('aria-expanded'), 'false', 'inactive trigger/control 1 has aria-expanded="false"')
442
+ assert.strictEqual($target2.attr('aria-expanded'), 'false', 'inactive trigger/control 2 has aria-expanded="false"')
443
+ assert.strictEqual($target3.attr('aria-expanded'), 'true', 'active trigger/control 3 has aria-expanded="true"')
444
+
445
+ done()
446
+ })
447
+
448
+ $target3.trigger('click')
449
+ })
450
+
451
+ QUnit.test('should not fire show event if show is prevented because other element is still transitioning', function (assert) {
452
+ assert.expect(1)
453
+ var done = assert.async()
454
+
455
+ var accordionHTML = '<div id="accordion">' +
456
+ '<div class="card"/>' +
457
+ '<div class="card"/>' +
458
+ '</div>'
459
+ var showFired = false
460
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
461
+
462
+ var $target1 = $('<a role="button" data-toggle="collapse" href="#body1"/>').appendTo($groups.eq(0))
463
+
464
+ $('<div id="body1" class="collapse" data-parent="#accordion"/>')
465
+ .appendTo($groups.eq(0))
466
+ .on('show.bs.collapse', function () {
467
+ showFired = true
468
+ })
469
+
470
+ var $target2 = $('<a role="button" data-toggle="collapse" href="#body2"/>').appendTo($groups.eq(1))
471
+ var $body2 = $('<div id="body2" class="collapse" data-parent="#accordion"/>').appendTo($groups.eq(1))
472
+
473
+ $target2.trigger('click')
474
+
475
+ $body2
476
+ .toggleClass('show collapsing')
477
+ .data('bs.collapse')._isTransitioning = 1
478
+
479
+ $target1.trigger('click')
480
+
481
+ setTimeout(function () {
482
+ assert.ok(!showFired, 'show event did not fire')
483
+ done()
484
+ }, 1)
485
+ })
486
+
487
+ QUnit.test('should add "collapsed" class to target when collapse is hidden via manual invocation', function (assert) {
488
+ assert.expect(1)
489
+ var done = assert.async()
490
+
491
+ var $target = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
492
+
493
+ $('<div id="test1" class="show"/>')
494
+ .appendTo('#qunit-fixture')
495
+ .on('hidden.bs.collapse', function () {
496
+ assert.ok($target.hasClass('collapsed'))
497
+ done()
498
+ })
499
+ .bootstrapCollapse('hide')
500
+ })
501
+
502
+ QUnit.test('should remove "collapsed" class from target when collapse is shown via manual invocation', function (assert) {
503
+ assert.expect(1)
504
+ var done = assert.async()
505
+
506
+ var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
507
+
508
+ $('<div id="test1"/>')
509
+ .appendTo('#qunit-fixture')
510
+ .on('shown.bs.collapse', function () {
511
+ assert.ok(!$target.hasClass('collapsed'))
512
+ done()
513
+ })
514
+ .bootstrapCollapse('show')
515
+ })
516
+
517
+ QUnit.test('should allow accordion to use children other than card', function (assert) {
518
+ assert.expect(4)
519
+ var done = assert.async()
520
+ var accordionHTML = '<div id="accordion">' +
521
+ '<div class="item">' +
522
+ '<a id="linkTrigger" data-toggle="collapse" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne"></a>' +
523
+ '<div id="collapseOne" class="collapse" role="tabpanel" aria-labelledby="headingThree" data-parent="#accordion"></div>' +
524
+ '</div>' +
525
+ '<div class="item">' +
526
+ '<a id="linkTriggerTwo" data-toggle="collapse" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"></a>' +
527
+ '<div id="collapseTwo" class="collapse show" role="tabpanel" aria-labelledby="headingTwo" data-parent="#accordion"></div>' +
528
+ '</div>' +
529
+ '</div>'
530
+
531
+ $(accordionHTML).appendTo('#qunit-fixture')
532
+ var $trigger = $('#linkTrigger')
533
+ var $triggerTwo = $('#linkTriggerTwo')
534
+ var $collapseOne = $('#collapseOne')
535
+ var $collapseTwo = $('#collapseTwo')
536
+ $collapseOne.on('shown.bs.collapse', function () {
537
+ assert.ok($collapseOne.hasClass('show'), '#collapseOne is shown')
538
+ assert.ok(!$collapseTwo.hasClass('show'), '#collapseTwo is not shown')
539
+ $collapseTwo.on('shown.bs.collapse', function () {
540
+ assert.ok(!$collapseOne.hasClass('show'), '#collapseOne is not shown')
541
+ assert.ok($collapseTwo.hasClass('show'), '#collapseTwo is shown')
542
+ done()
543
+ })
544
+ $triggerTwo.trigger($.Event('click'))
545
+ })
546
+ $trigger.trigger($.Event('click'))
547
+ })
548
+
549
+ QUnit.test('should allow accordion to contain nested elements', function (assert) {
550
+ assert.expect(4)
551
+ var done = assert.async()
552
+ var accordionHTML = '<div id="accordion">' +
553
+ '<div class="row">' +
554
+ '<div class="col-lg-6">' +
555
+ '<div class="item">' +
556
+ '<a id="linkTrigger" data-toggle="collapse" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne"></a>' +
557
+ '<div id="collapseOne" class="collapse" role="tabpanel" aria-labelledby="headingThree" data-parent="#accordion"></div>' +
558
+ '</div>' +
559
+ '</div>' +
560
+ '<div class="col-lg-6">' +
561
+ '<div class="item">' +
562
+ '<a id="linkTriggerTwo" data-toggle="collapse" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"></a>' +
563
+ '<div id="collapseTwo" class="collapse show" role="tabpanel" aria-labelledby="headingTwo" data-parent="#accordion"></div>' +
564
+ '</div>' +
565
+ '</div>' +
566
+ '</div>' +
567
+ '</div>'
568
+
569
+ $(accordionHTML).appendTo('#qunit-fixture')
570
+ var $trigger = $('#linkTrigger')
571
+ var $triggerTwo = $('#linkTriggerTwo')
572
+ var $collapseOne = $('#collapseOne')
573
+ var $collapseTwo = $('#collapseTwo')
574
+ $collapseOne.on('shown.bs.collapse', function () {
575
+ assert.ok($collapseOne.hasClass('show'), '#collapseOne is shown')
576
+ assert.ok(!$collapseTwo.hasClass('show'), '#collapseTwo is not shown')
577
+ $collapseTwo.on('shown.bs.collapse', function () {
578
+ assert.ok(!$collapseOne.hasClass('show'), '#collapseOne is not shown')
579
+ assert.ok($collapseTwo.hasClass('show'), '#collapseTwo is shown')
580
+ done()
581
+ })
582
+ $triggerTwo.trigger($.Event('click'))
583
+ })
584
+ $trigger.trigger($.Event('click'))
585
+ })
586
+
587
+ QUnit.test('should allow accordion to target multiple elements', function (assert) {
588
+ assert.expect(8)
589
+ var done = assert.async()
590
+ var accordionHTML = '<div id="accordion">' +
591
+ '<a id="linkTriggerOne" data-toggle="collapse" data-target=".collapseOne" href="#" aria-expanded="false" aria-controls="collapseOne"></a>' +
592
+ '<a id="linkTriggerTwo" data-toggle="collapse" data-target=".collapseTwo" href="#" aria-expanded="false" aria-controls="collapseTwo"></a>' +
593
+ '<div id="collapseOneOne" class="collapse collapseOne" role="tabpanel" data-parent="#accordion"></div>' +
594
+ '<div id="collapseOneTwo" class="collapse collapseOne" role="tabpanel" data-parent="#accordion"></div>' +
595
+ '<div id="collapseTwoOne" class="collapse collapseTwo" role="tabpanel" data-parent="#accordion"></div>' +
596
+ '<div id="collapseTwoTwo" class="collapse collapseTwo" role="tabpanel" data-parent="#accordion"></div>' +
597
+ '</div>'
598
+
599
+ $(accordionHTML).appendTo('#qunit-fixture')
600
+ var $trigger = $('#linkTriggerOne')
601
+ var $triggerTwo = $('#linkTriggerTwo')
602
+ var $collapseOneOne = $('#collapseOneOne')
603
+ var $collapseOneTwo = $('#collapseOneTwo')
604
+ var $collapseTwoOne = $('#collapseTwoOne')
605
+ var $collapseTwoTwo = $('#collapseTwoTwo')
606
+ var collapsedElements = {
607
+ one : false,
608
+ two : false
609
+ }
610
+
611
+ function firstTest() {
612
+ assert.ok($collapseOneOne.hasClass('show'), '#collapseOneOne is shown')
613
+ assert.ok($collapseOneTwo.hasClass('show'), '#collapseOneTwo is shown')
614
+ assert.ok(!$collapseTwoOne.hasClass('show'), '#collapseTwoOne is not shown')
615
+ assert.ok(!$collapseTwoTwo.hasClass('show'), '#collapseTwoTwo is not shown')
616
+ $triggerTwo.trigger($.Event('click'))
617
+ }
618
+
619
+ function secondTest() {
620
+ assert.ok(!$collapseOneOne.hasClass('show'), '#collapseOneOne is not shown')
621
+ assert.ok(!$collapseOneTwo.hasClass('show'), '#collapseOneTwo is not shown')
622
+ assert.ok($collapseTwoOne.hasClass('show'), '#collapseTwoOne is shown')
623
+ assert.ok($collapseTwoTwo.hasClass('show'), '#collapseTwoTwo is shown')
624
+ done()
625
+ }
626
+
627
+ $collapseOneOne.on('shown.bs.collapse', function () {
628
+ if (collapsedElements.one) {
629
+ firstTest()
630
+ } else {
631
+ collapsedElements.one = true
632
+ }
633
+ })
634
+
635
+ $collapseOneTwo.on('shown.bs.collapse', function () {
636
+ if (collapsedElements.one) {
637
+ firstTest()
638
+ } else {
639
+ collapsedElements.one = true
640
+ }
641
+ })
642
+
643
+ $collapseTwoOne.on('shown.bs.collapse', function () {
644
+ if (collapsedElements.two) {
645
+ secondTest()
646
+ } else {
647
+ collapsedElements.two = true
648
+ }
649
+ })
650
+
651
+ $collapseTwoTwo.on('shown.bs.collapse', function () {
652
+ if (collapsedElements.two) {
653
+ secondTest()
654
+ } else {
655
+ collapsedElements.two = true
656
+ }
657
+ })
658
+
659
+ $trigger.trigger($.Event('click'))
660
+ })
661
+
662
+ QUnit.test('should collapse accordion children but not nested accordion children', function (assert) {
663
+ assert.expect(9)
664
+ var done = assert.async()
665
+ $('<div id="accordion">' +
666
+ '<div class="item">' +
667
+ '<a id="linkTrigger" data-toggle="collapse" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne"></a>' +
668
+ '<div id="collapseOne" data-parent="#accordion" class="collapse" role="tabpanel" aria-labelledby="headingThree">' +
669
+ '<div id="nestedAccordion">' +
670
+ '<div class="item">' +
671
+ '<a id="nestedLinkTrigger" data-toggle="collapse" href="#nestedCollapseOne" aria-expanded="false" aria-controls="nestedCollapseOne"></a>' +
672
+ '<div id="nestedCollapseOne" data-parent="#nestedAccordion" class="collapse" role="tabpanel" aria-labelledby="headingThree">' +
673
+ '</div>' +
674
+ '</div>' +
675
+ '</div>' +
676
+ '</div>' +
677
+ '</div>' +
678
+ '<div class="item">' +
679
+ '<a id="linkTriggerTwo" data-toggle="collapse" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"></a>' +
680
+ '<div id="collapseTwo" data-parent="#accordion" class="collapse show" role="tabpanel" aria-labelledby="headingTwo"></div>' +
681
+ '</div>' +
682
+ '</div>').appendTo('#qunit-fixture')
683
+ var $trigger = $('#linkTrigger')
684
+ var $triggerTwo = $('#linkTriggerTwo')
685
+ var $nestedTrigger = $('#nestedLinkTrigger')
686
+ var $collapseOne = $('#collapseOne')
687
+ var $collapseTwo = $('#collapseTwo')
688
+ var $nestedCollapseOne = $('#nestedCollapseOne')
689
+
690
+ $collapseOne.one('shown.bs.collapse', function () {
691
+ assert.ok($collapseOne.hasClass('show'), '#collapseOne is shown')
692
+ assert.ok(!$collapseTwo.hasClass('show'), '#collapseTwo is not shown')
693
+ assert.ok(!$('#nestedCollapseOne').hasClass('show'), '#nestedCollapseOne is not shown')
694
+ $nestedCollapseOne.one('shown.bs.collapse', function () {
695
+ assert.ok($collapseOne.hasClass('show'), '#collapseOne is shown')
696
+ assert.ok(!$collapseTwo.hasClass('show'), '#collapseTwo is not shown')
697
+ assert.ok($nestedCollapseOne.hasClass('show'), '#nestedCollapseOne is shown')
698
+ $collapseTwo.one('shown.bs.collapse', function () {
699
+ assert.ok(!$collapseOne.hasClass('show'), '#collapseOne is not shown')
700
+ assert.ok($collapseTwo.hasClass('show'), '#collapseTwo is shown')
701
+ assert.ok($nestedCollapseOne.hasClass('show'), '#nestedCollapseOne is shown')
702
+ done()
703
+ })
704
+ $triggerTwo.trigger($.Event('click'))
705
+ })
706
+ $nestedTrigger.trigger($.Event('click'))
707
+ })
708
+ $trigger.trigger($.Event('click'))
709
+ })
710
+
711
+ QUnit.test('should not prevent event for input', function (assert) {
712
+ assert.expect(3)
713
+ var done = assert.async()
714
+ var $target = $('<input type="checkbox" data-toggle="collapse" data-target="#collapsediv1" />').appendTo('#qunit-fixture')
715
+
716
+ $('<div id="collapsediv1"/>')
717
+ .appendTo('#qunit-fixture')
718
+ .on('shown.bs.collapse', function () {
719
+ assert.ok($(this).hasClass('show'))
720
+ assert.ok($target.attr('aria-expanded') === 'true')
721
+ assert.ok($target.prop('checked'))
722
+ done()
723
+ })
724
+
725
+ $target.trigger($.Event('click'))
726
+ })
727
+
728
+ QUnit.test('should add "collapsed" class to triggers only when all the targeted collapse are hidden', function (assert) {
729
+ assert.expect(9)
730
+ var done = assert.async()
731
+
732
+ var $trigger1 = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
733
+ var $trigger2 = $('<a role="button" data-toggle="collapse" href="#test2"/>').appendTo('#qunit-fixture')
734
+ var $trigger3 = $('<a role="button" data-toggle="collapse" href=".multi"/>').appendTo('#qunit-fixture')
735
+
736
+ var $target1 = $('<div id="test1" class="multi"/>').appendTo('#qunit-fixture')
737
+ var $target2 = $('<div id="test2" class="multi"/>').appendTo('#qunit-fixture')
738
+
739
+ $target2.one('shown.bs.collapse', function () {
740
+ assert.ok(!$trigger1.hasClass('collapsed'), 'trigger1 does not have collapsed class')
741
+ assert.ok(!$trigger2.hasClass('collapsed'), 'trigger2 does not have collapsed class')
742
+ assert.ok(!$trigger3.hasClass('collapsed'), 'trigger3 does not have collapsed class')
743
+ $target2.one('hidden.bs.collapse', function () {
744
+ assert.ok(!$trigger1.hasClass('collapsed'), 'trigger1 does not have collapsed class')
745
+ assert.ok($trigger2.hasClass('collapsed'), 'trigger2 has collapsed class')
746
+ assert.ok(!$trigger3.hasClass('collapsed'), 'trigger3 does not have collapsed class')
747
+ $target1.one('hidden.bs.collapse', function () {
748
+ assert.ok($trigger1.hasClass('collapsed'), 'trigger1 has collapsed class')
749
+ assert.ok($trigger2.hasClass('collapsed'), 'trigger2 has collapsed class')
750
+ assert.ok($trigger3.hasClass('collapsed'), 'trigger3 has collapsed class')
751
+ done()
752
+ })
753
+ $trigger1.trigger('click')
754
+ })
755
+ $trigger2.trigger('click')
756
+ })
757
+ $trigger3.trigger('click')
758
+ })
759
+
760
+ QUnit.test('should set aria-expanded="true" to triggers targeting shown collaspe and aria-expanded="false" only when all the targeted collapses are shown', function (assert) {
761
+ assert.expect(9)
762
+ var done = assert.async()
763
+
764
+ var $trigger1 = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
765
+ var $trigger2 = $('<a role="button" data-toggle="collapse" href="#test2"/>').appendTo('#qunit-fixture')
766
+ var $trigger3 = $('<a role="button" data-toggle="collapse" href=".multi"/>').appendTo('#qunit-fixture')
767
+
768
+ var $target1 = $('<div id="test1" class="multi collapse"/>').appendTo('#qunit-fixture')
769
+ var $target2 = $('<div id="test2" class="multi collapse"/>').appendTo('#qunit-fixture')
770
+
771
+ $target2.one('shown.bs.collapse', function () {
772
+ assert.strictEqual($trigger1.attr('aria-expanded'), 'true', 'aria-expanded on trigger1 is "true"')
773
+ assert.strictEqual($trigger2.attr('aria-expanded'), 'true', 'aria-expanded on trigger2 is "true"')
774
+ assert.strictEqual($trigger3.attr('aria-expanded'), 'true', 'aria-expanded on trigger3 is "true"')
775
+ $target2.one('hidden.bs.collapse', function () {
776
+ assert.strictEqual($trigger1.attr('aria-expanded'), 'true', 'aria-expanded on trigger1 is "true"')
777
+ assert.strictEqual($trigger2.attr('aria-expanded'), 'false', 'aria-expanded on trigger2 is "false"')
778
+ assert.strictEqual($trigger3.attr('aria-expanded'), 'true', 'aria-expanded on trigger3 is "true"')
779
+ $target1.one('hidden.bs.collapse', function () {
780
+ assert.strictEqual($trigger1.attr('aria-expanded'), 'false', 'aria-expanded on trigger1 is "fasle"')
781
+ assert.strictEqual($trigger2.attr('aria-expanded'), 'false', 'aria-expanded on trigger2 is "false"')
782
+ assert.strictEqual($trigger3.attr('aria-expanded'), 'false', 'aria-expanded on trigger3 is "false"')
783
+ done()
784
+ })
785
+ $trigger1.trigger('click')
786
+ })
787
+ $trigger2.trigger('click')
788
+ })
789
+ $trigger3.trigger('click')
790
+ })
791
+
792
+ QUnit.test('should not prevent interactions inside the collapse element', function (assert) {
793
+ assert.expect(2)
794
+ var done = assert.async()
795
+
796
+ var $target = $('<input type="checkbox" data-toggle="collapse" data-target="#collapsediv1" />').appendTo('#qunit-fixture')
797
+ var htmlCollapse =
798
+ '<div id="collapsediv1" class="collapse">' +
799
+ ' <input type="checkbox" id="testCheckbox" />' +
800
+ '</div>'
801
+
802
+ $(htmlCollapse)
803
+ .appendTo('#qunit-fixture')
804
+ .on('shown.bs.collapse', function () {
805
+ assert.ok($target.prop('checked'), '$trigger is checked')
806
+ var $testCheckbox = $('#testCheckbox')
807
+ $testCheckbox.trigger($.Event('click'))
808
+ setTimeout(function () {
809
+ assert.ok($testCheckbox.prop('checked'), '$testCheckbox is checked too')
810
+ done()
811
+ }, 5)
812
+ })
813
+
814
+ $target.trigger($.Event('click'))
815
+ })
816
+
817
+ QUnit.test('should allow jquery object in parent config', function (assert) {
818
+ assert.expect(1)
819
+ var html =
820
+ '<div class="my-collapse">' +
821
+ ' <div class="item">' +
822
+ ' <a data-toggle="collapse" href="#">Toggle item</a>' +
823
+ ' <div class="collapse">Lorem ipsum</div>' +
824
+ ' </div>' +
825
+ '</div>'
826
+
827
+ $(html).appendTo('#qunit-fixture')
828
+ try {
829
+ $('[data-toggle="collapse"]').bootstrapCollapse({
830
+ parent: $('.my-collapse')
831
+ })
832
+ assert.ok(true, 'collapse correctly created')
833
+ } catch (err) {
834
+ assert.ok(false, 'collapse not created')
835
+ }
836
+ })
837
+
838
+ QUnit.test('should allow DOM object in parent config', function (assert) {
839
+ assert.expect(1)
840
+ var html =
841
+ '<div class="my-collapse">' +
842
+ ' <div class="item">' +
843
+ ' <a data-toggle="collapse" href="#">Toggle item</a>' +
844
+ ' <div class="collapse">Lorem ipsum</div>' +
845
+ ' </div>' +
846
+ '</div>'
847
+
848
+ $(html).appendTo('#qunit-fixture')
849
+ try {
850
+ $('[data-toggle="collapse"]').bootstrapCollapse({
851
+ parent: $('.my-collapse')[0]
852
+ })
853
+ assert.ok(true, 'collapse correctly created')
854
+ } catch (err) {
855
+ assert.ok(false, 'collapse not created')
856
+ }
857
+ })
858
+
859
+ QUnit.test('should find collapse children if they have collapse class too not only data-parent', function (assert) {
860
+ assert.expect(2)
861
+ var done = assert.async()
862
+
863
+ var html =
864
+ '<div class="my-collapse">' +
865
+ ' <div class="item">' +
866
+ ' <a data-toggle="collapse" href="#">Toggle item 1</a>' +
867
+ ' <div id="collapse1" class="collapse show">Lorem ipsum 1</div>' +
868
+ ' </div>' +
869
+ ' <div class="item">' +
870
+ ' <a id="triggerCollapse2" data-toggle="collapse" href="#">Toggle item 2</a>' +
871
+ ' <div id="collapse2" class="collapse">Lorem ipsum 2</div>' +
872
+ ' </div>' +
873
+ '</div>'
874
+
875
+ $(html).appendTo('#qunit-fixture')
876
+
877
+ var $parent = $('.my-collapse')
878
+ var $collapse2 = $('#collapse2')
879
+ $parent.find('.collapse').bootstrapCollapse({
880
+ parent: $parent,
881
+ toggle: false
882
+ })
883
+
884
+ $collapse2.on('shown.bs.collapse', function () {
885
+ assert.ok($collapse2.hasClass('show'))
886
+ assert.ok(!$('#collapse1').hasClass('show'))
887
+ done()
888
+ })
889
+
890
+ $collapse2.bootstrapCollapse('toggle')
891
+ })
892
+ })