jquery-ui-rails 4.2.1 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (293) hide show
  1. checksums.yaml +7 -0
  2. data/.gitmodules +1 -1
  3. data/.travis.yml +1 -1
  4. data/History.md +41 -2
  5. data/README.md +100 -83
  6. data/Rakefile +82 -49
  7. data/VERSIONS.md +9 -0
  8. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  9. data/app/assets/images/jquery-ui/ui-icons_444444_256x240.png +0 -0
  10. data/app/assets/images/jquery-ui/ui-icons_555555_256x240.png +0 -0
  11. data/app/assets/images/jquery-ui/ui-icons_777620_256x240.png +0 -0
  12. data/app/assets/images/jquery-ui/ui-icons_777777_256x240.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  14. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  15. data/app/assets/javascripts/jquery-ui/core.js +15 -0
  16. data/app/assets/javascripts/jquery-ui/data.js +45 -0
  17. data/app/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  18. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  19. data/app/assets/javascripts/jquery-ui/effect.js +975 -0
  20. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +76 -0
  21. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +116 -0
  22. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +71 -0
  23. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +75 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +117 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +53 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +95 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +63 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +49 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +70 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +63 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +80 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +199 -0
  33. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +82 -0
  34. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +46 -0
  35. data/app/assets/javascripts/jquery-ui/focusable.js +89 -0
  36. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +83 -0
  37. data/app/assets/javascripts/jquery-ui/form.js +25 -0
  38. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +40 -0
  39. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +42 -0
  40. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +42 -0
  41. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +40 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +40 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +41 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +40 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +40 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +40 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +48 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +40 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de-AT.js +41 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +40 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +40 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +40 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +40 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +40 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +40 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +40 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +48 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +39 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +76 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +40 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +48 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +40 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +40 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +42 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +40 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +40 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +40 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +40 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +39 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +40 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +40 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +48 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +40 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +40 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +40 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +51 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +40 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +40 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +40 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +41 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +48 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +48 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +48 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +40 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +40 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +40 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +52 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +40 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +40 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +52 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +53 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +40 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +48 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +47 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +64 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +43 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +40 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +40 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +41 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +40 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +40 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +40 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +40 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +56 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +40 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +40 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +40 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +41 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +40 -0
  110. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +40 -0
  111. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +40 -0
  112. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +40 -0
  113. data/app/assets/javascripts/jquery-ui/ie.js +20 -0
  114. data/app/assets/javascripts/jquery-ui/jquery-patch.js +91 -0
  115. data/app/assets/javascripts/jquery-ui/jquery-var-for-color.js +24 -0
  116. data/app/assets/javascripts/jquery-ui/keycode.js +51 -0
  117. data/app/assets/javascripts/jquery-ui/labels.js +71 -0
  118. data/app/assets/javascripts/jquery-ui/plugin.js +49 -0
  119. data/app/assets/javascripts/{jquery.ui.position.js → jquery-ui/position.js} +120 -108
  120. data/app/assets/javascripts/jquery-ui/safe-active-element.js +46 -0
  121. data/app/assets/javascripts/jquery-ui/safe-blur.js +27 -0
  122. data/app/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  123. data/app/assets/javascripts/jquery-ui/tabbable.js +41 -0
  124. data/app/assets/javascripts/jquery-ui/unique-id.js +54 -0
  125. data/app/assets/javascripts/jquery-ui/vendor/jquery-color/jquery.color.js +722 -0
  126. data/app/assets/javascripts/jquery-ui/version.js +20 -0
  127. data/app/assets/javascripts/jquery-ui/widget.js +754 -0
  128. data/app/assets/javascripts/{jquery.ui.accordion.js → jquery-ui/widgets/accordion.js} +257 -203
  129. data/app/assets/javascripts/{jquery.ui.autocomplete.js → jquery-ui/widgets/autocomplete.js} +202 -133
  130. data/app/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  131. data/app/assets/javascripts/jquery-ui/widgets/checkboxradio.js +289 -0
  132. data/app/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  133. data/app/assets/javascripts/jquery-ui/widgets/datepicker.js +2243 -0
  134. data/app/assets/javascripts/jquery-ui/widgets/dialog.js +968 -0
  135. data/app/assets/javascripts/jquery-ui/widgets/draggable.js +1268 -0
  136. data/app/assets/javascripts/jquery-ui/widgets/droppable.js +508 -0
  137. data/app/assets/javascripts/{jquery.ui.menu.js → jquery-ui/widgets/menu.js} +276 -187
  138. data/app/assets/javascripts/jquery-ui/widgets/mouse.js +241 -0
  139. data/app/assets/javascripts/jquery-ui/widgets/progressbar.js +184 -0
  140. data/app/assets/javascripts/jquery-ui/widgets/resizable.js +1225 -0
  141. data/app/assets/javascripts/jquery-ui/widgets/selectable.js +321 -0
  142. data/app/assets/javascripts/jquery-ui/widgets/selectmenu.js +702 -0
  143. data/app/assets/javascripts/{jquery.ui.slider.js → jquery-ui/widgets/slider.js} +254 -174
  144. data/app/assets/javascripts/jquery-ui/widgets/sortable.js +1623 -0
  145. data/app/assets/javascripts/{jquery.ui.spinner.js → jquery-ui/widgets/spinner.js} +206 -119
  146. data/app/assets/javascripts/{jquery.ui.tabs.js → jquery-ui/widgets/tabs.js} +334 -255
  147. data/app/assets/javascripts/jquery-ui/widgets/tooltip.js +530 -0
  148. data/app/assets/javascripts/jquery-ui.js +57 -0
  149. data/app/assets/stylesheets/jquery-ui/accordion.css +26 -0
  150. data/app/assets/stylesheets/{jquery.ui.all.css.erb → jquery-ui/all.css} +4 -4
  151. data/app/assets/stylesheets/{jquery.ui.autocomplete.css.erb → jquery-ui/autocomplete.css} +3 -5
  152. data/app/assets/stylesheets/jquery-ui/base.css +32 -0
  153. data/app/assets/stylesheets/jquery-ui/button.css +85 -0
  154. data/app/assets/stylesheets/jquery-ui/checkboxradio.css +37 -0
  155. data/app/assets/stylesheets/jquery-ui/controlgroup.css +68 -0
  156. data/app/assets/stylesheets/{jquery.ui.core.css.erb → jquery-ui/core.css} +16 -9
  157. data/app/assets/stylesheets/{jquery.ui.datepicker.css.erb → jquery-ui/datepicker.css} +14 -5
  158. data/app/assets/stylesheets/{jquery.ui.dialog.css.erb → jquery-ui/dialog.css} +40 -12
  159. data/app/assets/stylesheets/jquery-ui/draggable.css +15 -0
  160. data/app/assets/stylesheets/jquery-ui/menu.css +67 -0
  161. data/app/assets/stylesheets/jquery-ui/progressbar.css +31 -0
  162. data/app/assets/stylesheets/{jquery.ui.resizable.css.erb → jquery-ui/resizable.css} +5 -4
  163. data/app/assets/stylesheets/{jquery.ui.selectable.css.erb → jquery-ui/selectable.css} +7 -4
  164. data/app/assets/stylesheets/jquery-ui/selectmenu.css +53 -0
  165. data/app/assets/stylesheets/{jquery.ui.slider.css.erb → jquery-ui/slider.css} +7 -6
  166. data/app/assets/stylesheets/jquery-ui/sortable.css +15 -0
  167. data/app/assets/stylesheets/{jquery.ui.spinner.css.erb → jquery-ui/spinner.css} +9 -24
  168. data/app/assets/stylesheets/{jquery.ui.tabs.css.erb → jquery-ui/tabs.css} +3 -4
  169. data/app/assets/stylesheets/{jquery.ui.theme.css.erb → jquery-ui/theme.css.erb} +122 -96
  170. data/app/assets/stylesheets/{jquery.ui.tooltip.css.erb → jquery-ui/tooltip.css} +3 -6
  171. data/app/assets/stylesheets/jquery-ui.css +1 -0
  172. data/lib/jquery/ui/rails/version.rb +2 -2
  173. metadata +180 -166
  174. data/app/assets/images/jquery-ui/animated-overlay.gif +0 -0
  175. data/app/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  176. data/app/assets/images/jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  177. data/app/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  178. data/app/assets/images/jquery-ui/ui-bg_glass_75_dadada_1x400.png +0 -0
  179. data/app/assets/images/jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  180. data/app/assets/images/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  181. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  182. data/app/assets/images/jquery-ui/ui-icons_222222_256x240.png +0 -0
  183. data/app/assets/images/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
  184. data/app/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  185. data/app/assets/images/jquery-ui/ui-icons_888888_256x240.png +0 -0
  186. data/app/assets/images/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
  187. data/app/assets/javascripts/jquery.ui.all.js +0 -34
  188. data/app/assets/javascripts/jquery.ui.button.js +0 -398
  189. data/app/assets/javascripts/jquery.ui.core.js +0 -320
  190. data/app/assets/javascripts/jquery.ui.datepicker-af.js +0 -23
  191. data/app/assets/javascripts/jquery.ui.datepicker-ar-DZ.js +0 -23
  192. data/app/assets/javascripts/jquery.ui.datepicker-ar.js +0 -23
  193. data/app/assets/javascripts/jquery.ui.datepicker-az.js +0 -23
  194. data/app/assets/javascripts/jquery.ui.datepicker-be.js +0 -23
  195. data/app/assets/javascripts/jquery.ui.datepicker-bg.js +0 -24
  196. data/app/assets/javascripts/jquery.ui.datepicker-bs.js +0 -23
  197. data/app/assets/javascripts/jquery.ui.datepicker-ca.js +0 -23
  198. data/app/assets/javascripts/jquery.ui.datepicker-cs.js +0 -23
  199. data/app/assets/javascripts/jquery.ui.datepicker-cy-GB.js +0 -23
  200. data/app/assets/javascripts/jquery.ui.datepicker-da.js +0 -23
  201. data/app/assets/javascripts/jquery.ui.datepicker-de.js +0 -23
  202. data/app/assets/javascripts/jquery.ui.datepicker-el.js +0 -23
  203. data/app/assets/javascripts/jquery.ui.datepicker-en-AU.js +0 -23
  204. data/app/assets/javascripts/jquery.ui.datepicker-en-GB.js +0 -23
  205. data/app/assets/javascripts/jquery.ui.datepicker-en-NZ.js +0 -23
  206. data/app/assets/javascripts/jquery.ui.datepicker-eo.js +0 -23
  207. data/app/assets/javascripts/jquery.ui.datepicker-es.js +0 -23
  208. data/app/assets/javascripts/jquery.ui.datepicker-et.js +0 -23
  209. data/app/assets/javascripts/jquery.ui.datepicker-eu.js +0 -23
  210. data/app/assets/javascripts/jquery.ui.datepicker-fa.js +0 -59
  211. data/app/assets/javascripts/jquery.ui.datepicker-fi.js +0 -23
  212. data/app/assets/javascripts/jquery.ui.datepicker-fo.js +0 -23
  213. data/app/assets/javascripts/jquery.ui.datepicker-fr-CA.js +0 -23
  214. data/app/assets/javascripts/jquery.ui.datepicker-fr-CH.js +0 -23
  215. data/app/assets/javascripts/jquery.ui.datepicker-fr.js +0 -25
  216. data/app/assets/javascripts/jquery.ui.datepicker-gl.js +0 -23
  217. data/app/assets/javascripts/jquery.ui.datepicker-he.js +0 -23
  218. data/app/assets/javascripts/jquery.ui.datepicker-hi.js +0 -23
  219. data/app/assets/javascripts/jquery.ui.datepicker-hr.js +0 -23
  220. data/app/assets/javascripts/jquery.ui.datepicker-hu.js +0 -23
  221. data/app/assets/javascripts/jquery.ui.datepicker-hy.js +0 -23
  222. data/app/assets/javascripts/jquery.ui.datepicker-id.js +0 -23
  223. data/app/assets/javascripts/jquery.ui.datepicker-is.js +0 -23
  224. data/app/assets/javascripts/jquery.ui.datepicker-it.js +0 -23
  225. data/app/assets/javascripts/jquery.ui.datepicker-ja.js +0 -23
  226. data/app/assets/javascripts/jquery.ui.datepicker-ka.js +0 -21
  227. data/app/assets/javascripts/jquery.ui.datepicker-kk.js +0 -23
  228. data/app/assets/javascripts/jquery.ui.datepicker-km.js +0 -23
  229. data/app/assets/javascripts/jquery.ui.datepicker-ko.js +0 -23
  230. data/app/assets/javascripts/jquery.ui.datepicker-ky.js +0 -24
  231. data/app/assets/javascripts/jquery.ui.datepicker-lb.js +0 -23
  232. data/app/assets/javascripts/jquery.ui.datepicker-lt.js +0 -23
  233. data/app/assets/javascripts/jquery.ui.datepicker-lv.js +0 -23
  234. data/app/assets/javascripts/jquery.ui.datepicker-mk.js +0 -23
  235. data/app/assets/javascripts/jquery.ui.datepicker-ml.js +0 -23
  236. data/app/assets/javascripts/jquery.ui.datepicker-ms.js +0 -23
  237. data/app/assets/javascripts/jquery.ui.datepicker-nb.js +0 -22
  238. data/app/assets/javascripts/jquery.ui.datepicker-nl-BE.js +0 -23
  239. data/app/assets/javascripts/jquery.ui.datepicker-nl.js +0 -23
  240. data/app/assets/javascripts/jquery.ui.datepicker-nn.js +0 -22
  241. data/app/assets/javascripts/jquery.ui.datepicker-no.js +0 -23
  242. data/app/assets/javascripts/jquery.ui.datepicker-pl.js +0 -23
  243. data/app/assets/javascripts/jquery.ui.datepicker-pt-BR.js +0 -23
  244. data/app/assets/javascripts/jquery.ui.datepicker-pt.js +0 -22
  245. data/app/assets/javascripts/jquery.ui.datepicker-rm.js +0 -21
  246. data/app/assets/javascripts/jquery.ui.datepicker-ro.js +0 -26
  247. data/app/assets/javascripts/jquery.ui.datepicker-ru.js +0 -23
  248. data/app/assets/javascripts/jquery.ui.datepicker-sk.js +0 -23
  249. data/app/assets/javascripts/jquery.ui.datepicker-sl.js +0 -24
  250. data/app/assets/javascripts/jquery.ui.datepicker-sq.js +0 -23
  251. data/app/assets/javascripts/jquery.ui.datepicker-sr-SR.js +0 -23
  252. data/app/assets/javascripts/jquery.ui.datepicker-sr.js +0 -23
  253. data/app/assets/javascripts/jquery.ui.datepicker-sv.js +0 -23
  254. data/app/assets/javascripts/jquery.ui.datepicker-ta.js +0 -23
  255. data/app/assets/javascripts/jquery.ui.datepicker-th.js +0 -23
  256. data/app/assets/javascripts/jquery.ui.datepicker-tj.js +0 -23
  257. data/app/assets/javascripts/jquery.ui.datepicker-tr.js +0 -23
  258. data/app/assets/javascripts/jquery.ui.datepicker-uk.js +0 -24
  259. data/app/assets/javascripts/jquery.ui.datepicker-vi.js +0 -23
  260. data/app/assets/javascripts/jquery.ui.datepicker-zh-CN.js +0 -23
  261. data/app/assets/javascripts/jquery.ui.datepicker-zh-HK.js +0 -23
  262. data/app/assets/javascripts/jquery.ui.datepicker-zh-TW.js +0 -23
  263. data/app/assets/javascripts/jquery.ui.datepicker.js +0 -2040
  264. data/app/assets/javascripts/jquery.ui.dialog.js +0 -830
  265. data/app/assets/javascripts/jquery.ui.draggable.js +0 -962
  266. data/app/assets/javascripts/jquery.ui.droppable.js +0 -394
  267. data/app/assets/javascripts/jquery.ui.effect-blind.js +0 -84
  268. data/app/assets/javascripts/jquery.ui.effect-bounce.js +0 -115
  269. data/app/assets/javascripts/jquery.ui.effect-clip.js +0 -69
  270. data/app/assets/javascripts/jquery.ui.effect-drop.js +0 -67
  271. data/app/assets/javascripts/jquery.ui.effect-explode.js +0 -99
  272. data/app/assets/javascripts/jquery.ui.effect-fade.js +0 -32
  273. data/app/assets/javascripts/jquery.ui.effect-fold.js +0 -78
  274. data/app/assets/javascripts/jquery.ui.effect-highlight.js +0 -52
  275. data/app/assets/javascripts/jquery.ui.effect-pulsate.js +0 -65
  276. data/app/assets/javascripts/jquery.ui.effect-scale.js +0 -320
  277. data/app/assets/javascripts/jquery.ui.effect-shake.js +0 -76
  278. data/app/assets/javascripts/jquery.ui.effect-slide.js +0 -66
  279. data/app/assets/javascripts/jquery.ui.effect-transfer.js +0 -49
  280. data/app/assets/javascripts/jquery.ui.effect.all.js +0 -14
  281. data/app/assets/javascripts/jquery.ui.effect.js +0 -1289
  282. data/app/assets/javascripts/jquery.ui.mouse.js +0 -172
  283. data/app/assets/javascripts/jquery.ui.progressbar.js +0 -148
  284. data/app/assets/javascripts/jquery.ui.resizable.js +0 -982
  285. data/app/assets/javascripts/jquery.ui.selectable.js +0 -281
  286. data/app/assets/javascripts/jquery.ui.sortable.js +0 -1293
  287. data/app/assets/javascripts/jquery.ui.tooltip.js +0 -406
  288. data/app/assets/javascripts/jquery.ui.widget.js +0 -521
  289. data/app/assets/stylesheets/jquery.ui.accordion.css.erb +0 -42
  290. data/app/assets/stylesheets/jquery.ui.base.css.erb +0 -27
  291. data/app/assets/stylesheets/jquery.ui.button.css.erb +0 -118
  292. data/app/assets/stylesheets/jquery.ui.menu.css.erb +0 -83
  293. data/app/assets/stylesheets/jquery.ui.progressbar.css.erb +0 -37
