jquery-ui-rails 4.2.1 → 8.0.0

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