patternfly-sass 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (325) hide show
  1. checksums.yaml +4 -4
  2. data/.bowerrc +1 -1
  3. data/.gitignore +2 -4
  4. data/.travis.yml +6 -3
  5. data/README.md +187 -26
  6. data/Rakefile +21 -17
  7. data/assets/stylesheets/patternfly/_variables.scss +206 -206
  8. data/bower.json +11 -12
  9. data/lib/patternfly-sass/version.rb +2 -2
  10. data/patternfly-sass.gemspec +1 -1
  11. data/{tests → spec}/capture.js +0 -0
  12. data/spec/compare_spec.rb +15 -5
  13. data/{tests/patternfly → spec/html}/accordions.html +0 -0
  14. data/{tests/patternfly → spec/html}/alerts.html +0 -0
  15. data/{tests/patternfly → spec/html}/badges.html +0 -0
  16. data/{tests/patternfly → spec/html}/basic.html +0 -0
  17. data/{tests/patternfly → spec/html}/blank-slate.html +0 -0
  18. data/{tests/patternfly → spec/html}/bootstrap-combobox.html +0 -0
  19. data/{tests/patternfly → spec/html}/bootstrap-select.html +0 -0
  20. data/{tests/patternfly → spec/html}/bootstrap-treeview-2.html +0 -0
  21. data/{tests/patternfly → spec/html}/bootstrap-treeview.html +0 -0
  22. data/{tests/patternfly → spec/html}/breadcrumbs.html +0 -0
  23. data/{tests/patternfly → spec/html}/buttons.html +0 -0
  24. data/{tests/patternfly → spec/html}/code.html +0 -0
  25. data/{tests/patternfly → spec/html}/dashboard.html +0 -0
  26. data/{tests/patternfly → spec/html}/datatables-columns.html +0 -0
  27. data/{tests/patternfly → spec/html}/datatables.html +0 -0
  28. data/{tests/patternfly → spec/html}/dist/css/patternfly.css +0 -0
  29. data/{tests/patternfly → spec/html}/dist/css/patternfly.min.css +0 -0
  30. data/{tests/patternfly → spec/html}/dist/css/styles.css +0 -0
  31. data/{tests/patternfly → spec/html}/dist/css/styles.min.css +0 -0
  32. data/{tests/patternfly → spec/html}/dropdowns.html +0 -0
  33. data/{tests/patternfly → spec/html}/form.html +0 -0
  34. data/{tests/patternfly → spec/html}/forms.html +0 -0
  35. data/{tests/patternfly → spec/html}/icons.html +0 -0
  36. data/{tests/patternfly → spec/html}/img/dashboard-1.png +0 -0
  37. data/{tests/patternfly → spec/html}/img/dashboard-2.png +0 -0
  38. data/{tests/patternfly → spec/html}/img/dashboard-3.png +0 -0
  39. data/{tests/patternfly → spec/html}/img/dashboard-4.png +0 -0
  40. data/{tests/patternfly → spec/html}/index.html +0 -0
  41. data/{tests/patternfly → spec/html}/infotip.html +0 -0
  42. data/{tests/patternfly → spec/html}/labels.html +0 -0
  43. data/{tests/patternfly → spec/html}/list-group.html +0 -0
  44. data/{tests/patternfly → spec/html}/login.html +0 -0
  45. data/{tests/index.html → spec/html/main.html} +0 -0
  46. data/{tests/patternfly → spec/html}/modals.html +0 -0
  47. data/{tests/patternfly → spec/html}/navbar.html +0 -0
  48. data/{tests/patternfly → spec/html}/pagination.html +0 -0
  49. data/{tests/patternfly → spec/html}/panels.html +0 -0
  50. data/{tests/patternfly → spec/html}/popovers.html +0 -0
  51. data/{tests/patternfly → spec/html}/progress-bars.html +0 -0
  52. data/{tests/patternfly → spec/html}/search.html +0 -0
  53. data/{tests/patternfly → spec/html}/spinner.html +0 -0
  54. data/{tests/patternfly → spec/html}/tab.html +0 -0
  55. data/{tests/patternfly → spec/html}/tables.html +0 -0
  56. data/{tests/patternfly → spec/html}/tabs.html +0 -0
  57. data/{tests/patternfly → spec/html}/tests.css +0 -0
  58. data/{tests/patternfly → spec/html}/tooltip.html +0 -0
  59. data/{tests/patternfly → spec/html}/typography-2.css +0 -0
  60. data/{tests/patternfly → spec/html}/typography-2.html +0 -0
  61. data/{tests/patternfly → spec/html}/typography.html +0 -0
  62. data/tasks/converter.rb +6 -9
  63. metadata +103 -626
  64. data/package.json +0 -28
  65. data/tests/components/bootstrap-combobox/.bower.json +0 -14
  66. data/tests/components/bootstrap-combobox/.gitignore +0 -1
  67. data/tests/components/bootstrap-combobox/README.md +0 -59
  68. data/tests/components/bootstrap-combobox/css/bootstrap-combobox.css +0 -42
  69. data/tests/components/bootstrap-combobox/js/bootstrap-combobox.js +0 -438
  70. data/tests/components/bootstrap-combobox/js/tests/index.html +0 -29
  71. data/tests/components/bootstrap-combobox/js/tests/unit/bootstrap-combobox.js +0 -323
  72. data/tests/components/bootstrap-combobox/js/tests/vendor/jquery.js +0 -9597
  73. data/tests/components/bootstrap-combobox/js/tests/vendor/qunit.css +0 -244
  74. data/tests/components/bootstrap-combobox/js/tests/vendor/qunit.js +0 -2152
  75. data/tests/components/bootstrap-combobox/less/combobox.less +0 -55
  76. data/tests/components/bootstrap-select/.bower.json +0 -38
  77. data/tests/components/bootstrap-select/CONTRIBUTING.md +0 -87
  78. data/tests/components/bootstrap-select/README.md +0 -61
  79. data/tests/components/bootstrap-select/bootstrap-select.css +0 -309
  80. data/tests/components/bootstrap-select/bootstrap-select.jquery.json +0 -29
  81. data/tests/components/bootstrap-select/bootstrap-select.js +0 -972
  82. data/tests/components/bootstrap-select/bootstrap-select.min.css +0 -7
  83. data/tests/components/bootstrap-select/bootstrap-select.min.js +0 -8
  84. data/tests/components/bootstrap-select/bower.json +0 -29
  85. data/tests/components/bootstrap-select/composer.json +0 -17
  86. data/tests/components/bootstrap-select/i18n/defaults-cs-CZ.js +0 -29
  87. data/tests/components/bootstrap-select/i18n/defaults-cz-CZ.min.js +0 -6
  88. data/tests/components/bootstrap-select/i18n/defaults-de_DE.js +0 -29
  89. data/tests/components/bootstrap-select/i18n/defaults-de_DE.min.js +0 -6
  90. data/tests/components/bootstrap-select/i18n/defaults-es-CL.js +0 -29
  91. data/tests/components/bootstrap-select/i18n/defaults-es-CL.min.js +0 -6
  92. data/tests/components/bootstrap-select/i18n/defaults-eu.js +0 -30
  93. data/tests/components/bootstrap-select/i18n/defaults-eu.min.js +0 -6
  94. data/tests/components/bootstrap-select/i18n/defaults-it_IT.js +0 -32
  95. data/tests/components/bootstrap-select/i18n/defaults-it_IT.min.js +0 -1
  96. data/tests/components/bootstrap-select/i18n/defaults-nl_NL.js +0 -32
  97. data/tests/components/bootstrap-select/i18n/defaults-nl_NL.min.js +0 -7
  98. data/tests/components/bootstrap-select/i18n/defaults-pl_PL.js +0 -29
  99. data/tests/components/bootstrap-select/i18n/defaults-pl_PL.min.js +0 -6
  100. data/tests/components/bootstrap-select/i18n/defaults-pt_BR.js +0 -33
  101. data/tests/components/bootstrap-select/i18n/defaults-pt_BR.min.js +0 -7
  102. data/tests/components/bootstrap-select/i18n/defaults-ru-RU.js +0 -31
  103. data/tests/components/bootstrap-select/i18n/defaults-ru_RU.min.js +0 -6
  104. data/tests/components/bootstrap-select/i18n/defaults-zh_CN.js +0 -30
  105. data/tests/components/bootstrap-select/i18n/defaults-zh_CN.min.js +0 -6
  106. data/tests/components/bootstrap-select/package.json +0 -31
  107. data/tests/components/bootstrap-select/test.html +0 -62
  108. data/tests/components/bootstrap-treeview/.bower.json +0 -38
  109. data/tests/components/bootstrap-treeview/Gruntfile.js +0 -62
  110. data/tests/components/bootstrap-treeview/LICENSE +0 -202
  111. data/tests/components/bootstrap-treeview/README.md +0 -289
  112. data/tests/components/bootstrap-treeview/app.js +0 -29
  113. data/tests/components/bootstrap-treeview/bower.json +0 -29
  114. data/tests/components/bootstrap-treeview/dist/bootstrap-treeview.min.css +0 -1
  115. data/tests/components/bootstrap-treeview/dist/bootstrap-treeview.min.js +0 -1
  116. data/tests/components/bootstrap-treeview/package.json +0 -18
  117. data/tests/components/bootstrap-treeview/public/css/bootstrap-treeview.css +0 -37
  118. data/tests/components/bootstrap-treeview/public/example-dom.html +0 -59
  119. data/tests/components/bootstrap-treeview/public/index.html +0 -333
  120. data/tests/components/bootstrap-treeview/public/js/bootstrap-treeview.js +0 -455
  121. data/tests/components/bootstrap-treeview/screenshot/default.PNG +0 -0
  122. data/tests/components/bootstrap-treeview/src/css/bootstrap-treeview.css +0 -37
  123. data/tests/components/bootstrap-treeview/src/js/bootstrap-treeview.js +0 -455
  124. data/tests/components/datatables-colreorder/.bower.json +0 -22
  125. data/tests/components/datatables-colreorder/License.txt +0 -20
  126. data/tests/components/datatables-colreorder/Readme.md +0 -39
  127. data/tests/components/datatables-colreorder/bower.json +0 -12
  128. data/tests/components/datatables-colreorder/css/dataTables.colReorder.css +0 -14
  129. data/tests/components/datatables-colreorder/examples/alt_insert.xml +0 -30
  130. data/tests/components/datatables-colreorder/examples/col_filter.xml +0 -38
  131. data/tests/components/datatables-colreorder/examples/colvis.xml +0 -26
  132. data/tests/components/datatables-colreorder/examples/fixedcolumns.xml +0 -43
  133. data/tests/components/datatables-colreorder/examples/fixedheader.xml +0 -27
  134. data/tests/components/datatables-colreorder/examples/index.xml +0 -19
  135. data/tests/components/datatables-colreorder/examples/jqueryui.xml +0 -27
  136. data/tests/components/datatables-colreorder/examples/new_init.xml +0 -23
  137. data/tests/components/datatables-colreorder/examples/predefined.xml +0 -30
  138. data/tests/components/datatables-colreorder/examples/realtime.xml +0 -30
  139. data/tests/components/datatables-colreorder/examples/reset.xml +0 -41
  140. data/tests/components/datatables-colreorder/examples/scrolling.xml +0 -27
  141. data/tests/components/datatables-colreorder/examples/server_side.xml +0 -38
  142. data/tests/components/datatables-colreorder/examples/simple.xml +0 -25
  143. data/tests/components/datatables-colreorder/examples/state_save.xml +0 -26
  144. data/tests/components/datatables-colreorder/images/.DS_Store +0 -0
  145. data/tests/components/datatables-colreorder/images/insert.png +0 -0
  146. data/tests/components/datatables-colreorder/js/dataTables.colReorder.js +0 -1372
  147. data/tests/components/datatables-colreorder/make.sh +0 -31
  148. data/tests/components/datatables-colvis/.bower.json +0 -22
  149. data/tests/components/datatables-colvis/License.txt +0 -20
  150. data/tests/components/datatables-colvis/README.md +0 -38
  151. data/tests/components/datatables-colvis/bower.json +0 -12
  152. data/tests/components/datatables-colvis/css/dataTables.colVis.css +0 -185
  153. data/tests/components/datatables-colvis/css/dataTables.colvis.jqueryui.css +0 -41
  154. data/tests/components/datatables-colvis/examples/.DS_Store +0 -0
  155. data/tests/components/datatables-colvis/examples/button_order.xml +0 -26
  156. data/tests/components/datatables-colvis/examples/exclude_columns.xml +0 -28
  157. data/tests/components/datatables-colvis/examples/group_columns.xml +0 -40
  158. data/tests/components/datatables-colvis/examples/index.xml +0 -18
  159. data/tests/components/datatables-colvis/examples/jqueryui.xml +0 -28
  160. data/tests/components/datatables-colvis/examples/mouseover.xml +0 -28
  161. data/tests/components/datatables-colvis/examples/new_init.xml +0 -26
  162. data/tests/components/datatables-colvis/examples/restore.xml +0 -33
  163. data/tests/components/datatables-colvis/examples/simple.xml +0 -25
  164. data/tests/components/datatables-colvis/examples/text.xml +0 -29
  165. data/tests/components/datatables-colvis/examples/title_callback.xml +0 -30
  166. data/tests/components/datatables-colvis/examples/two_tables.xml +0 -24
  167. data/tests/components/datatables-colvis/examples/two_tables_identical.xml +0 -35
  168. data/tests/components/datatables-colvis/js/dataTables.colVis.js +0 -1123
  169. data/tests/components/datatables-colvis/make.sh +0 -28
  170. data/tests/components/datatables/.bower.json +0 -42
  171. data/tests/components/datatables/Contributing.md +0 -18
  172. data/tests/components/datatables/Readme.md +0 -53
  173. data/tests/components/datatables/bower.json +0 -32
  174. data/tests/components/datatables/license.txt +0 -20
  175. data/tests/components/datatables/media/css/jquery.dataTables.css +0 -455
  176. data/tests/components/datatables/media/css/jquery.dataTables.min.css +0 -1
  177. data/tests/components/datatables/media/css/jquery.dataTables_themeroller.css +0 -416
  178. data/tests/components/datatables/media/images/Sorting icons.psd +0 -0
  179. data/tests/components/datatables/media/images/favicon.ico +0 -0
  180. data/tests/components/datatables/media/images/sort_asc.png +0 -0
  181. data/tests/components/datatables/media/images/sort_asc_disabled.png +0 -0
  182. data/tests/components/datatables/media/images/sort_both.png +0 -0
  183. data/tests/components/datatables/media/images/sort_desc.png +0 -0
  184. data/tests/components/datatables/media/images/sort_desc_disabled.png +0 -0
  185. data/tests/components/datatables/media/js/jquery.dataTables.js +0 -14951
  186. data/tests/components/datatables/media/js/jquery.dataTables.min.js +0 -160
  187. data/tests/components/datatables/media/js/jquery.js +0 -5
  188. data/tests/components/google-code-prettify/.bower.json +0 -26
  189. data/tests/components/google-code-prettify/CHANGES.html +0 -172
  190. data/tests/components/google-code-prettify/COPYING +0 -191
  191. data/tests/components/google-code-prettify/README-zh-Hans.html +0 -143
  192. data/tests/components/google-code-prettify/README.html +0 -233
  193. data/tests/components/google-code-prettify/README.md +0 -54
  194. data/tests/components/google-code-prettify/bin/prettify.min.css +0 -1
  195. data/tests/components/google-code-prettify/bin/prettify.min.js +0 -30
  196. data/tests/components/google-code-prettify/bin/run_prettify.min.js +0 -34
  197. data/tests/components/google-code-prettify/bower.json +0 -16
  198. data/tests/components/google-code-prettify/examples/quine.html +0 -55
  199. data/tests/components/google-code-prettify/src/lang-apollo.js +0 -51
  200. data/tests/components/google-code-prettify/src/lang-basic.js +0 -32
  201. data/tests/components/google-code-prettify/src/lang-clj.js +0 -64
  202. data/tests/components/google-code-prettify/src/lang-css.js +0 -159
  203. data/tests/components/google-code-prettify/src/lang-dart.js +0 -88
  204. data/tests/components/google-code-prettify/src/lang-erlang.js +0 -92
  205. data/tests/components/google-code-prettify/src/lang-go.js +0 -58
  206. data/tests/components/google-code-prettify/src/lang-hs.js +0 -101
  207. data/tests/components/google-code-prettify/src/lang-lisp.js +0 -94
  208. data/tests/components/google-code-prettify/src/lang-llvm.js +0 -61
  209. data/tests/components/google-code-prettify/src/lang-lua.js +0 -59
  210. data/tests/components/google-code-prettify/src/lang-matlab.js +0 -180
  211. data/tests/components/google-code-prettify/src/lang-ml.js +0 -56
  212. data/tests/components/google-code-prettify/src/lang-mumps.js +0 -139
  213. data/tests/components/google-code-prettify/src/lang-n.js +0 -65
  214. data/tests/components/google-code-prettify/src/lang-pascal.js +0 -32
  215. data/tests/components/google-code-prettify/src/lang-proto.js +0 -35
  216. data/tests/components/google-code-prettify/src/lang-r.js +0 -57
  217. data/tests/components/google-code-prettify/src/lang-rd.js +0 -47
  218. data/tests/components/google-code-prettify/src/lang-scala.js +0 -54
  219. data/tests/components/google-code-prettify/src/lang-sql.js +0 -58
  220. data/tests/components/google-code-prettify/src/lang-tcl.js +0 -62
  221. data/tests/components/google-code-prettify/src/lang-tex.js +0 -46
  222. data/tests/components/google-code-prettify/src/lang-vb.js +0 -66
  223. data/tests/components/google-code-prettify/src/lang-vhdl.js +0 -34
  224. data/tests/components/google-code-prettify/src/lang-wiki.js +0 -53
  225. data/tests/components/google-code-prettify/src/lang-xq.js +0 -67
  226. data/tests/components/google-code-prettify/src/lang-yaml.js +0 -27
  227. data/tests/components/google-code-prettify/src/prettify.css +0 -52
  228. data/tests/components/google-code-prettify/src/prettify.js +0 -1655
  229. data/tests/components/google-code-prettify/src/run_prettify.js +0 -1905
  230. data/tests/components/google-code-prettify/styles/demo.html +0 -61
  231. data/tests/components/google-code-prettify/styles/desert.css +0 -34
  232. data/tests/components/google-code-prettify/styles/doxy.css +0 -64
  233. data/tests/components/google-code-prettify/styles/index.html +0 -89
  234. data/tests/components/google-code-prettify/styles/sons-of-obsidian.css +0 -118
  235. data/tests/components/google-code-prettify/styles/sunburst.css +0 -51
  236. data/tests/components/jquery/.bower.json +0 -38
  237. data/tests/components/jquery/MIT-LICENSE.txt +0 -21
  238. data/tests/components/jquery/bower.json +0 -28
  239. data/tests/components/jquery/dist/jquery.js +0 -9210
  240. data/tests/components/jquery/dist/jquery.min.js +0 -5
  241. data/tests/components/jquery/dist/jquery.min.map +0 -1
  242. data/tests/components/jquery/src/ajax.js +0 -786
  243. data/tests/components/jquery/src/ajax/jsonp.js +0 -89
  244. data/tests/components/jquery/src/ajax/load.js +0 -75
  245. data/tests/components/jquery/src/ajax/parseJSON.js +0 -13
  246. data/tests/components/jquery/src/ajax/parseXML.js +0 -28
  247. data/tests/components/jquery/src/ajax/script.js +0 -64
  248. data/tests/components/jquery/src/ajax/var/nonce.js +0 -5
  249. data/tests/components/jquery/src/ajax/var/rquery.js +0 -3
  250. data/tests/components/jquery/src/ajax/xhr.js +0 -136
  251. data/tests/components/jquery/src/attributes.js +0 -11
  252. data/tests/components/jquery/src/attributes/attr.js +0 -141
  253. data/tests/components/jquery/src/attributes/classes.js +0 -158
  254. data/tests/components/jquery/src/attributes/prop.js +0 -94
  255. data/tests/components/jquery/src/attributes/support.js +0 -35
  256. data/tests/components/jquery/src/attributes/val.js +0 -161
  257. data/tests/components/jquery/src/callbacks.js +0 -205
  258. data/tests/components/jquery/src/core.js +0 -502
  259. data/tests/components/jquery/src/core/access.js +0 -60
  260. data/tests/components/jquery/src/core/init.js +0 -123
  261. data/tests/components/jquery/src/core/parseHTML.js +0 -39
  262. data/tests/components/jquery/src/core/ready.js +0 -97
  263. data/tests/components/jquery/src/core/var/rsingleTag.js +0 -4
  264. data/tests/components/jquery/src/css.js +0 -450
  265. data/tests/components/jquery/src/css/addGetHookIf.js +0 -22
  266. data/tests/components/jquery/src/css/curCSS.js +0 -57
  267. data/tests/components/jquery/src/css/defaultDisplay.js +0 -70
  268. data/tests/components/jquery/src/css/hiddenVisibleSelectors.js +0 -15
  269. data/tests/components/jquery/src/css/support.js +0 -96
  270. data/tests/components/jquery/src/css/swap.js +0 -28
  271. data/tests/components/jquery/src/css/var/cssExpand.js +0 -3
  272. data/tests/components/jquery/src/css/var/getStyles.js +0 -12
  273. data/tests/components/jquery/src/css/var/isHidden.js +0 -13
  274. data/tests/components/jquery/src/css/var/rmargin.js +0 -3
  275. data/tests/components/jquery/src/css/var/rnumnonpx.js +0 -5
  276. data/tests/components/jquery/src/data.js +0 -178
  277. data/tests/components/jquery/src/data/Data.js +0 -181
  278. data/tests/components/jquery/src/data/accepts.js +0 -20
  279. data/tests/components/jquery/src/data/var/data_priv.js +0 -5
  280. data/tests/components/jquery/src/data/var/data_user.js +0 -5
  281. data/tests/components/jquery/src/deferred.js +0 -149
  282. data/tests/components/jquery/src/deprecated.js +0 -13
  283. data/tests/components/jquery/src/dimensions.js +0 -50
  284. data/tests/components/jquery/src/effects.js +0 -648
  285. data/tests/components/jquery/src/effects/Tween.js +0 -114
  286. data/tests/components/jquery/src/effects/animatedSelector.js +0 -13
  287. data/tests/components/jquery/src/event.js +0 -868
  288. data/tests/components/jquery/src/event/ajax.js +0 -13
  289. data/tests/components/jquery/src/event/alias.js +0 -39
  290. data/tests/components/jquery/src/event/support.js +0 -9
  291. data/tests/components/jquery/src/exports/amd.js +0 -24
  292. data/tests/components/jquery/src/exports/global.js +0 -32
  293. data/tests/components/jquery/src/intro.js +0 -44
  294. data/tests/components/jquery/src/jquery.js +0 -37
  295. data/tests/components/jquery/src/manipulation.js +0 -580
  296. data/tests/components/jquery/src/manipulation/_evalUrl.js +0 -18
  297. data/tests/components/jquery/src/manipulation/support.js +0 -32
  298. data/tests/components/jquery/src/manipulation/var/rcheckableType.js +0 -3
  299. data/tests/components/jquery/src/offset.js +0 -207
  300. data/tests/components/jquery/src/outro.js +0 -1
  301. data/tests/components/jquery/src/queue.js +0 -142
  302. data/tests/components/jquery/src/queue/delay.js +0 -22
  303. data/tests/components/jquery/src/selector-native.js +0 -172
  304. data/tests/components/jquery/src/selector-sizzle.js +0 -14
  305. data/tests/components/jquery/src/selector.js +0 -1
  306. data/tests/components/jquery/src/serialize.js +0 -111
  307. data/tests/components/jquery/src/sizzle/dist/sizzle.js +0 -2067
  308. data/tests/components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
  309. data/tests/components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
  310. data/tests/components/jquery/src/traversing.js +0 -199
  311. data/tests/components/jquery/src/traversing/findFilter.js +0 -100
  312. data/tests/components/jquery/src/traversing/var/rneedsContext.js +0 -6
  313. data/tests/components/jquery/src/var/arr.js +0 -3
  314. data/tests/components/jquery/src/var/class2type.js +0 -4
  315. data/tests/components/jquery/src/var/concat.js +0 -5
  316. data/tests/components/jquery/src/var/hasOwn.js +0 -5
  317. data/tests/components/jquery/src/var/indexOf.js +0 -5
  318. data/tests/components/jquery/src/var/pnum.js +0 -3
  319. data/tests/components/jquery/src/var/push.js +0 -5
  320. data/tests/components/jquery/src/var/rnotwhite.js +0 -3
  321. data/tests/components/jquery/src/var/slice.js +0 -5
  322. data/tests/components/jquery/src/var/strundefined.js +0 -3
  323. data/tests/components/jquery/src/var/support.js +0 -4
  324. data/tests/components/jquery/src/var/toString.js +0 -5
  325. data/tests/components/jquery/src/wrap.js +0 -79