@@ -1,98 +1,117 @@
1
- //= require jquery.ui.core
2
- //= require jquery.ui.widget
1
+ //= require jquery-ui/keycode
2
+ //= require jquery-ui/safe-active-element
3
+ //= require jquery-ui/unique-id
4
+ //= require jquery-ui/version
5
+ //= require jquery-ui/widget
3
6
 
4
7
  /*!
5
- * jQuery UI Tabs 1.10.4
8
+ * jQuery UI Tabs 1.13.0
6
9
  * http://jqueryui.com
7
10
  *
8
- * Copyright 2014 jQuery Foundation and other contributors
11
+ * Copyright jQuery Foundation and other contributors
9
12
  * Released under the MIT license.
10
13
  * http://jquery.org/license
11
- *
12
- * http://api.jqueryui.com/tabs/
13
- *
14
- * Depends:
15
- * jquery.ui.core.js
16
- * jquery.ui.widget.js
17
14
  */
18
- (function( $, undefined ) {
19
-
20
- var tabId = 0,
21
- rhash = /#.*$/;
22
-
23
- function getNextTabId() {
24
- return ++tabId;
25
- }
26
-
27
- function isLocal( anchor ) {
28
- // support: IE7
29
- // IE7 doesn't normalize the href property when set via script (#9317)
30
- anchor = anchor.cloneNode( false );
31
15
 
32
- return anchor.hash.length > 1 &&
33
- decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
34
- decodeURIComponent( location.href.replace( rhash, "" ) );
35
- }
16
+ //>>label: Tabs
17
+ //>>group: Widgets
18
+ //>>description: Transforms a set of container elements into a tab structure.
19
+ //>>docs: http://api.jqueryui.com/tabs/
20
+ //>>demos: http://jqueryui.com/tabs/
21
+ //>>css.structure: ../../themes/base/core.css
22
+ //>>css.structure: ../../themes/base/tabs.css
23
+ //>>css.theme: ../../themes/base/theme.css
24
+
25
+ ( function( factory ) {
26
+ "use strict";
27
+
28
+ if ( typeof define === "function" && define.amd ) {
29
+
30
+ // AMD. Register as an anonymous module.
31
+ define( [
32
+ "jquery",
33
+ "../keycode",
34
+ "../safe-active-element",
35
+ "../unique-id",
36
+ "../version",
37
+ "../widget"
38
+ ], factory );
39
+ } else {
40
+
41
+ // Browser globals
42
+ factory( jQuery );
43
+ }
44
+ } )( function( $ ) {
45
+ "use strict";
36
46
 
37
47
  $.widget( "ui.tabs", {
38
- version: "1.10.4",
48
+ version: "1.13.0",
39
49
  delay: 300,
40
50
  options: {
41
51
  active: null,
52
+ classes: {
53
+ "ui-tabs": "ui-corner-all",
54
+ "ui-tabs-nav": "ui-corner-all",
55
+ "ui-tabs-panel": "ui-corner-bottom",
56
+ "ui-tabs-tab": "ui-corner-top"
57
+ },
42
58
  collapsible: false,
43
59
  event: "click",
44
60
  heightStyle: "content",
45
61
  hide: null,
46
62
  show: null,
47
63
 
48
- // callbacks
64
+ // Callbacks
49
65
  activate: null,
50
66
  beforeActivate: null,
51
67
  beforeLoad: null,
52
68
  load: null
53
69
  },
54
70
 
71
+ _isLocal: ( function() {
72
+ var rhash = /#.*$/;
73
+
74
+ return function( anchor ) {
75
+ var anchorUrl, locationUrl;
76
+
77
+ anchorUrl = anchor.href.replace( rhash, "" );
78
+ locationUrl = location.href.replace( rhash, "" );
79
+
80
+ // Decoding may throw an error if the URL isn't UTF-8 (#9518)
81
+ try {
82
+ anchorUrl = decodeURIComponent( anchorUrl );
83
+ } catch ( error ) {}
84
+ try {
85
+ locationUrl = decodeURIComponent( locationUrl );
86
+ } catch ( error ) {}
87
+
88
+ return anchor.hash.length > 1 && anchorUrl === locationUrl;
89
+ };
90
+ } )(),
91
+
55
92
  _create: function() {
56
93
  var that = this,
57
94
  options = this.options;
58
95
 
59
96
  this.running = false;
60
97
 
61
- this.element
62
- .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
63
- .toggleClass( "ui-tabs-collapsible", options.collapsible )
64
- // Prevent users from focusing disabled tabs via click
65
- .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
66
- if ( $( this ).is( ".ui-state-disabled" ) ) {
67
- event.preventDefault();
68
- }
69
- })
70
- // support: IE <9
71
- // Preventing the default action in mousedown doesn't prevent IE
72
- // from focusing the element, so if the anchor gets focused, blur.
73
- // We don't have to worry about focusing the previously focused
74
- // element since clicking on a non-focusable element should focus
75
- // the body anyway.
76
- .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
77
- if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
78
- this.blur();
79
- }
80
- });
98
+ this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
99
+ this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
81
100
 
82
101
  this._processTabs();
83
102
  options.active = this._initialActive();
84
103
 
85
104
  // Take disabling tabs via class attribute from HTML
86
105
  // into account and update option properly.
87
- if ( $.isArray( options.disabled ) ) {
88
- options.disabled = $.unique( options.disabled.concat(
106
+ if ( Array.isArray( options.disabled ) ) {
107
+ options.disabled = $.uniqueSort( options.disabled.concat(
89
108
  $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
90
109
  return that.tabs.index( li );
91
- })
110
+ } )
92
111
  ) ).sort();
93
112
  }
94
113
 
95
- // check for length avoids error when initializing empty list
114
+ // Check for length avoids error when initializing empty list
96
115
  if ( this.options.active !== false && this.anchors.length ) {
97
116
  this.active = this._findActive( options.active );
98
117
  } else {
@@ -112,28 +131,29 @@ $.widget( "ui.tabs", {
112
131
  locationHash = location.hash.substring( 1 );
113
132
 
114
133
  if ( active === null ) {
134
+
115
135
  // check the fragment identifier in the URL
116
136
  if ( locationHash ) {
117
- this.tabs.each(function( i, tab ) {
137
+ this.tabs.each( function( i, tab ) {
118
138
  if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
119
139
  active = i;
120
140
  return false;
121
141
  }
122
- });
142
+ } );
123
143
  }
124
144
 
125
- // check for a tab marked active via a class
145
+ // Check for a tab marked active via a class
126
146
  if ( active === null ) {
127
147
  active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
128
148
  }
129
149
 
130
- // no active tab, set to false
150
+ // No active tab, set to false
131
151
  if ( active === null || active === -1 ) {
132
152
  active = this.tabs.length ? 0 : false;
133
153
  }
134
154
  }
135
155
 
136
- // handle numbers: negative, out of range
156
+ // Handle numbers: negative, out of range
137
157
  if ( active !== false ) {
138
158
  active = this.tabs.index( this.tabs.eq( active ) );
139
159
  if ( active === -1 ) {
@@ -141,7 +161,7 @@ $.widget( "ui.tabs", {
141
161
  }
142
162
  }
143
163
 
144
- // don't allow collapsible: false and active: false
164
+ // Don't allow collapsible: false and active: false
145
165
  if ( !collapsible && active === false && this.anchors.length ) {
146
166
  active = 0;
147
167
  }
@@ -157,7 +177,7 @@ $.widget( "ui.tabs", {
157
177
  },
158
178
 
159
179
  _tabKeydown: function( event ) {
160
- var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
180
+ var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
161
181
  selectedIndex = this.tabs.index( focusedTab ),
162
182
  goingForward = true;
163
183
 
@@ -166,36 +186,39 @@ $.widget( "ui.tabs", {
166
186
  }
167
187
 
168
188
  switch ( event.keyCode ) {
169
- case $.ui.keyCode.RIGHT:
170
- case $.ui.keyCode.DOWN:
171
- selectedIndex++;
172
- break;
173
- case $.ui.keyCode.UP:
174
- case $.ui.keyCode.LEFT:
175
- goingForward = false;
176
- selectedIndex--;
177
- break;
178
- case $.ui.keyCode.END:
179
- selectedIndex = this.anchors.length - 1;
180
- break;
181
- case $.ui.keyCode.HOME:
182
- selectedIndex = 0;
183
- break;
184
- case $.ui.keyCode.SPACE:
185
- // Activate only, no collapsing
186
- event.preventDefault();
187
- clearTimeout( this.activating );
188
- this._activate( selectedIndex );
189
- return;
190
- case $.ui.keyCode.ENTER:
191
- // Toggle (cancel delayed activation, allow collapsing)
192
- event.preventDefault();
193
- clearTimeout( this.activating );
194
- // Determine if we should collapse or activate
195
- this._activate( selectedIndex === this.options.active ? false : selectedIndex );
196
- return;
197
- default:
198
- return;
189
+ case $.ui.keyCode.RIGHT:
190
+ case $.ui.keyCode.DOWN:
191
+ selectedIndex++;
192
+ break;
193
+ case $.ui.keyCode.UP:
194
+ case $.ui.keyCode.LEFT:
195
+ goingForward = false;
196
+ selectedIndex--;
197
+ break;
198
+ case $.ui.keyCode.END:
199
+ selectedIndex = this.anchors.length - 1;
200
+ break;
201
+ case $.ui.keyCode.HOME:
202
+ selectedIndex = 0;
203
+ break;
204
+ case $.ui.keyCode.SPACE:
205
+
206
+ // Activate only, no collapsing
207
+ event.preventDefault();
208
+ clearTimeout( this.activating );
209
+ this._activate( selectedIndex );
210
+ return;
211
+ case $.ui.keyCode.ENTER:
212
+
213
+ // Toggle (cancel delayed activation, allow collapsing)
214
+ event.preventDefault();
215
+ clearTimeout( this.activating );
216
+
217
+ // Determine if we should collapse or activate
218
+ this._activate( selectedIndex === this.options.active ? false : selectedIndex );
219
+ return;
220
+ default:
221
+ return;
199
222
  }
200
223
 
201
224
  // Focus the appropriate tab, based on which key was pressed
@@ -203,15 +226,16 @@ $.widget( "ui.tabs", {
203
226
  clearTimeout( this.activating );
204
227
  selectedIndex = this._focusNextTab( selectedIndex, goingForward );
205
228
 
206
- // Navigating with control key will prevent automatic activation
207
- if ( !event.ctrlKey ) {
229
+ // Navigating with control/command key will prevent automatic activation
230
+ if ( !event.ctrlKey && !event.metaKey ) {
231
+
208
232
  // Update aria-selected immediately so that AT think the tab is already selected.
209
233
  // Otherwise AT may confuse the user by stating that they need to activate the tab,
210
234
  // but the tab will already be activated by the time the announcement finishes.
211
235
  focusedTab.attr( "aria-selected", "false" );
212
236
  this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
213
237
 
214
- this.activating = this._delay(function() {
238
+ this.activating = this._delay( function() {
215
239
  this.option( "active", selectedIndex );
216
240
  }, this.delay );
217
241
  }
@@ -225,7 +249,7 @@ $.widget( "ui.tabs", {
225
249
  // Ctrl+up moves focus to the current tab
226
250
  if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
227
251
  event.preventDefault();
228
- this.active.focus();
252
+ this.active.trigger( "focus" );
229
253
  }
230
254
  },
231
255
 
@@ -263,27 +287,23 @@ $.widget( "ui.tabs", {
263
287
 
264
288
  _focusNextTab: function( index, goingForward ) {
265
289
  index = this._findNextTab( index, goingForward );
266
- this.tabs.eq( index ).focus();
290
+ this.tabs.eq( index ).trigger( "focus" );
267
291
  return index;
268
292
  },
269
293
 
270
294
  _setOption: function( key, value ) {
271
295
  if ( key === "active" ) {
296
+
272
297
  // _activate() will handle invalid values and update this.options
273
298
  this._activate( value );
274
299
  return;
275
300
  }
276
301
 
277
- if ( key === "disabled" ) {
278
- // don't use the widget factory's disabled handling
279
- this._setupDisabled( value );
280
- return;
281
- }
282
-
283
- this._super( key, value);
302
+ this._super( key, value );
284
303
 
285
304
  if ( key === "collapsible" ) {
286
- this.element.toggleClass( "ui-tabs-collapsible", value );
305
+ this._toggleClass( "ui-tabs-collapsible", null, value );
306
+
287
307
  // Setting collapsible: false while collapsed; open first panel
288
308
  if ( !value && this.options.active === false ) {
289
309
  this._activate( 0 );
@@ -299,10 +319,6 @@ $.widget( "ui.tabs", {
299
319
  }
300
320
  },
301
321
 
302
- _tabId: function( tab ) {
303
- return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
304
- },
305
-
306
322
  _sanitizeSelector: function( hash ) {
307
323
  return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
308
324
  },
@@ -311,30 +327,35 @@ $.widget( "ui.tabs", {
311
327
  var options = this.options,
312
328
  lis = this.tablist.children( ":has(a[href])" );
313
329
 
314
- // get disabled tabs from class attribute from HTML
330
+ // Get disabled tabs from class attribute from HTML
315
331
  // this will get converted to a boolean if needed in _refresh()
316
332
  options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
317
333
  return lis.index( tab );
318
- });
334
+ } );
319
335
 
320
336
  this._processTabs();
321
337
 
322
- // was collapsed or no tabs
338
+ // Was collapsed or no tabs
323
339
  if ( options.active === false || !this.anchors.length ) {
324
340
  options.active = false;
325
341
  this.active = $();
342
+
326
343
  // was active, but active tab is gone
327
344
  } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
345
+
328
346
  // all remaining tabs are disabled
329
347
  if ( this.tabs.length === options.disabled.length ) {
330
348
  options.active = false;
331
349
  this.active = $();
350
+
332
351
  // activate previous tab
333
352
  } else {
334
353
  this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
335
354
  }
355
+
336
356
  // was active, active tab still exists
337
357
  } else {
358
+
338
359
  // make sure active index is correct
339
360
  options.active = this.tabs.index( this.active );
340
361
  }
@@ -343,78 +364,105 @@ $.widget( "ui.tabs", {
343
364
  },
344
365
 
345
366
  _refresh: function() {
346
- this._setupDisabled( this.options.disabled );
367
+ this._setOptionDisabled( this.options.disabled );
347
368
  this._setupEvents( this.options.event );
348
369
  this._setupHeightStyle( this.options.heightStyle );
349
370
 
350
- this.tabs.not( this.active ).attr({
371
+ this.tabs.not( this.active ).attr( {
351
372
  "aria-selected": "false",
373
+ "aria-expanded": "false",
352
374
  tabIndex: -1
353
- });
375
+ } );
354
376
  this.panels.not( this._getPanelForTab( this.active ) )
355
377
  .hide()
356
- .attr({
357
- "aria-expanded": "false",
378
+ .attr( {
358
379
  "aria-hidden": "true"
359
- });
380
+ } );
360
381
 
361
382
  // Make sure one tab is in the tab order
362
383
  if ( !this.active.length ) {
363
384
  this.tabs.eq( 0 ).attr( "tabIndex", 0 );
364
385
  } else {
365
386
  this.active
366
- .addClass( "ui-tabs-active ui-state-active" )
367
- .attr({
387
+ .attr( {
368
388
  "aria-selected": "true",
389
+ "aria-expanded": "true",
369
390
  tabIndex: 0
370
- });
391
+ } );
392
+ this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
371
393
  this._getPanelForTab( this.active )
372
394
  .show()
373
- .attr({
374
- "aria-expanded": "true",
395
+ .attr( {
375
396
  "aria-hidden": "false"
376
- });
397
+ } );
377
398
  }
378
399
  },
379
400
 
380
401
  _processTabs: function() {
381
- var that = this;
402
+ var that = this,
403
+ prevTabs = this.tabs,
404
+ prevAnchors = this.anchors,
405
+ prevPanels = this.panels;
382
406
 
383
- this.tablist = this._getList()
384
- .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
385
- .attr( "role", "tablist" );
407
+ this.tablist = this._getList().attr( "role", "tablist" );
408
+ this._addClass( this.tablist, "ui-tabs-nav",
409
+ "ui-helper-reset ui-helper-clearfix ui-widget-header" );
410
+
411
+ // Prevent users from focusing disabled tabs via click
412
+ this.tablist
413
+ .on( "mousedown" + this.eventNamespace, "> li", function( event ) {
414
+ if ( $( this ).is( ".ui-state-disabled" ) ) {
415
+ event.preventDefault();
416
+ }
417
+ } )
418
+
419
+ // Support: IE <9
420
+ // Preventing the default action in mousedown doesn't prevent IE
421
+ // from focusing the element, so if the anchor gets focused, blur.
422
+ // We don't have to worry about focusing the previously focused
423
+ // element since clicking on a non-focusable element should focus
424
+ // the body anyway.
425
+ .on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
426
+ if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
427
+ this.blur();
428
+ }
429
+ } );
386
430
 
387
431
  this.tabs = this.tablist.find( "> li:has(a[href])" )
388
- .addClass( "ui-state-default ui-corner-top" )
389
- .attr({
432
+ .attr( {
390
433
  role: "tab",
391
434
  tabIndex: -1
392
- });
393
-
394
- this.anchors = this.tabs.map(function() {
395
- return $( "a", this )[ 0 ];
396
- })
397
- .addClass( "ui-tabs-anchor" )
398
- .attr({
399
- role: "presentation",
435
+ } );
436
+ this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
437
+
438
+ this.anchors = this.tabs.map( function() {
439
+ return $( "a", this )[ 0 ];
440
+ } )
441
+ .attr( {
400
442
  tabIndex: -1
401
- });
443
+ } );
444
+ this._addClass( this.anchors, "ui-tabs-anchor" );
402
445
 
403
446
  this.panels = $();
404
447
 
405
- this.anchors.each(function( i, anchor ) {
448
+ this.anchors.each( function( i, anchor ) {
406
449
  var selector, panel, panelId,
407
450
  anchorId = $( anchor ).uniqueId().attr( "id" ),
408
451
  tab = $( anchor ).closest( "li" ),
409
452
  originalAriaControls = tab.attr( "aria-controls" );
410
453
 
411
- // inline tab
412
- if ( isLocal( anchor ) ) {
454
+ // Inline tab
455
+ if ( that._isLocal( anchor ) ) {
413
456
  selector = anchor.hash;
457
+ panelId = selector.substring( 1 );
414
458
  panel = that.element.find( that._sanitizeSelector( selector ) );
459
+
415
460
  // remote tab
416
461
  } else {
417
- panelId = that._tabId( tab );
462
+
463
+ // If the tab doesn't already have aria-controls,
464
+ // generate an id by using a throw-away element
465
+ panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
418
466
  selector = "#" + panelId;
419
467
  panel = that.element.find( selector );
420
468
  if ( !panel.length ) {
@@ -424,38 +472,45 @@ $.widget( "ui.tabs", {
424
472
  panel.attr( "aria-live", "polite" );
425
473
  }
426
474
 
427
- if ( panel.length) {
475
+ if ( panel.length ) {
428
476
  that.panels = that.panels.add( panel );
429
477
  }
430
478
  if ( originalAriaControls ) {
431
479
  tab.data( "ui-tabs-aria-controls", originalAriaControls );
432
480
  }
433
- tab.attr({
434
- "aria-controls": selector.substring( 1 ),
481
+ tab.attr( {
482
+ "aria-controls": panelId,
435
483
  "aria-labelledby": anchorId
436
- });
484
+ } );
437
485
  panel.attr( "aria-labelledby", anchorId );
438
- });
486
+ } );
439
487
 
440
- this.panels
441
- .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
442
- .attr( "role", "tabpanel" );
488
+ this.panels.attr( "role", "tabpanel" );
489
+ this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
490
+
491
+ // Avoid memory leaks (#10056)
492
+ if ( prevTabs ) {
493
+ this._off( prevTabs.not( this.tabs ) );
494
+ this._off( prevAnchors.not( this.anchors ) );
495
+ this._off( prevPanels.not( this.panels ) );
496
+ }
443
497
  },
444
498
 
445
- // allow overriding how to find the list for rare usage scenarios (#7715)
499
+ // Allow overriding how to find the list for rare usage scenarios (#7715)
446
500
  _getList: function() {
447
- return this.tablist || this.element.find( "ol,ul" ).eq( 0 );
501
+ return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
448
502
  },
449
503
 
450
504
  _createPanel: function( id ) {
451
505
  return $( "<div>" )
452
506
  .attr( "id", id )
453
- .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
454
507
  .data( "ui-tabs-destroy", true );
455
508
  },
456
509
 
457
- _setupDisabled: function( disabled ) {
458
- if ( $.isArray( disabled ) ) {
510
+ _setOptionDisabled: function( disabled ) {
511
+ var currentItem, li, i;
512
+
513
+ if ( Array.isArray( disabled ) ) {
459
514
  if ( !disabled.length ) {
460
515
  disabled = false;
461
516
  } else if ( disabled.length === this.anchors.length ) {
@@ -463,35 +518,40 @@ $.widget( "ui.tabs", {
463
518
  }
464
519
  }
465
520
 
466
- // disable tabs
467
- for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
521
+ // Disable tabs
522
+ for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
523
+ currentItem = $( li );
468
524
  if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
469
- $( li )
470
- .addClass( "ui-state-disabled" )
471
- .attr( "aria-disabled", "true" );
525
+ currentItem.attr( "aria-disabled", "true" );
526
+ this._addClass( currentItem, null, "ui-state-disabled" );
472
527
  } else {
473
- $( li )
474
- .removeClass( "ui-state-disabled" )
475
- .removeAttr( "aria-disabled" );
528
+ currentItem.removeAttr( "aria-disabled" );
529
+ this._removeClass( currentItem, null, "ui-state-disabled" );
476
530
  }
477
531
  }
478
532
 
479
533
  this.options.disabled = disabled;
534
+
535
+ this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
536
+ disabled === true );
480
537
  },
481
538
 
482
539
  _setupEvents: function( event ) {
483
- var events = {
484
- click: function( event ) {
485
- event.preventDefault();
486
- }
487
- };
540
+ var events = {};
488
541
  if ( event ) {
489
- $.each( event.split(" "), function( index, eventName ) {
542
+ $.each( event.split( " " ), function( index, eventName ) {
490
543
  events[ eventName ] = "_eventHandler";
491
- });
544
+ } );
492
545
  }
493
546
 
494
547
  this._off( this.anchors.add( this.tabs ).add( this.panels ) );
548
+
549
+ // Always prevent the default action, even when disabled
550
+ this._on( true, this.anchors, {
551
+ click: function( event ) {
552
+ event.preventDefault();
553
+ }
554
+ } );
495
555
  this._on( this.anchors, events );
496
556
  this._on( this.tabs, { keydown: "_tabKeydown" } );
497
557
  this._on( this.panels, { keydown: "_panelKeydown" } );
@@ -508,7 +568,7 @@ $.widget( "ui.tabs", {
508
568
  maxHeight = parent.height();
509
569
  maxHeight -= this.element.outerHeight() - this.element.height();
510
570
 
511
- this.element.siblings( ":visible" ).each(function() {
571
+ this.element.siblings( ":visible" ).each( function() {
512
572
  var elem = $( this ),
513
573
  position = elem.css( "position" );
514
574
 
@@ -516,22 +576,22 @@ $.widget( "ui.tabs", {
516
576
  return;
517
577
  }
518
578
  maxHeight -= elem.outerHeight( true );
519
- });
579
+ } );
520
580
 
521
- this.element.children().not( this.panels ).each(function() {
581
+ this.element.children().not( this.panels ).each( function() {
522
582
  maxHeight -= $( this ).outerHeight( true );
523
- });
583
+ } );
524
584
 
525
- this.panels.each(function() {
585
+ this.panels.each( function() {
526
586
  $( this ).height( Math.max( 0, maxHeight -
527
587
  $( this ).innerHeight() + $( this ).height() ) );
528
- })
529
- .css( "overflow", "auto" );
588
+ } )
589
+ .css( "overflow", "auto" );
530
590
  } else if ( heightStyle === "auto" ) {
531
591
  maxHeight = 0;
532
- this.panels.each(function() {
592
+ this.panels.each( function() {
533
593
  maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
534
- }).height( maxHeight );
594
+ } ).height( maxHeight );
535
595
  }
536
596
  },
537
597
 
@@ -554,12 +614,16 @@ $.widget( "ui.tabs", {
554
614
  event.preventDefault();
555
615
 
556
616
  if ( tab.hasClass( "ui-state-disabled" ) ||
617
+
557
618
  // tab is already loading
558
619
  tab.hasClass( "ui-tabs-loading" ) ||
620
+
559
621
  // can't switch durning an animation
560
622
  this.running ||
623
+
561
624
  // click on active header, but not collapsible
562
625
  ( clickedIsActive && !options.collapsible ) ||
626
+
563
627
  // allow canceling activation
564
628
  ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
565
629
  return;
@@ -582,7 +646,7 @@ $.widget( "ui.tabs", {
582
646
  this._toggle( event, eventData );
583
647
  },
584
648
 
585
- // handles show/hide for selecting tabs
649
+ // Handles show/hide for selecting tabs
586
650
  _toggle: function( event, eventData ) {
587
651
  var that = this,
588
652
  toShow = eventData.newPanel,
@@ -596,7 +660,7 @@ $.widget( "ui.tabs", {
596
660
  }
597
661
 
598
662
  function show() {
599
- eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
663
+ that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
600
664
 
601
665
  if ( toShow.length && that.options.show ) {
602
666
  that._show( toShow, that.options.show, complete );
@@ -606,65 +670,66 @@ $.widget( "ui.tabs", {
606
670
  }
607
671
  }
608
672
 
609
- // start out by hiding, then showing, then completing
673
+ // Start out by hiding, then showing, then completing
610
674
  if ( toHide.length && this.options.hide ) {
611
675
  this._hide( toHide, this.options.hide, function() {
612
- eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
676
+ that._removeClass( eventData.oldTab.closest( "li" ),
677
+ "ui-tabs-active", "ui-state-active" );
613
678
  show();
614
- });
679
+ } );
615
680
  } else {
616
- eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
681
+ this._removeClass( eventData.oldTab.closest( "li" ),
682
+ "ui-tabs-active", "ui-state-active" );
617
683
  toHide.hide();
618
684
  show();
619
685
  }
620
686
 
621
- toHide.attr({
622
- "aria-expanded": "false",
623
- "aria-hidden": "true"
624
- });
625
- eventData.oldTab.attr( "aria-selected", "false" );
687
+ toHide.attr( "aria-hidden", "true" );
688
+ eventData.oldTab.attr( {
689
+ "aria-selected": "false",
690
+ "aria-expanded": "false"
691
+ } );
692
+
626
693
  // If we're switching tabs, remove the old tab from the tab order.
627
694
  // If we're opening from collapsed state, remove the previous tab from the tab order.
628
695
  // If we're collapsing, then keep the collapsing tab in the tab order.
629
696
  if ( toShow.length && toHide.length ) {
630
697
  eventData.oldTab.attr( "tabIndex", -1 );
631
698
  } else if ( toShow.length ) {
632
- this.tabs.filter(function() {
699
+ this.tabs.filter( function() {
633
700
  return $( this ).attr( "tabIndex" ) === 0;
634
- })
635
- .attr( "tabIndex", -1 );
701
+ } )
702
+ .attr( "tabIndex", -1 );
636
703
  }
637
704
 
638
- toShow.attr({
639
- "aria-expanded": "true",
640
- "aria-hidden": "false"
641
- });
642
- eventData.newTab.attr({
705
+ toShow.attr( "aria-hidden", "false" );
706
+ eventData.newTab.attr( {
643
707
  "aria-selected": "true",
708
+ "aria-expanded": "true",
644
709
  tabIndex: 0
645
- });
710
+ } );
646
711
  },
647
712
 
648
713
  _activate: function( index ) {
649
714
  var anchor,
650
715
  active = this._findActive( index );
651
716
 
652
- // trying to activate the already active panel
717
+ // Trying to activate the already active panel
653
718
  if ( active[ 0 ] === this.active[ 0 ] ) {
654
719
  return;
655
720
  }
656
721
 
657
- // trying to collapse, simulate a click on the current active header
722
+ // Trying to collapse, simulate a click on the current active header
658
723
  if ( !active.length ) {
659
724
  active = this.active;
660
725
  }
661
726
 
662
727
  anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
663
- this._eventHandler({
728
+ this._eventHandler( {
664
729
  target: anchor,
665
730
  currentTarget: anchor,
666
731
  preventDefault: $.noop
667
- });
732
+ } );
668
733
  },
669
734
 
670
735
  _findActive: function( index ) {
@@ -672,9 +737,11 @@ $.widget( "ui.tabs", {
672
737
  },
673
738
 
674
739
  _getIndex: function( index ) {
740
+
675
741
  // meta-function to give users option to provide a href string instead of a numerical index.
676
742
  if ( typeof index === "string" ) {
677
- index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
743
+ index = this.anchors.index( this.anchors.filter( "[href$='" +
744
+ $.escapeSelector( index ) + "']" ) );
678
745
  }
679
746
 
680
747
  return index;
@@ -685,37 +752,24 @@ $.widget( "ui.tabs", {
685
752
  this.xhr.abort();
686
753
  }
687
754
 
688
- this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
689
-
690
755
  this.tablist
691
- .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
692
- .removeAttr( "role" );
756
+ .removeAttr( "role" )
757
+ .off( this.eventNamespace );
693
758
 
694
759
  this.anchors
695
- .removeClass( "ui-tabs-anchor" )
696
- .removeAttr( "role" )
697
- .removeAttr( "tabIndex" )
760
+ .removeAttr( "role tabIndex" )
698
761
  .removeUniqueId();
699
762
 
700
- this.tabs.add( this.panels ).each(function() {
763
+ this.tabs.add( this.panels ).each( function() {
701
764
  if ( $.data( this, "ui-tabs-destroy" ) ) {
702
765
  $( this ).remove();
703
766
  } else {
704
- $( this )
705
- .removeClass( "ui-state-default ui-state-active ui-state-disabled " +
706
- "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
707
- .removeAttr( "tabIndex" )
708
- .removeAttr( "aria-live" )
709
- .removeAttr( "aria-busy" )
710
- .removeAttr( "aria-selected" )
711
- .removeAttr( "aria-labelledby" )
712
- .removeAttr( "aria-hidden" )
713
- .removeAttr( "aria-expanded" )
714
- .removeAttr( "role" );
767
+ $( this ).removeAttr( "role tabIndex " +
768
+ "aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
715
769
  }
716
- });
770
+ } );
717
771
 
718
- this.tabs.each(function() {
772
+ this.tabs.each( function() {
719
773
  var li = $( this ),
720
774
  prev = li.data( "ui-tabs-aria-controls" );
721
775
  if ( prev ) {
@@ -725,7 +779,7 @@ $.widget( "ui.tabs", {
725
779
  } else {
726
780
  li.removeAttr( "aria-controls" );
727
781
  }
728
- });
782
+ } );
729
783
 
730
784
  this.panels.show();
731
785
 
@@ -744,17 +798,17 @@ $.widget( "ui.tabs", {
744
798
  disabled = false;
745
799
  } else {
746
800
  index = this._getIndex( index );
747
- if ( $.isArray( disabled ) ) {
801
+ if ( Array.isArray( disabled ) ) {
748
802
  disabled = $.map( disabled, function( num ) {
749
803
  return num !== index ? num : null;
750
- });
804
+ } );
751
805
  } else {
752
806
  disabled = $.map( this.tabs, function( li, num ) {
753
807
  return num !== index ? num : null;
754
- });
808
+ } );
755
809
  }
756
810
  }
757
- this._setupDisabled( disabled );
811
+ this._setOptionDisabled( disabled );
758
812
  },
759
813
 
760
814
  disable: function( index ) {
@@ -770,13 +824,13 @@ $.widget( "ui.tabs", {
770
824
  if ( $.inArray( index, disabled ) !== -1 ) {
771
825
  return;
772
826
  }
773
- if ( $.isArray( disabled ) ) {
827
+ if ( Array.isArray( disabled ) ) {
774
828
  disabled = $.merge( [ index ], disabled ).sort();
775
829
  } else {
776
830
  disabled = [ index ];
777
831
  }
778
832
  }
779
- this._setupDisabled( disabled );
833
+ this._setOptionDisabled( disabled );
780
834
  },
781
835
 
782
836
  load: function( index, event ) {
@@ -788,57 +842,67 @@ $.widget( "ui.tabs", {
788
842
  eventData = {
789
843
  tab: tab,
790
844
  panel: panel
845
+ },
846
+ complete = function( jqXHR, status ) {
847
+ if ( status === "abort" ) {
848
+ that.panels.stop( false, true );
849
+ }
850
+
851
+ that._removeClass( tab, "ui-tabs-loading" );
852
+ panel.removeAttr( "aria-busy" );
853
+
854
+ if ( jqXHR === that.xhr ) {
855
+ delete that.xhr;
856
+ }
791
857
  };
792
858
 
793
- // not remote
794
- if ( isLocal( anchor[ 0 ] ) ) {
859
+ // Not remote
860
+ if ( this._isLocal( anchor[ 0 ] ) ) {
795
861
  return;
796
862
  }
797
863
 
798
864
  this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
799
865
 
800
- // support: jQuery <1.8
866
+ // Support: jQuery <1.8
801
867
  // jQuery <1.8 returns false if the request is canceled in beforeSend,
802
868
  // but as of 1.8, $.ajax() always returns a jqXHR object.
803
869
  if ( this.xhr && this.xhr.statusText !== "canceled" ) {
804
- tab.addClass( "ui-tabs-loading" );
870
+ this._addClass( tab, "ui-tabs-loading" );
805
871
  panel.attr( "aria-busy", "true" );
806
872
 
807
873
  this.xhr
808
- .success(function( response ) {
874
+ .done( function( response, status, jqXHR ) {
875
+
809
876
  // support: jQuery <1.8
810
877
  // http://bugs.jquery.com/ticket/11778
811
- setTimeout(function() {
878
+ setTimeout( function() {
812
879
  panel.html( response );
813
880
  that._trigger( "load", event, eventData );
881
+
882
+ complete( jqXHR, status );
814
883
  }, 1 );
815
- })
816
- .complete(function( jqXHR, status ) {
884
+ } )
885
+ .fail( function( jqXHR, status ) {
886
+
817
887
  // support: jQuery <1.8
818
888
  // http://bugs.jquery.com/ticket/11778
819
- setTimeout(function() {
820
- if ( status === "abort" ) {
821
- that.panels.stop( false, true );
822
- }
823
-
824
- tab.removeClass( "ui-tabs-loading" );
825
- panel.removeAttr( "aria-busy" );
826
-
827
- if ( jqXHR === that.xhr ) {
828
- delete that.xhr;
829
- }
889
+ setTimeout( function() {
890
+ complete( jqXHR, status );
830
891
  }, 1 );
831
- });
892
+ } );
832
893
  }
833
894
  },
834
895
 
835
896
  _ajaxSettings: function( anchor, event, eventData ) {
836
897
  var that = this;
837
898
  return {
838
- url: anchor.attr( "href" ),
899
+
900
+ // Support: IE <11 only
901
+ // Strip any hash that exists to prevent errors with the Ajax request
902
+ url: anchor.attr( "href" ).replace( /#.*$/, "" ),
839
903
  beforeSend: function( jqXHR, settings ) {
840
904
  return that._trigger( "beforeLoad", event,
841
- $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
905
+ $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
842
906
  }
843
907
  };
844
908
  },
@@ -847,6 +911,21 @@ $.widget( "ui.tabs", {
847
911
  var id = $( tab ).attr( "aria-controls" );
848
912
  return this.element.find( this._sanitizeSelector( "#" + id ) );
849
913
  }
850
- });
914
+ } );
915
+
916
+ // DEPRECATED
917
+ // TODO: Switch return back to widget declaration at top of file when this is removed
918
+ if ( $.uiBackCompat !== false ) {
919
+
920
+ // Backcompat for ui-tab class (now ui-tabs-tab)
921
+ $.widget( "ui.tabs", $.ui.tabs, {
922
+ _processTabs: function() {
923
+ this._superApply( arguments );
924
+ this._addClass( this.tabs, "ui-tab" );
925
+ }
926
+ } );
927
+ }
928
+
929
+ return $.ui.tabs;
851
930
 
852
- })( jQuery );
931
+ } );