jquery-ui-rails 4.2.1 → 7.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 (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
+ } );