@@ -1,29 +0,0 @@
1
- {
2
- "name": "bootstrap-select",
3
- "title": "Bootstrap Select",
4
- "description": "A custom select / multiselect for Bootstrap using button dropdown, designed to behave like regular Bootstrap selects",
5
- "keywords": [
6
- "form",
7
- "bootstrap",
8
- "select",
9
- "replacement"
10
- ],
11
- "version": "1.5.4",
12
- "author": {
13
- "name": "Silvio Moreto",
14
- "url": "https://github.com/silviomoreto/"
15
- },
16
- "licenses": [
17
- {
18
- "type": "MIT",
19
- "url": "https://github.com/silviomoreto/bootstrap-select#copyright-and-license"
20
- }
21
- ],
22
- "bugs": "https://github.com/silviomoreto/bootstrap-select/issues",
23
- "homepage": "https://github.com/silviomoreto/bootstrap-select",
24
- "docs": "https://github.com/silviomoreto/bootstrap-select",
25
- "download": "https://github.com/silviomoreto/bootstrap-select/releases",
26
- "dependencies": {
27
- "jquery": ">=1.7"
28
- }
29
- }
@@ -1,972 +0,0 @@
1
- /*!
2
- * bootstrap-select v1.5.4
3
- * http://silviomoreto.github.io/bootstrap-select/
4
- *
5
- * Copyright 2013 bootstrap-select
6
- * Licensed under the MIT license
7
- */
8
-
9
- !function($) {
10
-
11
- 'use strict';
12
-
13
- $.expr[':'].icontains = function(obj, index, meta) {
14
- return $(obj).text().toUpperCase().indexOf(meta[3].toUpperCase()) >= 0;
15
- };
16
-
17
- var Selectpicker = function(element, options, e) {
18
- if (e) {
19
- e.stopPropagation();
20
- e.preventDefault();
21
- }
22
- this.$element = $(element);
23
- this.$newElement = null;
24
- this.$button = null;
25
- this.$menu = null;
26
- this.$lis = null;
27
-
28
- //Merge defaults, options and data-attributes to make our options
29
- this.options = $.extend({}, $.fn.selectpicker.defaults, this.$element.data(), typeof options == 'object' && options);
30
-
31
- //If we have no title yet, check the attribute 'title' (this is missed by jq as its not a data-attribute
32
- if (this.options.title === null) {
33
- this.options.title = this.$element.attr('title');
34
- }
35
-
36
- //Expose public methods
37
- this.val = Selectpicker.prototype.val;
38
- this.render = Selectpicker.prototype.render;
39
- this.refresh = Selectpicker.prototype.refresh;
40
- this.setStyle = Selectpicker.prototype.setStyle;
41
- this.selectAll = Selectpicker.prototype.selectAll;
42
- this.deselectAll = Selectpicker.prototype.deselectAll;
43
- this.init();
44
- };
45
-
46
- Selectpicker.prototype = {
47
-
48
- constructor: Selectpicker,
49
-
50
- init: function() {
51
- var that = this,
52
- id = this.$element.attr('id');
53
-
54
- this.$element.hide();
55
- this.multiple = this.$element.prop('multiple');
56
- this.autofocus = this.$element.prop('autofocus');
57
- this.$newElement = this.createView();
58
- this.$element.after(this.$newElement);
59
- this.$menu = this.$newElement.find('> .dropdown-menu');
60
- this.$button = this.$newElement.find('> button');
61
- this.$searchbox = this.$newElement.find('input');
62
-
63
- if (id !== undefined) {
64
- this.$button.attr('data-id', id);
65
- $('label[for="' + id + '"]').click(function(e) {
66
- e.preventDefault();
67
- that.$button.focus();
68
- });
69
- }
70
-
71
- this.checkDisabled();
72
- this.clickListener();
73
- if (this.options.liveSearch) this.liveSearchListener();
74
- this.render();
75
- this.liHeight();
76
- this.setStyle();
77
- this.setWidth();
78
- if (this.options.container) this.selectPosition();
79
- this.$menu.data('this', this);
80
- this.$newElement.data('this', this);
81
- },
82
-
83
- createDropdown: function() {
84
- //If we are multiple, then add the show-tick class by default
85
- var multiple = this.multiple ? ' show-tick' : '';
86
- var inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '';
87
- var autofocus = this.autofocus ? ' autofocus' : '';
88
- var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + '</div>' : '';
89
- var searchbox = this.options.liveSearch ? '<div class="bootstrap-select-searchbox"><input type="text" class="input-block-level form-control" autocomplete="off" /></div>' : '';
90
- var actionsbox = this.options.actionsBox ? '<div class="bs-actionsbox">' +
91
- '<div class="btn-group btn-block">' +
92
- '<button class="actions-btn bs-select-all btn btn-sm btn-default">' +
93
- 'Select All' +
94
- '</button>' +
95
- '<button class="actions-btn bs-deselect-all btn btn-sm btn-default">' +
96
- 'Deselect All' +
97
- '</button>' +
98
- '</div>' +
99
- '</div>' : '';
100
- var drop =
101
- '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
102
- '<button type="button" class="btn dropdown-toggle selectpicker" data-toggle="dropdown"'+ autofocus +'>' +
103
- '<span class="filter-option pull-left"></span>&nbsp;' +
104
- '<span class="caret"></span>' +
105
- '</button>' +
106
- '<div class="dropdown-menu open">' +
107
- header +
108
- searchbox +
109
- actionsbox +
110
- '<ul class="dropdown-menu inner selectpicker" role="menu">' +
111
- '</ul>' +
112
- '</div>' +
113
- '</div>';
114
-
115
- return $(drop);
116
- },
117
-
118
- createView: function() {
119
- var $drop = this.createDropdown();
120
- var $li = this.createLi();
121
- $drop.find('ul').append($li);
122
- return $drop;
123
- },
124
-
125
- reloadLi: function() {
126
- //Remove all children.
127
- this.destroyLi();
128
- //Re build
129
- var $li = this.createLi();
130
- this.$menu.find('ul').append( $li );
131
- },
132
-
133
- destroyLi: function() {
134
- this.$menu.find('li').remove();
135
- },
136
-
137
- createLi: function() {
138
- var that = this,
139
- _liA = [],
140
- _liHtml = '';
141
-
142
- this.$element.find('option').each(function() {
143
- var $this = $(this);
144
-
145
- //Get the class and text for the option
146
- var optionClass = $this.attr('class') || '';
147
- var inline = $this.attr('style') || '';
148
- var text = $this.data('content') ? $this.data('content') : $this.html();
149
- var subtext = $this.data('subtext') !== undefined ? '<small class="muted text-muted">' + $this.data('subtext') + '</small>' : '';
150
- var icon = $this.data('icon') !== undefined ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '';
151
- if (icon !== '' && ($this.is(':disabled') || $this.parent().is(':disabled'))) {
152
- icon = '<span>'+icon+'</span>';
153
- }
154
-
155
- if (!$this.data('content')) {
156
- //Prepend any icon and append any subtext to the main text.
157
- text = icon + '<span class="text">' + text + subtext + '</span>';
158
- }
159
-
160
- if (that.options.hideDisabled && ($this.is(':disabled') || $this.parent().is(':disabled'))) {
161
- _liA.push('<a style="min-height: 0; padding: 0"></a>');
162
- } else if ($this.parent().is('optgroup') && $this.data('divider') !== true) {
163
- if ($this.index() === 0) {
164
- //Get the opt group label
165
- var label = $this.parent().attr('label');
166
- var labelSubtext = $this.parent().data('subtext') !== undefined ? '<small class="muted text-muted">'+$this.parent().data('subtext')+'</small>' : '';
167
- var labelIcon = $this.parent().data('icon') ? '<i class="'+$this.parent().data('icon')+'"></i> ' : '';
168
- label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
169
-
170
- if ($this[0].index !== 0) {
171
- _liA.push(
172
- '<div class="div-contain"><div class="divider"></div></div>'+
173
- '<dt>'+label+'</dt>'+
174
- that.createA(text, 'opt ' + optionClass, inline )
175
- );
176
- } else {
177
- _liA.push(
178
- '<dt>'+label+'</dt>'+
179
- that.createA(text, 'opt ' + optionClass, inline ));
180
- }
181
- } else {
182
- _liA.push(that.createA(text, 'opt ' + optionClass, inline ));
183
- }
184
- } else if ($this.data('divider') === true) {
185
- _liA.push('<div class="div-contain"><div class="divider"></div></div>');
186
- } else if ($(this).data('hidden') === true) {
187
- _liA.push('<a></a>');
188
- } else {
189
- _liA.push(that.createA(text, optionClass, inline ));
190
- }
191
- });
192
-
193
- $.each(_liA, function(i, item) {
194
- var hide = item === '<a></a>' ? 'class="hide is-hidden"' : '';
195
- _liHtml += '<li rel="' + i + '"' + hide + '>' + item + '</li>';
196
- });
197
-
198
- //If we are not multiple, and we dont have a selected item, and we dont have a title, select the first element so something is set in the button
199
- if (!this.multiple && this.$element.find('option:selected').length===0 && !this.options.title) {
200
- this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
201
- }
202
-
203
- return $(_liHtml);
204
- },
205
-
206
- createA: function(text, classes, inline) {
207
- return '<a tabindex="0" class="'+classes+'" style="'+inline+'">' +
208
- text +
209
- '<i class="' + this.options.iconBase + ' ' + this.options.tickIcon + ' icon-ok check-mark"></i>' +
210
- '</a>';
211
- },
212
-
213
- render: function(updateLi) {
214
- var that = this;
215
-
216
- //Update the LI to match the SELECT
217
- if (updateLi !== false) {
218
- this.$element.find('option').each(function(index) {
219
- that.setDisabled(index, $(this).is(':disabled') || $(this).parent().is(':disabled') );
220
- that.setSelected(index, $(this).is(':selected') );
221
- });
222
- }
223
-
224
- this.tabIndex();
225
-
226
- var selectedItems = this.$element.find('option:selected').map(function() {
227
- var $this = $(this);
228
- var icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '';
229
- var subtext;
230
- if (that.options.showSubtext && $this.attr('data-subtext') && !that.multiple) {
231
- subtext = ' <small class="muted text-muted">'+$this.data('subtext') +'</small>';
232
- } else {
233
- subtext = '';
234
- }
235
- if ($this.data('content') && that.options.showContent) {
236
- return $this.data('content');
237
- } else if ($this.attr('title') !== undefined) {
238
- return $this.attr('title');
239
- } else {
240
- return icon + $this.html() + subtext;
241
- }
242
- }).toArray();
243
-
244
- //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
245
- //Convert all the values into a comma delimited string
246
- var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
247
-
248
- //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
249
- if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
250
- var max = this.options.selectedTextFormat.split('>');
251
- var notDisabled = this.options.hideDisabled ? ':not([disabled])' : '';
252
- if ( (max.length>1 && selectedItems.length > max[1]) || (max.length==1 && selectedItems.length>=2)) {
253
- title = this.options.countSelectedText.replace('{0}', selectedItems.length).replace('{1}', this.$element.find('option:not([data-divider="true"]):not([data-hidden="true"])'+notDisabled).length);
254
- }
255
- }
256
-
257
- this.options.title = this.$element.attr('title');
258
-
259
- //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
260
- if (!title) {
261
- title = this.options.title !== undefined ? this.options.title : this.options.noneSelectedText;
262
- }
263
-
264
- this.$button.attr('title', $.trim(title));
265
- this.$newElement.find('.filter-option').html(title);
266
- },
267
-
268
- setStyle: function(style, status) {
269
- if (this.$element.attr('class')) {
270
- this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|validate\[.*\]/gi, ''));
271
- }
272
-
273
- var buttonClass = style ? style : this.options.style;
274
-
275
- if (status == 'add') {
276
- this.$button.addClass(buttonClass);
277
- } else if (status == 'remove') {
278
- this.$button.removeClass(buttonClass);
279
- } else {
280
- this.$button.removeClass(this.options.style);
281
- this.$button.addClass(buttonClass);
282
- }
283
- },
284
-
285
- liHeight: function() {
286
- if (this.options.size === false) return;
287
-
288
- var $selectClone = this.$menu.parent().clone().find('> .dropdown-toggle').prop('autofocus', false).end().appendTo('body'),
289
- $menuClone = $selectClone.addClass('open').find('> .dropdown-menu'),
290
- liHeight = $menuClone.find('li > a').outerHeight(),
291
- headerHeight = this.options.header ? $menuClone.find('.popover-title').outerHeight() : 0,
292
- searchHeight = this.options.liveSearch ? $menuClone.find('.bootstrap-select-searchbox').outerHeight() : 0,
293
- actionsHeight = this.options.actionsBox ? $menuClone.find('.bs-actionsbox').outerHeight() : 0;
294
-
295
- $selectClone.remove();
296
-
297
- this.$newElement
298
- .data('liHeight', liHeight)
299
- .data('headerHeight', headerHeight)
300
- .data('searchHeight', searchHeight)
301
- .data('actionsHeight', actionsHeight);
302
- },
303
-
304
- setSize: function() {
305
- var that = this,
306
- menu = this.$menu,
307
- menuInner = menu.find('.inner'),
308
- selectHeight = this.$newElement.outerHeight(),
309
- liHeight = this.$newElement.data('liHeight'),
310
- headerHeight = this.$newElement.data('headerHeight'),
311
- searchHeight = this.$newElement.data('searchHeight'),
312
- actionsHeight = this.$newElement.data('actionsHeight'),
313
- divHeight = menu.find('li .divider').outerHeight(true),
314
- menuPadding = parseInt(menu.css('padding-top')) +
315
- parseInt(menu.css('padding-bottom')) +
316
- parseInt(menu.css('border-top-width')) +
317
- parseInt(menu.css('border-bottom-width')),
318
- notDisabled = this.options.hideDisabled ? ':not(.disabled)' : '',
319
- $window = $(window),
320
- menuExtras = menuPadding + parseInt(menu.css('margin-top')) + parseInt(menu.css('margin-bottom')) + 2,
321
- menuHeight,
322
- selectOffsetTop,
323
- selectOffsetBot,
324
- posVert = function() {
325
- selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
326
- selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
327
- };
328
- posVert();
329
- if (this.options.header) menu.css('padding-top', 0);
330
-
331
- if (this.options.size == 'auto') {
332
- var getSize = function() {
333
- var minHeight,
334
- lisVis = that.$lis.not('.hide');
335
-
336
- posVert();
337
- menuHeight = selectOffsetBot - menuExtras;
338
-
339
- if (that.options.dropupAuto) {
340
- that.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && ((menuHeight - menuExtras) < menu.height()));
341
- }
342
- if (that.$newElement.hasClass('dropup')) {
343
- menuHeight = selectOffsetTop - menuExtras;
344
- }
345
-
346
- if ((lisVis.length + lisVis.find('dt').length) > 3) {
347
- minHeight = liHeight*3 + menuExtras - 2;
348
- } else {
349
- minHeight = 0;
350
- }
351
-
352
- menu.css({'max-height' : menuHeight + 'px', 'overflow' : 'hidden', 'min-height' : minHeight + headerHeight + searchHeight + actionsHeight + 'px'});
353
- menuInner.css({'max-height' : menuHeight - headerHeight - searchHeight - actionsHeight - menuPadding + 'px', 'overflow-y' : 'auto', 'min-height' : Math.max(minHeight - menuPadding, 0) + 'px'});
354
- };
355
- getSize();
356
- this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
357
- $(window).off('resize.getSize').on('resize.getSize', getSize);
358
- $(window).off('scroll.getSize').on('scroll.getSize', getSize);
359
- } else if (this.options.size && this.options.size != 'auto' && menu.find('li'+notDisabled).length > this.options.size) {
360
- var optIndex = menu.find('li'+notDisabled+' > *').filter(':not(.div-contain)').slice(0,this.options.size).last().parent().index();
361
- var divLength = menu.find('li').slice(0,optIndex + 1).find('.div-contain').length;
362
- menuHeight = liHeight*this.options.size + divLength*divHeight + menuPadding;
363
- if (that.options.dropupAuto) {
364
- this.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && (menuHeight < menu.height()));
365
- }
366
- menu.css({'max-height' : menuHeight + headerHeight + searchHeight + actionsHeight + 'px', 'overflow' : 'hidden'});
367
- menuInner.css({'max-height' : menuHeight - menuPadding + 'px', 'overflow-y' : 'auto'});
368
- }
369
- },
370
-
371
- setWidth: function() {
372
- if (this.options.width == 'auto') {
373
- this.$menu.css('min-width', '0');
374
-
375
- // Get correct width if element hidden
376
- var selectClone = this.$newElement.clone().appendTo('body');
377
- var ulWidth = selectClone.find('> .dropdown-menu').css('width');
378
- var btnWidth = selectClone.css('width', 'auto').find('> button').css('width');
379
- selectClone.remove();
380
-
381
- // Set width to whatever's larger, button title or longest option
382
- this.$newElement.css('width', Math.max(parseInt(ulWidth), parseInt(btnWidth)) + 'px');
383
- } else if (this.options.width == 'fit') {
384
- // Remove inline min-width so width can be changed from 'auto'
385
- this.$menu.css('min-width', '');
386
- this.$newElement.css('width', '').addClass('fit-width');
387
- } else if (this.options.width) {
388
- // Remove inline min-width so width can be changed from 'auto'
389
- this.$menu.css('min-width', '');
390
- this.$newElement.css('width', this.options.width);
391
- } else {
392
- // Remove inline min-width/width so width can be changed
393
- this.$menu.css('min-width', '');
394
- this.$newElement.css('width', '');
395
- }
396
- // Remove fit-width class if width is changed programmatically
397
- if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
398
- this.$newElement.removeClass('fit-width');
399
- }
400
- },
401
-
402
- selectPosition: function() {
403
- var that = this,
404
- drop = '<div />',
405
- $drop = $(drop),
406
- pos,
407
- actualHeight,
408
- getPlacement = function($element) {
409
- $drop.addClass($element.attr('class').replace(/form-control/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
410
- pos = $element.offset();
411
- actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
412
- $drop.css({'top' : pos.top + actualHeight, 'left' : pos.left, 'width' : $element[0].offsetWidth, 'position' : 'absolute'});
413
- };
414
- this.$newElement.on('click', function() {
415
- if (that.isDisabled()) {
416
- return;
417
- }
418
- getPlacement($(this));
419
- $drop.appendTo(that.options.container);
420
- $drop.toggleClass('open', !$(this).hasClass('open'));
421
- $drop.append(that.$menu);
422
- });
423
- $(window).resize(function() {
424
- getPlacement(that.$newElement);
425
- });
426
- $(window).on('scroll', function() {
427
- getPlacement(that.$newElement);
428
- });
429
- $('html').on('click', function(e) {
430
- if ($(e.target).closest(that.$newElement).length < 1) {
431
- $drop.removeClass('open');
432
- }
433
- });
434
- },
435
-
436
- mobile: function() {
437
- this.$element.addClass('mobile-device').appendTo(this.$newElement);
438
- if (this.options.container) this.$menu.hide();
439
- },
440
-
441
- refresh: function() {
442
- this.$lis = null;
443
- this.reloadLi();
444
- this.render();
445
- this.setWidth();
446
- this.setStyle();
447
- this.checkDisabled();
448
- this.liHeight();
449
- },
450
-
451
- update: function() {
452
- this.reloadLi();
453
- this.setWidth();
454
- this.setStyle();
455
- this.checkDisabled();
456
- this.liHeight();
457
- },
458
-
459
- setSelected: function(index, selected) {
460
- if (this.$lis == null) this.$lis = this.$menu.find('li');
461
- $(this.$lis[index]).toggleClass('selected', selected);
462
- },
463
-
464
- setDisabled: function(index, disabled) {
465
- if (this.$lis == null) this.$lis = this.$menu.find('li');
466
- if (disabled) {
467
- $(this.$lis[index]).addClass('disabled').find('a').attr('href', '#').attr('tabindex', -1);
468
- } else {
469
- $(this.$lis[index]).removeClass('disabled').find('a').removeAttr('href').attr('tabindex', 0);
470
- }
471
- },
472
-
473
- isDisabled: function() {
474
- return this.$element.is(':disabled');
475
- },
476
-
477
- checkDisabled: function() {
478
- var that = this;
479
-
480
- if (this.isDisabled()) {
481
- this.$button.addClass('disabled').attr('tabindex', -1);
482
- } else {
483
- if (this.$button.hasClass('disabled')) {
484
- this.$button.removeClass('disabled');
485
- }
486
-
487
- if (this.$button.attr('tabindex') == -1) {
488
- if (!this.$element.data('tabindex')) this.$button.removeAttr('tabindex');
489
- }
490
- }
491
-
492
- this.$button.click(function() {
493
- return !that.isDisabled();
494
- });
495
- },
496
-
497
- tabIndex: function() {
498
- if (this.$element.is('[tabindex]')) {
499
- this.$element.data('tabindex', this.$element.attr('tabindex'));
500
- this.$button.attr('tabindex', this.$element.data('tabindex'));
501
- }
502
- },
503
-
504
- clickListener: function() {
505
- var that = this;
506
-
507
- $('body').on('touchstart.dropdown', '.dropdown-menu', function(e) {
508
- e.stopPropagation();
509
- });
510
-
511
- this.$newElement.on('click', function() {
512
- that.setSize();
513
- if (!that.options.liveSearch && !that.multiple) {
514
- setTimeout(function() {
515
- that.$menu.find('.selected a').focus();
516
- }, 10);
517
- }
518
- });
519
-
520
- this.$menu.on('click', 'li a', function(e) {
521
- var clickedIndex = $(this).parent().index(),
522
- prevValue = that.$element.val(),
523
- prevIndex = that.$element.prop('selectedIndex');
524
-
525
- //Dont close on multi choice menu
526
- if (that.multiple) {
527
- e.stopPropagation();
528
- }
529
-
530
- e.preventDefault();
531
-
532
- //Dont run if we have been disabled
533
- if (!that.isDisabled() && !$(this).parent().hasClass('disabled')) {
534
- var $options = that.$element.find('option'),
535
- $option = $options.eq(clickedIndex),
536
- state = $option.prop('selected'),
537
- $optgroup = $option.parent('optgroup'),
538
- maxOptions = that.options.maxOptions,
539
- maxOptionsGrp = $optgroup.data('maxOptions') || false;
540
-
541
- //Deselect all others if not multi select box
542
- if (!that.multiple) {
543
- $options.prop('selected', false);
544
- $option.prop('selected', true);
545
- that.$menu.find('.selected').removeClass('selected');
546
- that.setSelected(clickedIndex, true);
547
- }
548
- //Else toggle the one we have chosen if we are multi select.
549
- else {
550
- $option.prop('selected', !state);
551
- that.setSelected(clickedIndex, !state);
552
-
553
- if ((maxOptions !== false) || (maxOptionsGrp !== false)) {
554
- var maxReached = maxOptions < $options.filter(':selected').length,
555
- maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length,
556
- maxOptionsArr = that.options.maxOptionsText,
557
- maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
558
- maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
559
- $notify = $('<div class="notify"></div>');
560
-
561
- if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
562
- // If {var} is set in array, replace it
563
- if (maxOptionsArr[2]) {
564
- maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
565
- maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
566
- }
567
-
568
- $option.prop('selected', false);
569
-
570
- that.$menu.append($notify);
571
-
572
- if (maxOptions && maxReached) {
573
- $notify.append($('<div>' + maxTxt + '</div>'));
574
- that.$element.trigger('maxReached.bs.select');
575
- }
576
-
577
- if (maxOptionsGrp && maxReachedGrp) {
578
- $notify.append($('<div>' + maxTxtGrp + '</div>'));
579
- that.$element.trigger('maxReachedGrp.bs.select');
580
- }
581
-
582
- setTimeout(function() {
583
- that.setSelected(clickedIndex, false);
584
- }, 10);
585
-
586
- $notify.delay(750).fadeOut(300, function() { $(this).remove(); });
587
- }
588
- }
589
- }
590
-
591
- if (!that.multiple) {
592
- that.$button.focus();
593
- } else if (that.options.liveSearch) {
594
- that.$searchbox.focus();
595
- }
596
-
597
- // Trigger select 'change'
598
- if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
599
- that.$element.change();
600
- }
601
- }
602
- });
603
-
604
- this.$menu.on('click', 'li.disabled a, li dt, li .div-contain, .popover-title, .popover-title :not(.close)', function(e) {
605
- if (e.target == this) {
606
- e.preventDefault();
607
- e.stopPropagation();
608
- if (!that.options.liveSearch) {
609
- that.$button.focus();
610
- } else {
611
- that.$searchbox.focus();
612
- }
613
- }
614
- });
615
-
616
- this.$menu.on('click', '.popover-title .close', function() {
617
- that.$button.focus();
618
- });
619
-
620
- this.$searchbox.on('click', function(e) {
621
- e.stopPropagation();
622
- });
623
-
624
-
625
- this.$menu.on('click', '.actions-btn', function(e) {
626
- if (that.options.liveSearch) {
627
- that.$searchbox.focus();
628
- } else {
629
- that.$button.focus();
630
- }
631
-
632
- e.preventDefault();
633
- e.stopPropagation();
634
-
635
- if ($(this).is('.bs-select-all')) {
636
- that.selectAll();
637
- } else {
638
- that.deselectAll();
639
- }
640
- that.$element.change();
641
- });
642
-
643
- this.$element.change(function() {
644
- that.render(false);
645
- });
646
- },
647
-
648
- liveSearchListener: function() {
649
- var that = this,
650
- no_results = $('<li class="no-results"></li>');
651
-
652
- this.$newElement.on('click.dropdown.data-api', function() {
653
- that.$menu.find('.active').removeClass('active');
654
- if (!!that.$searchbox.val()) {
655
- that.$searchbox.val('');
656
- that.$lis.not('.is-hidden').removeClass('hide');
657
- if (!!no_results.parent().length) no_results.remove();
658
- }
659
- if (!that.multiple) that.$menu.find('.selected').addClass('active');
660
- setTimeout(function() {
661
- that.$searchbox.focus();
662
- }, 10);
663
- });
664
-
665
- this.$searchbox.on('input propertychange', function() {
666
- if (that.$searchbox.val()) {
667
- that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':icontains(' + that.$searchbox.val() + ')').parent().addClass('hide');
668
-
669
- if (!that.$menu.find('li').filter(':visible:not(.no-results)').length) {
670
- if (!!no_results.parent().length) no_results.remove();
671
- no_results.html(that.options.noneResultsText + ' "'+ that.$searchbox.val() + '"').show();
672
- that.$menu.find('li').last().after(no_results);
673
- } else if (!!no_results.parent().length) {
674
- no_results.remove();
675
- }
676
-
677
- } else {
678
- that.$lis.not('.is-hidden').removeClass('hide');
679
- if (!!no_results.parent().length) no_results.remove();
680
- }
681
-
682
- that.$menu.find('li.active').removeClass('active');
683
- that.$menu.find('li').filter(':visible:not(.divider)').eq(0).addClass('active').find('a').focus();
684
- $(this).focus();
685
- });
686
-
687
- this.$menu.on('mouseenter', 'a', function(e) {
688
- that.$menu.find('.active').removeClass('active');
689
- $(e.currentTarget).parent().not('.disabled').addClass('active');
690
- });
691
-
692
- this.$menu.on('mouseleave', 'a', function() {
693
- that.$menu.find('.active').removeClass('active');
694
- });
695
- },
696
-
697
- val: function(value) {
698
-
699
- if (value !== undefined) {
700
- this.$element.val( value );
701
-
702
- this.$element.change();
703
- return this.$element;
704
- } else {
705
- return this.$element.val();
706
- }
707
- },
708
-
709
- selectAll: function() {
710
- if (this.$lis == null) this.$lis = this.$menu.find('li');
711
- this.$element.find('option:enabled').prop('selected', true);
712
- $(this.$lis).filter(':not(.disabled)').addClass('selected');
713
- this.render(false);
714
- },
715
-
716
- deselectAll: function() {
717
- if (this.$lis == null) this.$lis = this.$menu.find('li');
718
- this.$element.find('option:enabled').prop('selected', false);
719
- $(this.$lis).filter(':not(.disabled)').removeClass('selected');
720
- this.render(false);
721
- },
722
-
723
- keydown: function(e) {
724
- var $this,
725
- $items,
726
- $parent,
727
- index,
728
- next,
729
- first,
730
- last,
731
- prev,
732
- nextPrev,
733
- that,
734
- prevIndex,
735
- isActive,
736
- keyCodeMap = {
737
- 32:' ', 48:'0', 49:'1', 50:'2', 51:'3', 52:'4', 53:'5', 54:'6', 55:'7', 56:'8', 57:'9', 59:';',
738
- 65:'a', 66:'b', 67:'c', 68:'d', 69:'e', 70:'f', 71:'g', 72:'h', 73:'i', 74:'j', 75:'k', 76:'l',
739
- 77:'m', 78:'n', 79:'o', 80:'p', 81:'q', 82:'r', 83:'s', 84:'t', 85:'u', 86:'v', 87:'w', 88:'x',
740
- 89:'y', 90:'z', 96:'0', 97:'1', 98:'2', 99:'3', 100:'4', 101:'5', 102:'6', 103:'7', 104:'8', 105:'9'
741
- };
742
-
743
- $this = $(this);
744
-
745
- $parent = $this.parent();
746
-
747
- if ($this.is('input')) $parent = $this.parent().parent();
748
-
749
- that = $parent.data('this');
750
-
751
- if (that.options.liveSearch) $parent = $this.parent().parent();
752
-
753
- if (that.options.container) $parent = that.$menu;
754
-
755
- $items = $('[role=menu] li:not(.divider) a', $parent);
756
-
757
- isActive = that.$menu.parent().hasClass('open');
758
-
759
- if (!isActive && /([0-9]|[A-z])/.test(String.fromCharCode(e.keyCode))) {
760
- if (!that.options.container) {
761
- that.setSize();
762
- that.$menu.parent().addClass('open');
763
- isActive = that.$menu.parent().hasClass('open');
764
- } else {
765
- that.$newElement.trigger('click');
766
- }
767
- that.$searchbox.focus();
768
- }
769
-
770
- if (that.options.liveSearch) {
771
- if (/(^9$|27)/.test(e.keyCode) && isActive && that.$menu.find('.active').length === 0) {
772
- e.preventDefault();
773
- that.$menu.parent().removeClass('open');
774
- that.$button.focus();
775
- }
776
- $items = $('[role=menu] li:not(.divider):visible', $parent);
777
- if (!$this.val() && !/(38|40)/.test(e.keyCode)) {
778
- if ($items.filter('.active').length === 0) {
779
- $items = that.$newElement.find('li').filter(':icontains(' + keyCodeMap[e.keyCode] + ')');
780
- }
781
- }
782
- }
783
-
784
- if (!$items.length) return;
785
-
786
- if (/(38|40)/.test(e.keyCode)) {
787
-
788
- index = $items.index($items.filter(':focus'));
789
- first = $items.parent(':not(.disabled):visible').first().index();
790
- last = $items.parent(':not(.disabled):visible').last().index();
791
- next = $items.eq(index).parent().nextAll(':not(.disabled):visible').eq(0).index();
792
- prev = $items.eq(index).parent().prevAll(':not(.disabled):visible').eq(0).index();
793
- nextPrev = $items.eq(next).parent().prevAll(':not(.disabled):visible').eq(0).index();
794
-
795
- if (that.options.liveSearch) {
796
- $items.each(function(i) {
797
- if ($(this).is(':not(.disabled)')) {
798
- $(this).data('index', i);
799
- }
800
- });
801
- index = $items.index($items.filter('.active'));
802
- first = $items.filter(':not(.disabled):visible').first().data('index');
803
- last = $items.filter(':not(.disabled):visible').last().data('index');
804
- next = $items.eq(index).nextAll(':not(.disabled):visible').eq(0).data('index');
805
- prev = $items.eq(index).prevAll(':not(.disabled):visible').eq(0).data('index');
806
- nextPrev = $items.eq(next).prevAll(':not(.disabled):visible').eq(0).data('index');
807
- }
808
-
809
- prevIndex = $this.data('prevIndex');
810
-
811
- if (e.keyCode == 38) {
812
- if (that.options.liveSearch) index -= 1;
813
- if (index != nextPrev && index > prev) index = prev;
814
- if (index < first) index = first;
815
- if (index == prevIndex) index = last;
816
- }
817
-
818
- if (e.keyCode == 40) {
819
- if (that.options.liveSearch) index += 1;
820
- if (index == -1) index = 0;
821
- if (index != nextPrev && index < next) index = next;
822
- if (index > last) index = last;
823
- if (index == prevIndex) index = first;
824
- }
825
-
826
- $this.data('prevIndex', index);
827
-
828
- if (!that.options.liveSearch) {
829
- $items.eq(index).focus();
830
- } else {
831
- e.preventDefault();
832
- if (!$this.is('.dropdown-toggle')) {
833
- $items.removeClass('active');
834
- $items.eq(index).addClass('active').find('a').focus();
835
- $this.focus();
836
- }
837
- }
838
-
839
- } else if (!$this.is('input')) {
840
-
841
- var keyIndex = [],
842
- count,
843
- prevKey;
844
-
845
- $items.each(function() {
846
- if ($(this).parent().is(':not(.disabled)')) {
847
- if ($.trim($(this).text().toLowerCase()).substring(0,1) == keyCodeMap[e.keyCode]) {
848
- keyIndex.push($(this).parent().index());
849
- }
850
- }
851
- });
852
-
853
- count = $(document).data('keycount');
854
- count++;
855
- $(document).data('keycount',count);
856
-
857
- prevKey = $.trim($(':focus').text().toLowerCase()).substring(0,1);
858
-
859
- if (prevKey != keyCodeMap[e.keyCode]) {
860
- count = 1;
861
- $(document).data('keycount', count);
862
- } else if (count >= keyIndex.length) {
863
- $(document).data('keycount', 0);
864
- if (count > keyIndex.length) count = 1;
865
- }
866
-
867
- $items.eq(keyIndex[count - 1]).focus();
868
- }
869
-
870
- // Select focused option if "Enter", "Spacebar", "Tab" are pressed inside the menu.
871
- if (/(13|32|^9$)/.test(e.keyCode) && isActive) {
872
- if (!/(32)/.test(e.keyCode)) e.preventDefault();
873
- if (!that.options.liveSearch) {
874
- $(':focus').click();
875
- } else if (!/(32)/.test(e.keyCode)) {
876
- that.$menu.find('.active a').click();
877
- $this.focus();
878
- }
879
- $(document).data('keycount',0);
880
- }
881
-
882
- if ((/(^9$|27)/.test(e.keyCode) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode) && !isActive)) {
883
- that.$menu.parent().removeClass('open');
884
- that.$button.focus();
885
- }
886
-
887
- },
888
-
889
- hide: function() {
890
- this.$newElement.hide();
891
- },
892
-
893
- show: function() {
894
- this.$newElement.show();
895
- },
896
-
897
- destroy: function() {
898
- this.$newElement.remove();
899
- this.$element.remove();
900
- }
901
- };
902
-
903
- $.fn.selectpicker = function(option, event) {
904
- //get the args of the outer function..
905
- var args = arguments;
906
- var value;
907
- var chain = this.each(function() {
908
- if ($(this).is('select')) {
909
- var $this = $(this),
910
- data = $this.data('selectpicker'),
911
- options = typeof option == 'object' && option;
912
-
913
- if (!data) {
914
- $this.data('selectpicker', (data = new Selectpicker(this, options, event)));
915
- } else if (options) {
916
- for(var i in options) {
917
- data.options[i] = options[i];
918
- }
919
- }
920
-
921
- if (typeof option == 'string') {
922
- //Copy the value of option, as once we shift the arguments
923
- //it also shifts the value of option.
924
- var property = option;
925
- if (data[property] instanceof Function) {
926
- [].shift.apply(args);
927
- value = data[property].apply(data, args);
928
- } else {
929
- value = data.options[property];
930
- }
931
- }
932
- }
933
- });
934
-
935
- if (value !== undefined) {
936
- return value;
937
- } else {
938
- return chain;
939
- }
940
- };
941
-
942
- $.fn.selectpicker.defaults = {
943
- style: 'btn-default',
944
- size: 'auto',
945
- title: null,
946
- selectedTextFormat : 'values',
947
- noneSelectedText : 'Nothing selected',
948
- noneResultsText : 'No results match',
949
- countSelectedText: '{0} of {1} selected',
950
- maxOptionsText: ['Limit reached ({n} {var} max)', 'Group limit reached ({n} {var} max)', ['items','item']],
951
- width: false,
952
- container: false,
953
- hideDisabled: false,
954
- showSubtext: false,
955
- showIcon: true,
956
- showContent: true,
957
- dropupAuto: true,
958
- header: false,
959
- liveSearch: false,
960
- actionsBox: false,
961
- multipleSeparator: ', ',
962
- iconBase: 'glyphicon',
963
- tickIcon: 'glyphicon-ok',
964
- maxOptions: false
965
- };
966
-
967
- $(document)
968
- .data('keycount', 0)
969
- .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bootstrap-select-searchbox input', Selectpicker.prototype.keydown)
970
- .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bootstrap-select-searchbox input', function (e) { e.stopPropagation(); });
971
-
972
- }(window.jQuery);