railsstrap 3.2.0.1

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 (284) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/README.md +61 -0
  4. data/Rakefile +24 -0
  5. data/app/helpers/railsstrap/badge_label_helper.rb +18 -0
  6. data/app/helpers/railsstrap/bootstrap_flash_helper.rb +27 -0
  7. data/app/helpers/railsstrap/breadcrumbs.rb +56 -0
  8. data/app/helpers/railsstrap/breadcrumbs_helper.rb +15 -0
  9. data/app/helpers/railsstrap/flash_block_helper.rb +19 -0
  10. data/app/helpers/railsstrap/form_errors_helper.rb +25 -0
  11. data/app/helpers/railsstrap/glyph_helper.rb +22 -0
  12. data/app/helpers/railsstrap/icon_helper.rb +22 -0
  13. data/app/helpers/railsstrap/modal_helper.rb +65 -0
  14. data/app/helpers/railsstrap/navbar_helper.rb +210 -0
  15. data/app/views/railsstrap/_breadcrumbs.html.erb +14 -0
  16. data/lib/generators/railsstrap/install/install_generator.rb +83 -0
  17. data/lib/generators/railsstrap/install/templates/application.css +7 -0
  18. data/lib/generators/railsstrap/install/templates/application.js +18 -0
  19. data/lib/generators/railsstrap/install/templates/bootstrap.coffee +3 -0
  20. data/lib/generators/railsstrap/install/templates/bootstrap.js +4 -0
  21. data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.css +8 -0
  22. data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.less +19 -0
  23. data/lib/generators/railsstrap/install/templates/en.bootstrap.yml +23 -0
  24. data/lib/generators/railsstrap/layout/layout_generator.rb +20 -0
  25. data/lib/generators/railsstrap/layout/templates/layout.html.erb +85 -0
  26. data/lib/generators/railsstrap/layout/templates/layout.html.haml +50 -0
  27. data/lib/generators/railsstrap/layout/templates/layout.html.slim +50 -0
  28. data/lib/generators/railsstrap/partial/partial_generator.rb +20 -0
  29. data/lib/generators/railsstrap/partial/templates/_login.html.erb +28 -0
  30. data/lib/generators/railsstrap/themed/templates/_form.html.erb +36 -0
  31. data/lib/generators/railsstrap/themed/templates/_form.html.haml +12 -0
  32. data/lib/generators/railsstrap/themed/templates/_form.html.slim +13 -0
  33. data/lib/generators/railsstrap/themed/templates/edit.html.erb +5 -0
  34. data/lib/generators/railsstrap/themed/templates/edit.html.haml +4 -0
  35. data/lib/generators/railsstrap/themed/templates/edit.html.slim +4 -0
  36. data/lib/generators/railsstrap/themed/templates/index.html.erb +40 -0
  37. data/lib/generators/railsstrap/themed/templates/index.html.haml +25 -0
  38. data/lib/generators/railsstrap/themed/templates/index.html.slim +27 -0
  39. data/lib/generators/railsstrap/themed/templates/new.html.erb +5 -0
  40. data/lib/generators/railsstrap/themed/templates/new.html.haml +4 -0
  41. data/lib/generators/railsstrap/themed/templates/new.html.slim +4 -0
  42. data/lib/generators/railsstrap/themed/templates/show.html.erb +21 -0
  43. data/lib/generators/railsstrap/themed/templates/show.html.haml +15 -0
  44. data/lib/generators/railsstrap/themed/templates/show.html.slim +16 -0
  45. data/lib/generators/railsstrap/themed/templates/simple_form/_form.html.erb +14 -0
  46. data/lib/generators/railsstrap/themed/templates/simple_form/_form.html.haml +11 -0
  47. data/lib/generators/railsstrap/themed/templates/simple_form/_form.html.slim +12 -0
  48. data/lib/generators/railsstrap/themed/themed_generator.rb +148 -0
  49. data/lib/railsstrap/bootstrap.rb +2 -0
  50. data/lib/railsstrap/constants.rb +6 -0
  51. data/lib/railsstrap/engine.rb +40 -0
  52. data/lib/railsstrap.rb +5 -0
  53. data/vendor/assets/bower_components/bootstrap/Gruntfile.js +480 -0
  54. data/vendor/assets/bower_components/bootstrap/LICENSE +21 -0
  55. data/vendor/assets/bower_components/bootstrap/README.md +127 -0
  56. data/vendor/assets/bower_components/bootstrap/bower.json +38 -0
  57. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +442 -0
  58. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
  59. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +5 -0
  60. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +6203 -0
  61. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -0
  62. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +5 -0
  63. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  64. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  65. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  66. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  67. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +2114 -0
  68. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +6 -0
  69. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  70. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +229 -0
  71. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  72. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  73. data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +41 -0
  74. data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +236 -0
  75. data/vendor/assets/bower_components/bootstrap/grunt/bs-raw-files-generator.js +46 -0
  76. data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +82 -0
  77. data/vendor/assets/bower_components/bootstrap/js/affix.js +142 -0
  78. data/vendor/assets/bower_components/bootstrap/js/alert.js +92 -0
  79. data/vendor/assets/bower_components/bootstrap/js/button.js +110 -0
  80. data/vendor/assets/bower_components/bootstrap/js/carousel.js +223 -0
  81. data/vendor/assets/bower_components/bootstrap/js/collapse.js +170 -0
  82. data/vendor/assets/bower_components/bootstrap/js/dropdown.js +151 -0
  83. data/vendor/assets/bower_components/bootstrap/js/modal.js +280 -0
  84. data/vendor/assets/bower_components/bootstrap/js/popover.js +113 -0
  85. data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +170 -0
  86. data/vendor/assets/bower_components/bootstrap/js/tab.js +128 -0
  87. data/vendor/assets/bower_components/bootstrap/js/tooltip.js +457 -0
  88. data/vendor/assets/bower_components/bootstrap/js/transition.js +59 -0
  89. data/vendor/assets/bower_components/bootstrap/less/alerts.less +68 -0
  90. data/vendor/assets/bower_components/bootstrap/less/badges.less +55 -0
  91. data/vendor/assets/bower_components/bootstrap/less/bootstrap.less +50 -0
  92. data/vendor/assets/bower_components/bootstrap/less/breadcrumbs.less +26 -0
  93. data/vendor/assets/bower_components/bootstrap/less/button-groups.less +240 -0
  94. data/vendor/assets/bower_components/bootstrap/less/buttons.less +157 -0
  95. data/vendor/assets/bower_components/bootstrap/less/carousel.less +243 -0
  96. data/vendor/assets/bower_components/bootstrap/less/close.less +33 -0
  97. data/vendor/assets/bower_components/bootstrap/less/code.less +68 -0
  98. data/vendor/assets/bower_components/bootstrap/less/component-animations.less +31 -0
  99. data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +215 -0
  100. data/vendor/assets/bower_components/bootstrap/less/forms.less +540 -0
  101. data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +233 -0
  102. data/vendor/assets/bower_components/bootstrap/less/grid.less +84 -0
  103. data/vendor/assets/bower_components/bootstrap/less/input-groups.less +166 -0
  104. data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +48 -0
  105. data/vendor/assets/bower_components/bootstrap/less/labels.less +64 -0
  106. data/vendor/assets/bower_components/bootstrap/less/list-group.less +131 -0
  107. data/vendor/assets/bower_components/bootstrap/less/media.less +56 -0
  108. data/vendor/assets/bower_components/bootstrap/less/mixins/alerts.less +14 -0
  109. data/vendor/assets/bower_components/bootstrap/less/mixins/background-variant.less +8 -0
  110. data/vendor/assets/bower_components/bootstrap/less/mixins/border-radius.less +18 -0
  111. data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +50 -0
  112. data/vendor/assets/bower_components/bootstrap/less/mixins/center-block.less +7 -0
  113. data/vendor/assets/bower_components/bootstrap/less/mixins/clearfix.less +22 -0
  114. data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +81 -0
  115. data/vendor/assets/bower_components/bootstrap/less/mixins/gradients.less +59 -0
  116. data/vendor/assets/bower_components/bootstrap/less/mixins/grid-framework.less +91 -0
  117. data/vendor/assets/bower_components/bootstrap/less/mixins/grid.less +122 -0
  118. data/vendor/assets/bower_components/bootstrap/less/mixins/hide-text.less +21 -0
  119. data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +34 -0
  120. data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +12 -0
  121. data/vendor/assets/bower_components/bootstrap/less/mixins/list-group.less +29 -0
  122. data/vendor/assets/bower_components/bootstrap/less/mixins/nav-divider.less +10 -0
  123. data/vendor/assets/bower_components/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  124. data/vendor/assets/bower_components/bootstrap/less/mixins/opacity.less +8 -0
  125. data/vendor/assets/bower_components/bootstrap/less/mixins/pagination.less +23 -0
  126. data/vendor/assets/bower_components/bootstrap/less/mixins/panels.less +24 -0
  127. data/vendor/assets/bower_components/bootstrap/less/mixins/progress-bar.less +10 -0
  128. data/vendor/assets/bower_components/bootstrap/less/mixins/reset-filter.less +8 -0
  129. data/vendor/assets/bower_components/bootstrap/less/mixins/resize.less +6 -0
  130. data/vendor/assets/bower_components/bootstrap/less/mixins/responsive-visibility.less +15 -0
  131. data/vendor/assets/bower_components/bootstrap/less/mixins/size.less +10 -0
  132. data/vendor/assets/bower_components/bootstrap/less/mixins/tab-focus.less +9 -0
  133. data/vendor/assets/bower_components/bootstrap/less/mixins/table-row.less +28 -0
  134. data/vendor/assets/bower_components/bootstrap/less/mixins/text-emphasis.less +8 -0
  135. data/vendor/assets/bower_components/bootstrap/less/mixins/text-overflow.less +8 -0
  136. data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +224 -0
  137. data/vendor/assets/bower_components/bootstrap/less/mixins.less +39 -0
  138. data/vendor/assets/bower_components/bootstrap/less/modals.less +150 -0
  139. data/vendor/assets/bower_components/bootstrap/less/navbar.less +655 -0
  140. data/vendor/assets/bower_components/bootstrap/less/navs.less +242 -0
  141. data/vendor/assets/bower_components/bootstrap/less/normalize.less +425 -0
  142. data/vendor/assets/bower_components/bootstrap/less/pager.less +55 -0
  143. data/vendor/assets/bower_components/bootstrap/less/pagination.less +88 -0
  144. data/vendor/assets/bower_components/bootstrap/less/panels.less +243 -0
  145. data/vendor/assets/bower_components/bootstrap/less/popovers.less +133 -0
  146. data/vendor/assets/bower_components/bootstrap/less/print.less +101 -0
  147. data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +105 -0
  148. data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +34 -0
  149. data/vendor/assets/bower_components/bootstrap/less/responsive-utilities.less +194 -0
  150. data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +150 -0
  151. data/vendor/assets/bower_components/bootstrap/less/tables.less +233 -0
  152. data/vendor/assets/bower_components/bootstrap/less/theme.less +258 -0
  153. data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +36 -0
  154. data/vendor/assets/bower_components/bootstrap/less/tooltip.less +95 -0
  155. data/vendor/assets/bower_components/bootstrap/less/type.less +313 -0
  156. data/vendor/assets/bower_components/bootstrap/less/utilities.less +57 -0
  157. data/vendor/assets/bower_components/bootstrap/less/variables.less +846 -0
  158. data/vendor/assets/bower_components/bootstrap/less/wells.less +29 -0
  159. data/vendor/assets/bower_components/bootstrap/package.json +81 -0
  160. data/vendor/assets/bower_components/fontawesome/bower.json +23 -0
  161. data/vendor/assets/bower_components/fontawesome/css/font-awesome.css +1672 -0
  162. data/vendor/assets/bower_components/fontawesome/css/font-awesome.min.css +4 -0
  163. data/vendor/assets/bower_components/fontawesome/fonts/FontAwesome.otf +0 -0
  164. data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.eot +0 -0
  165. data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.svg +520 -0
  166. data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.ttf +0 -0
  167. data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.woff +0 -0
  168. data/vendor/assets/bower_components/fontawesome/less/bordered-pulled.less +16 -0
  169. data/vendor/assets/bower_components/fontawesome/less/core.less +11 -0
  170. data/vendor/assets/bower_components/fontawesome/less/extras.less +2 -0
  171. data/vendor/assets/bower_components/fontawesome/less/fixed-width.less +6 -0
  172. data/vendor/assets/bower_components/fontawesome/less/font-awesome.less +17 -0
  173. data/vendor/assets/bower_components/fontawesome/less/icons.less +552 -0
  174. data/vendor/assets/bower_components/fontawesome/less/larger.less +13 -0
  175. data/vendor/assets/bower_components/fontawesome/less/list.less +19 -0
  176. data/vendor/assets/bower_components/fontawesome/less/mixins.less +25 -0
  177. data/vendor/assets/bower_components/fontawesome/less/path.less +14 -0
  178. data/vendor/assets/bower_components/fontawesome/less/rotated-flipped.less +20 -0
  179. data/vendor/assets/bower_components/fontawesome/less/spinning.less +29 -0
  180. data/vendor/assets/bower_components/fontawesome/less/stacked.less +20 -0
  181. data/vendor/assets/bower_components/fontawesome/less/variables.less +561 -0
  182. data/vendor/assets/bower_components/fontawesome/scss/_bordered-pulled.scss +16 -0
  183. data/vendor/assets/bower_components/fontawesome/scss/_core.scss +11 -0
  184. data/vendor/assets/bower_components/fontawesome/scss/_extras.scss +44 -0
  185. data/vendor/assets/bower_components/fontawesome/scss/_fixed-width.scss +6 -0
  186. data/vendor/assets/bower_components/fontawesome/scss/_icons.scss +552 -0
  187. data/vendor/assets/bower_components/fontawesome/scss/_larger.scss +13 -0
  188. data/vendor/assets/bower_components/fontawesome/scss/_list.scss +19 -0
  189. data/vendor/assets/bower_components/fontawesome/scss/_mixins.scss +25 -0
  190. data/vendor/assets/bower_components/fontawesome/scss/_path.scss +14 -0
  191. data/vendor/assets/bower_components/fontawesome/scss/_rotated-flipped.scss +20 -0
  192. data/vendor/assets/bower_components/fontawesome/scss/_spinning.scss +29 -0
  193. data/vendor/assets/bower_components/fontawesome/scss/_stacked.scss +20 -0
  194. data/vendor/assets/bower_components/fontawesome/scss/_variables.scss +561 -0
  195. data/vendor/assets/bower_components/fontawesome/scss/font-awesome.scss +17 -0
  196. data/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +21 -0
  197. data/vendor/assets/bower_components/jquery/bower.json +27 -0
  198. data/vendor/assets/bower_components/jquery/dist/jquery.js +9190 -0
  199. data/vendor/assets/bower_components/jquery/dist/jquery.min.js +5 -0
  200. data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -0
  201. data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +89 -0
  202. data/vendor/assets/bower_components/jquery/src/ajax/load.js +75 -0
  203. data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  204. data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +28 -0
  205. data/vendor/assets/bower_components/jquery/src/ajax/script.js +64 -0
  206. data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  207. data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  208. data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +135 -0
  209. data/vendor/assets/bower_components/jquery/src/ajax.js +806 -0
  210. data/vendor/assets/bower_components/jquery/src/attributes/attr.js +143 -0
  211. data/vendor/assets/bower_components/jquery/src/attributes/classes.js +158 -0
  212. data/vendor/assets/bower_components/jquery/src/attributes/prop.js +96 -0
  213. data/vendor/assets/bower_components/jquery/src/attributes/support.js +35 -0
  214. data/vendor/assets/bower_components/jquery/src/attributes/val.js +163 -0
  215. data/vendor/assets/bower_components/jquery/src/attributes.js +11 -0
  216. data/vendor/assets/bower_components/jquery/src/callbacks.js +205 -0
  217. data/vendor/assets/bower_components/jquery/src/core/access.js +60 -0
  218. data/vendor/assets/bower_components/jquery/src/core/init.js +123 -0
  219. data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +39 -0
  220. data/vendor/assets/bower_components/jquery/src/core/ready.js +97 -0
  221. data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  222. data/vendor/assets/bower_components/jquery/src/core.js +498 -0
  223. data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  224. data/vendor/assets/bower_components/jquery/src/css/curCSS.js +57 -0
  225. data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  226. data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  227. data/vendor/assets/bower_components/jquery/src/css/support.js +91 -0
  228. data/vendor/assets/bower_components/jquery/src/css/swap.js +28 -0
  229. data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  230. data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +5 -0
  231. data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +13 -0
  232. data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +3 -0
  233. data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  234. data/vendor/assets/bower_components/jquery/src/css.js +451 -0
  235. data/vendor/assets/bower_components/jquery/src/data/Data.js +181 -0
  236. data/vendor/assets/bower_components/jquery/src/data/accepts.js +20 -0
  237. data/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +5 -0
  238. data/vendor/assets/bower_components/jquery/src/data/var/data_user.js +5 -0
  239. data/vendor/assets/bower_components/jquery/src/data.js +179 -0
  240. data/vendor/assets/bower_components/jquery/src/deferred.js +149 -0
  241. data/vendor/assets/bower_components/jquery/src/deprecated.js +13 -0
  242. data/vendor/assets/bower_components/jquery/src/dimensions.js +50 -0
  243. data/vendor/assets/bower_components/jquery/src/effects/Tween.js +114 -0
  244. data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  245. data/vendor/assets/bower_components/jquery/src/effects.js +649 -0
  246. data/vendor/assets/bower_components/jquery/src/event/alias.js +39 -0
  247. data/vendor/assets/bower_components/jquery/src/event/support.js +9 -0
  248. data/vendor/assets/bower_components/jquery/src/event.js +868 -0
  249. data/vendor/assets/bower_components/jquery/src/exports/amd.js +24 -0
  250. data/vendor/assets/bower_components/jquery/src/exports/global.js +32 -0
  251. data/vendor/assets/bower_components/jquery/src/intro.js +44 -0
  252. data/vendor/assets/bower_components/jquery/src/jquery.js +36 -0
  253. data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  254. data/vendor/assets/bower_components/jquery/src/manipulation/support.js +31 -0
  255. data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  256. data/vendor/assets/bower_components/jquery/src/manipulation.js +582 -0
  257. data/vendor/assets/bower_components/jquery/src/offset.js +204 -0
  258. data/vendor/assets/bower_components/jquery/src/outro.js +1 -0
  259. data/vendor/assets/bower_components/jquery/src/queue/delay.js +22 -0
  260. data/vendor/assets/bower_components/jquery/src/queue.js +142 -0
  261. data/vendor/assets/bower_components/jquery/src/selector-native.js +172 -0
  262. data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +14 -0
  263. data/vendor/assets/bower_components/jquery/src/selector.js +1 -0
  264. data/vendor/assets/bower_components/jquery/src/serialize.js +111 -0
  265. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +2044 -0
  266. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  267. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  268. data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +100 -0
  269. data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  270. data/vendor/assets/bower_components/jquery/src/traversing.js +200 -0
  271. data/vendor/assets/bower_components/jquery/src/var/arr.js +3 -0
  272. data/vendor/assets/bower_components/jquery/src/var/class2type.js +4 -0
  273. data/vendor/assets/bower_components/jquery/src/var/concat.js +5 -0
  274. data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +5 -0
  275. data/vendor/assets/bower_components/jquery/src/var/indexOf.js +5 -0
  276. data/vendor/assets/bower_components/jquery/src/var/pnum.js +3 -0
  277. data/vendor/assets/bower_components/jquery/src/var/push.js +5 -0
  278. data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +3 -0
  279. data/vendor/assets/bower_components/jquery/src/var/slice.js +5 -0
  280. data/vendor/assets/bower_components/jquery/src/var/strundefined.js +3 -0
  281. data/vendor/assets/bower_components/jquery/src/var/support.js +4 -0
  282. data/vendor/assets/bower_components/jquery/src/var/toString.js +5 -0
  283. data/vendor/assets/bower_components/jquery/src/wrap.js +78 -0
  284. metadata +356 -0
@@ -0,0 +1,236 @@
1
+ /*!
2
+ * Bootstrap Grunt task for parsing Less docstrings
3
+ * http://getbootstrap.com
4
+ * Copyright 2014 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ */
7
+ 'use strict';
8
+
9
+ var markdown = require('markdown').markdown;
10
+
11
+ function markdown2html(markdownString) {
12
+ // the slice removes the <p>...</p> wrapper output by Markdown processor
13
+ return markdown.toHTML(markdownString.trim()).slice(3, -4);
14
+ }
15
+
16
+
17
+ /*
18
+ Mini-language:
19
+ //== This is a normal heading, which starts a section. Sections group variables together.
20
+ //## Optional description for the heading
21
+
22
+ //=== This is a subheading.
23
+
24
+ //** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff.
25
+ @foo: #fff;
26
+
27
+ //-- This is a heading for a section whose variables shouldn't be customizable
28
+
29
+ All other lines are ignored completely.
30
+ */
31
+
32
+
33
+ var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/;
34
+ var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/;
35
+ var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/;
36
+ var SECTION_DOCSTRING = /^[/]{2}#{2}(.*)$/;
37
+ var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]+);[ ]*$/;
38
+ var VAR_DOCSTRING = /^[/]{2}[*]{2}(.*)$/;
39
+
40
+ function Section(heading, customizable) {
41
+ this.heading = heading.trim();
42
+ this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
43
+ this.customizable = customizable;
44
+ this.docstring = null;
45
+ this.subsections = [];
46
+ }
47
+
48
+ Section.prototype.addSubSection = function (subsection) {
49
+ this.subsections.push(subsection);
50
+ };
51
+
52
+ function SubSection(heading) {
53
+ this.heading = heading.trim();
54
+ this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
55
+ this.variables = [];
56
+ }
57
+
58
+ SubSection.prototype.addVar = function (variable) {
59
+ this.variables.push(variable);
60
+ };
61
+
62
+ function VarDocstring(markdownString) {
63
+ this.html = markdown2html(markdownString);
64
+ }
65
+
66
+ function SectionDocstring(markdownString) {
67
+ this.html = markdown2html(markdownString);
68
+ }
69
+
70
+ function Variable(name, defaultValue) {
71
+ this.name = name;
72
+ this.defaultValue = defaultValue;
73
+ this.docstring = null;
74
+ }
75
+
76
+ function Tokenizer(fileContent) {
77
+ this._lines = fileContent.split('\n');
78
+ this._next = undefined;
79
+ }
80
+
81
+ Tokenizer.prototype.unshift = function (token) {
82
+ if (this._next !== undefined) {
83
+ throw new Error('Attempted to unshift twice!');
84
+ }
85
+ this._next = token;
86
+ };
87
+
88
+ Tokenizer.prototype._shift = function () {
89
+ // returning null signals EOF
90
+ // returning undefined means the line was ignored
91
+ if (this._next !== undefined) {
92
+ var result = this._next;
93
+ this._next = undefined;
94
+ return result;
95
+ }
96
+ if (this._lines.length <= 0) {
97
+ return null;
98
+ }
99
+ var line = this._lines.shift();
100
+ var match = null;
101
+ match = SUBSECTION_HEADING.exec(line);
102
+ if (match !== null) {
103
+ return new SubSection(match[1]);
104
+ }
105
+ match = CUSTOMIZABLE_HEADING.exec(line);
106
+ if (match !== null) {
107
+ return new Section(match[1], true);
108
+ }
109
+ match = UNCUSTOMIZABLE_HEADING.exec(line);
110
+ if (match !== null) {
111
+ return new Section(match[1], false);
112
+ }
113
+ match = SECTION_DOCSTRING.exec(line);
114
+ if (match !== null) {
115
+ return new SectionDocstring(match[1]);
116
+ }
117
+ match = VAR_DOCSTRING.exec(line);
118
+ if (match !== null) {
119
+ return new VarDocstring(match[1]);
120
+ }
121
+ var commentStart = line.lastIndexOf('//');
122
+ var varLine = (commentStart === -1) ? line : line.slice(0, commentStart);
123
+ match = VAR_ASSIGNMENT.exec(varLine);
124
+ if (match !== null) {
125
+ return new Variable(match[1], match[2]);
126
+ }
127
+ return undefined;
128
+ };
129
+
130
+ Tokenizer.prototype.shift = function () {
131
+ while (true) {
132
+ var result = this._shift();
133
+ if (result === undefined) {
134
+ continue;
135
+ }
136
+ return result;
137
+ }
138
+ };
139
+
140
+ function Parser(fileContent) {
141
+ this._tokenizer = new Tokenizer(fileContent);
142
+ }
143
+
144
+ Parser.prototype.parseFile = function () {
145
+ var sections = [];
146
+ while (true) {
147
+ var section = this.parseSection();
148
+ if (section === null) {
149
+ if (this._tokenizer.shift() !== null) {
150
+ throw new Error('Unexpected unparsed section of file remains!');
151
+ }
152
+ return sections;
153
+ }
154
+ sections.push(section);
155
+ }
156
+ };
157
+
158
+ Parser.prototype.parseSection = function () {
159
+ var section = this._tokenizer.shift();
160
+ if (section === null) {
161
+ return null;
162
+ }
163
+ if (!(section instanceof Section)) {
164
+ throw new Error('Expected section heading; got: ' + JSON.stringify(section));
165
+ }
166
+ var docstring = this._tokenizer.shift();
167
+ if (docstring instanceof SectionDocstring) {
168
+ section.docstring = docstring;
169
+ }
170
+ else {
171
+ this._tokenizer.unshift(docstring);
172
+ }
173
+ this.parseSubSections(section);
174
+
175
+ return section;
176
+ };
177
+
178
+ Parser.prototype.parseSubSections = function (section) {
179
+ while (true) {
180
+ var subsection = this.parseSubSection();
181
+ if (subsection === null) {
182
+ if (section.subsections.length === 0) {
183
+ // Presume an implicit initial subsection
184
+ subsection = new SubSection('');
185
+ this.parseVars(subsection);
186
+ }
187
+ else {
188
+ break;
189
+ }
190
+ }
191
+ section.addSubSection(subsection);
192
+ }
193
+
194
+ if (section.subsections.length === 1 && !(section.subsections[0].heading) && section.subsections[0].variables.length === 0) {
195
+ // Ignore lone empty implicit subsection
196
+ section.subsections = [];
197
+ }
198
+ };
199
+
200
+ Parser.prototype.parseSubSection = function () {
201
+ var subsection = this._tokenizer.shift();
202
+ if (subsection instanceof SubSection) {
203
+ this.parseVars(subsection);
204
+ return subsection;
205
+ }
206
+ this._tokenizer.unshift(subsection);
207
+ return null;
208
+ };
209
+
210
+ Parser.prototype.parseVars = function (subsection) {
211
+ while (true) {
212
+ var variable = this.parseVar();
213
+ if (variable === null) {
214
+ return;
215
+ }
216
+ subsection.addVar(variable);
217
+ }
218
+ };
219
+
220
+ Parser.prototype.parseVar = function () {
221
+ var docstring = this._tokenizer.shift();
222
+ if (!(docstring instanceof VarDocstring)) {
223
+ this._tokenizer.unshift(docstring);
224
+ docstring = null;
225
+ }
226
+ var variable = this._tokenizer.shift();
227
+ if (variable instanceof Variable) {
228
+ variable.docstring = docstring;
229
+ return variable;
230
+ }
231
+ this._tokenizer.unshift(variable);
232
+ return null;
233
+ };
234
+
235
+
236
+ module.exports = Parser;
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * Bootstrap Grunt task for generating raw-files.min.js for the Customizer
3
+ * http://getbootstrap.com
4
+ * Copyright 2014 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ */
7
+
8
+ /* global btoa: true */
9
+
10
+ 'use strict';
11
+ var fs = require('fs');
12
+ var btoa = require('btoa');
13
+ var glob = require('glob');
14
+
15
+ function getFiles(type) {
16
+ var files = {};
17
+ var recursive = (type === 'less');
18
+ var globExpr = (recursive ? '/**/*' : '/*');
19
+ glob.sync(type + globExpr)
20
+ .filter(function (path) {
21
+ return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
22
+ })
23
+ .forEach(function (fullPath) {
24
+ var relativePath = fullPath.replace(/^[^/]+\//, '');
25
+ files[relativePath] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'));
26
+ });
27
+ return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
28
+ }
29
+
30
+ module.exports = function generateRawFilesJs(grunt, banner) {
31
+ if (!banner) {
32
+ banner = '';
33
+ }
34
+ var dirs = ['js', 'less', 'fonts'];
35
+ var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
36
+ return combined + file;
37
+ }, '');
38
+ var rawFilesJs = 'docs/assets/js/raw-files.min.js';
39
+ try {
40
+ fs.writeFileSync(rawFilesJs, files);
41
+ }
42
+ catch (err) {
43
+ grunt.fail.warn(err);
44
+ }
45
+ grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');
46
+ };
@@ -0,0 +1,82 @@
1
+ [
2
+ # Docs: https://saucelabs.com/docs/platforms/webdriver
3
+
4
+ {
5
+ browserName: "safari",
6
+ platform: "OS X 10.9"
7
+ },
8
+ {
9
+ browserName: "chrome",
10
+ platform: "OS X 10.9"
11
+ },
12
+ {
13
+ browserName: "firefox",
14
+ platform: "OS X 10.9"
15
+ },
16
+
17
+ # Mac Opera not currently supported by Sauce Labs
18
+
19
+ {
20
+ browserName: "internet explorer",
21
+ version: "11",
22
+ platform: "Windows 8.1"
23
+ },
24
+ {
25
+ browserName: "internet explorer",
26
+ version: "10",
27
+ platform: "Windows 8"
28
+ },
29
+ {
30
+ browserName: "internet explorer",
31
+ version: "9",
32
+ platform: "Windows 7"
33
+ },
34
+ {
35
+ browserName: "internet explorer",
36
+ version: "8",
37
+ platform: "Windows 7"
38
+ },
39
+
40
+ # { # Unofficial
41
+ # browserName: "internet explorer",
42
+ # version: "7",
43
+ # platform: "Windows XP"
44
+ # },
45
+
46
+ {
47
+ browserName: "chrome",
48
+ platform: "Windows 8.1"
49
+ },
50
+ {
51
+ browserName: "firefox",
52
+ platform: "Windows 8.1"
53
+ },
54
+
55
+ # Win Opera 15+ not currently supported by Sauce Labs
56
+
57
+ {
58
+ browserName: "iphone",
59
+ platform: "OS X 10.9",
60
+ version: "7.1"
61
+ },
62
+
63
+ # iOS Chrome not currently supported by Sauce Labs
64
+
65
+ # Linux (unofficial)
66
+ {
67
+ browserName: "chrome",
68
+ platform: "Linux"
69
+ },
70
+ {
71
+ browserName: "firefox",
72
+ platform: "Linux"
73
+ }
74
+
75
+ # Android Chrome not currently supported by Sauce Labs
76
+
77
+ # { # Android Browser (super-unofficial)
78
+ # browserName: "android",
79
+ # version: "4.0",
80
+ # platform: "Linux"
81
+ # }
82
+ ]
@@ -0,0 +1,142 @@
1
+ /* ========================================================================
2
+ * Bootstrap: affix.js v3.2.0
3
+ * http://getbootstrap.com/javascript/#affix
4
+ * ========================================================================
5
+ * Copyright 2011-2014 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+
10
+ +function ($) {
11
+ 'use strict';
12
+
13
+ // AFFIX CLASS DEFINITION
14
+ // ======================
15
+
16
+ var Affix = function (element, options) {
17
+ this.options = $.extend({}, Affix.DEFAULTS, options)
18
+
19
+ this.$target = $(this.options.target)
20
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
21
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
22
+
23
+ this.$element = $(element)
24
+ this.affixed =
25
+ this.unpin =
26
+ this.pinnedOffset = null
27
+
28
+ this.checkPosition()
29
+ }
30
+
31
+ Affix.VERSION = '3.2.0'
32
+
33
+ Affix.RESET = 'affix affix-top affix-bottom'
34
+
35
+ Affix.DEFAULTS = {
36
+ offset: 0,
37
+ target: window
38
+ }
39
+
40
+ Affix.prototype.getPinnedOffset = function () {
41
+ if (this.pinnedOffset) return this.pinnedOffset
42
+ this.$element.removeClass(Affix.RESET).addClass('affix')
43
+ var scrollTop = this.$target.scrollTop()
44
+ var position = this.$element.offset()
45
+ return (this.pinnedOffset = position.top - scrollTop)
46
+ }
47
+
48
+ Affix.prototype.checkPositionWithEventLoop = function () {
49
+ setTimeout($.proxy(this.checkPosition, this), 1)
50
+ }
51
+
52
+ Affix.prototype.checkPosition = function () {
53
+ if (!this.$element.is(':visible')) return
54
+
55
+ var scrollHeight = $(document).height()
56
+ var scrollTop = this.$target.scrollTop()
57
+ var position = this.$element.offset()
58
+ var offset = this.options.offset
59
+ var offsetTop = offset.top
60
+ var offsetBottom = offset.bottom
61
+
62
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
63
+ if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
64
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
65
+
66
+ var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
67
+ offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
68
+ offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
69
+
70
+ if (this.affixed === affix) return
71
+ if (this.unpin != null) this.$element.css('top', '')
72
+
73
+ var affixType = 'affix' + (affix ? '-' + affix : '')
74
+ var e = $.Event(affixType + '.bs.affix')
75
+
76
+ this.$element.trigger(e)
77
+
78
+ if (e.isDefaultPrevented()) return
79
+
80
+ this.affixed = affix
81
+ this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
82
+
83
+ this.$element
84
+ .removeClass(Affix.RESET)
85
+ .addClass(affixType)
86
+ .trigger($.Event(affixType.replace('affix', 'affixed')))
87
+
88
+ if (affix == 'bottom') {
89
+ this.$element.offset({
90
+ top: scrollHeight - this.$element.height() - offsetBottom
91
+ })
92
+ }
93
+ }
94
+
95
+
96
+ // AFFIX PLUGIN DEFINITION
97
+ // =======================
98
+
99
+ function Plugin(option) {
100
+ return this.each(function () {
101
+ var $this = $(this)
102
+ var data = $this.data('bs.affix')
103
+ var options = typeof option == 'object' && option
104
+
105
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
106
+ if (typeof option == 'string') data[option]()
107
+ })
108
+ }
109
+
110
+ var old = $.fn.affix
111
+
112
+ $.fn.affix = Plugin
113
+ $.fn.affix.Constructor = Affix
114
+
115
+
116
+ // AFFIX NO CONFLICT
117
+ // =================
118
+
119
+ $.fn.affix.noConflict = function () {
120
+ $.fn.affix = old
121
+ return this
122
+ }
123
+
124
+
125
+ // AFFIX DATA-API
126
+ // ==============
127
+
128
+ $(window).on('load', function () {
129
+ $('[data-spy="affix"]').each(function () {
130
+ var $spy = $(this)
131
+ var data = $spy.data()
132
+
133
+ data.offset = data.offset || {}
134
+
135
+ if (data.offsetBottom) data.offset.bottom = data.offsetBottom
136
+ if (data.offsetTop) data.offset.top = data.offsetTop
137
+
138
+ Plugin.call($spy, data)
139
+ })
140
+ })
141
+
142
+ }(jQuery);
@@ -0,0 +1,92 @@
1
+ /* ========================================================================
2
+ * Bootstrap: alert.js v3.2.0
3
+ * http://getbootstrap.com/javascript/#alerts
4
+ * ========================================================================
5
+ * Copyright 2011-2014 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+
10
+ +function ($) {
11
+ 'use strict';
12
+
13
+ // ALERT CLASS DEFINITION
14
+ // ======================
15
+
16
+ var dismiss = '[data-dismiss="alert"]'
17
+ var Alert = function (el) {
18
+ $(el).on('click', dismiss, this.close)
19
+ }
20
+
21
+ Alert.VERSION = '3.2.0'
22
+
23
+ Alert.prototype.close = function (e) {
24
+ var $this = $(this)
25
+ var selector = $this.attr('data-target')
26
+
27
+ if (!selector) {
28
+ selector = $this.attr('href')
29
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
30
+ }
31
+
32
+ var $parent = $(selector)
33
+
34
+ if (e) e.preventDefault()
35
+
36
+ if (!$parent.length) {
37
+ $parent = $this.hasClass('alert') ? $this : $this.parent()
38
+ }
39
+
40
+ $parent.trigger(e = $.Event('close.bs.alert'))
41
+
42
+ if (e.isDefaultPrevented()) return
43
+
44
+ $parent.removeClass('in')
45
+
46
+ function removeElement() {
47
+ // detach from parent, fire event then clean up data
48
+ $parent.detach().trigger('closed.bs.alert').remove()
49
+ }
50
+
51
+ $.support.transition && $parent.hasClass('fade') ?
52
+ $parent
53
+ .one('bsTransitionEnd', removeElement)
54
+ .emulateTransitionEnd(150) :
55
+ removeElement()
56
+ }
57
+
58
+
59
+ // ALERT PLUGIN DEFINITION
60
+ // =======================
61
+
62
+ function Plugin(option) {
63
+ return this.each(function () {
64
+ var $this = $(this)
65
+ var data = $this.data('bs.alert')
66
+
67
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
68
+ if (typeof option == 'string') data[option].call($this)
69
+ })
70
+ }
71
+
72
+ var old = $.fn.alert
73
+
74
+ $.fn.alert = Plugin
75
+ $.fn.alert.Constructor = Alert
76
+
77
+
78
+ // ALERT NO CONFLICT
79
+ // =================
80
+
81
+ $.fn.alert.noConflict = function () {
82
+ $.fn.alert = old
83
+ return this
84
+ }
85
+
86
+
87
+ // ALERT DATA-API
88
+ // ==============
89
+
90
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
91
+
92
+ }(jQuery);
@@ -0,0 +1,110 @@
1
+ /* ========================================================================
2
+ * Bootstrap: button.js v3.2.0
3
+ * http://getbootstrap.com/javascript/#buttons
4
+ * ========================================================================
5
+ * Copyright 2011-2014 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+
10
+ +function ($) {
11
+ 'use strict';
12
+
13
+ // BUTTON PUBLIC CLASS DEFINITION
14
+ // ==============================
15
+
16
+ var Button = function (element, options) {
17
+ this.$element = $(element)
18
+ this.options = $.extend({}, Button.DEFAULTS, options)
19
+ this.isLoading = false
20
+ }
21
+
22
+ Button.VERSION = '3.2.0'
23
+
24
+ Button.DEFAULTS = {
25
+ loadingText: 'loading...'
26
+ }
27
+
28
+ Button.prototype.setState = function (state) {
29
+ var d = 'disabled'
30
+ var $el = this.$element
31
+ var val = $el.is('input') ? 'val' : 'html'
32
+ var data = $el.data()
33
+
34
+ state = state + 'Text'
35
+
36
+ if (data.resetText == null) $el.data('resetText', $el[val]())
37
+
38
+ $el[val](data[state] == null ? this.options[state] : data[state])
39
+
40
+ // push to event loop to allow forms to submit
41
+ setTimeout($.proxy(function () {
42
+ if (state == 'loadingText') {
43
+ this.isLoading = true
44
+ $el.addClass(d).attr(d, d)
45
+ } else if (this.isLoading) {
46
+ this.isLoading = false
47
+ $el.removeClass(d).removeAttr(d)
48
+ }
49
+ }, this), 0)
50
+ }
51
+
52
+ Button.prototype.toggle = function () {
53
+ var changed = true
54
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
55
+
56
+ if ($parent.length) {
57
+ var $input = this.$element.find('input')
58
+ if ($input.prop('type') == 'radio') {
59
+ if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
60
+ else $parent.find('.active').removeClass('active')
61
+ }
62
+ if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
63
+ }
64
+
65
+ if (changed) this.$element.toggleClass('active')
66
+ }
67
+
68
+
69
+ // BUTTON PLUGIN DEFINITION
70
+ // ========================
71
+
72
+ function Plugin(option) {
73
+ return this.each(function () {
74
+ var $this = $(this)
75
+ var data = $this.data('bs.button')
76
+ var options = typeof option == 'object' && option
77
+
78
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
79
+
80
+ if (option == 'toggle') data.toggle()
81
+ else if (option) data.setState(option)
82
+ })
83
+ }
84
+
85
+ var old = $.fn.button
86
+
87
+ $.fn.button = Plugin
88
+ $.fn.button.Constructor = Button
89
+
90
+
91
+ // BUTTON NO CONFLICT
92
+ // ==================
93
+
94
+ $.fn.button.noConflict = function () {
95
+ $.fn.button = old
96
+ return this
97
+ }
98
+
99
+
100
+ // BUTTON DATA-API
101
+ // ===============
102
+
103
+ $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
104
+ var $btn = $(e.target)
105
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
106
+ Plugin.call($btn, 'toggle')
107
+ e.preventDefault()
108
+ })
109
+
110
+ }(jQuery);