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,32 +1,60 @@
1
- //= require jquery.ui.core
2
- //= require jquery.ui.widget
3
- //= require jquery.ui.position
1
+ //= require jquery-ui/keycode
2
+ //= require jquery-ui/position
3
+ //= require jquery-ui/safe-active-element
4
+ //= require jquery-ui/unique-id
5
+ //= require jquery-ui/version
6
+ //= require jquery-ui/widget
4
7
 
5
8
  /*!
6
- * jQuery UI Menu 1.10.4
9
+ * jQuery UI Menu 1.13.0
7
10
  * http://jqueryui.com
8
11
  *
9
- * Copyright 2014 jQuery Foundation and other contributors
12
+ * Copyright jQuery Foundation and other contributors
10
13
  * Released under the MIT license.
11
14
  * http://jquery.org/license
12
- *
13
- * http://api.jqueryui.com/menu/
14
- *
15
- * Depends:
16
- * jquery.ui.core.js
17
- * jquery.ui.widget.js
18
- * jquery.ui.position.js
19
15
  */
20
- (function( $, undefined ) {
21
16
 
22
- $.widget( "ui.menu", {
23
- version: "1.10.4",
17
+ //>>label: Menu
18
+ //>>group: Widgets
19
+ //>>description: Creates nestable menus.
20
+ //>>docs: http://api.jqueryui.com/menu/
21
+ //>>demos: http://jqueryui.com/menu/
22
+ //>>css.structure: ../../themes/base/core.css
23
+ //>>css.structure: ../../themes/base/menu.css
24
+ //>>css.theme: ../../themes/base/theme.css
25
+
26
+ ( function( factory ) {
27
+ "use strict";
28
+
29
+ if ( typeof define === "function" && define.amd ) {
30
+
31
+ // AMD. Register as an anonymous module.
32
+ define( [
33
+ "jquery",
34
+ "../keycode",
35
+ "../position",
36
+ "../safe-active-element",
37
+ "../unique-id",
38
+ "../version",
39
+ "../widget"
40
+ ], factory );
41
+ } else {
42
+
43
+ // Browser globals
44
+ factory( jQuery );
45
+ }
46
+ } )( function( $ ) {
47
+ "use strict";
48
+
49
+ return $.widget( "ui.menu", {
50
+ version: "1.13.0",
24
51
  defaultElement: "<ul>",
25
52
  delay: 300,
26
53
  options: {
27
54
  icons: {
28
- submenu: "ui-icon-carat-1-e"
55
+ submenu: "ui-icon-caret-1-e"
29
56
  },
57
+ items: "> *",
30
58
  menus: "ul",
31
59
  position: {
32
60
  my: "left top",
@@ -34,7 +62,7 @@ $.widget( "ui.menu", {
34
62
  },
35
63
  role: "menu",
36
64
 
37
- // callbacks
65
+ // Callbacks
38
66
  blur: null,
39
67
  focus: null,
40
68
  select: null
@@ -42,42 +70,31 @@ $.widget( "ui.menu", {
42
70
 
43
71
  _create: function() {
44
72
  this.activeMenu = this.element;
45
- // flag used to prevent firing of the click handler
73
+
74
+ // Flag used to prevent firing of the click handler
46
75
  // as the event bubbles up through nested menus
47
76
  this.mouseHandled = false;
77
+ this.lastMousePosition = { x: null, y: null };
48
78
  this.element
49
79
  .uniqueId()
50
- .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
51
- .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
52
- .attr({
80
+ .attr( {
53
81
  role: this.options.role,
54
82
  tabIndex: 0
55
- })
56
- // need to catch all clicks on disabled menu
57
- // not possible through _on
58
- .bind( "click" + this.eventNamespace, $.proxy(function( event ) {
59
- if ( this.options.disabled ) {
60
- event.preventDefault();
61
- }
62
- }, this ));
83
+ } );
63
84
 
64
- if ( this.options.disabled ) {
65
- this.element
66
- .addClass( "ui-state-disabled" )
67
- .attr( "aria-disabled", "true" );
68
- }
85
+ this._addClass( "ui-menu", "ui-widget ui-widget-content" );
86
+ this._on( {
69
87
 
70
- this._on({
71
88
  // Prevent focus from sticking to links inside menu after clicking
72
89
  // them (focus should always stay on UL during navigation).
73
- "mousedown .ui-menu-item > a": function( event ) {
74
- event.preventDefault();
75
- },
76
- "click .ui-state-disabled > a": function( event ) {
90
+ "mousedown .ui-menu-item": function( event ) {
77
91
  event.preventDefault();
92
+
93
+ this._activateItem( event );
78
94
  },
79
- "click .ui-menu-item:has(a)": function( event ) {
80
- var target = $( event.target ).closest( ".ui-menu-item" );
95
+ "click .ui-menu-item": function( event ) {
96
+ var target = $( event.target );
97
+ var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
81
98
  if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
82
99
  this.select( event );
83
100
 
@@ -89,7 +106,8 @@ $.widget( "ui.menu", {
89
106
  // Open submenu on click
90
107
  if ( target.has( ".ui-menu" ).length ) {
91
108
  this.expand( event );
92
- } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
109
+ } else if ( !this.element.is( ":focus" ) &&
110
+ active.closest( ".ui-menu" ).length ) {
93
111
 
94
112
  // Redirect focus to the menu
95
113
  this.element.trigger( "focus", [ true ] );
@@ -102,94 +120,117 @@ $.widget( "ui.menu", {
102
120
  }
103
121
  }
104
122
  },
105
- "mouseenter .ui-menu-item": function( event ) {
106
- var target = $( event.currentTarget );
107
- // Remove ui-state-active class from siblings of the newly focused menu item
108
- // to avoid a jump caused by adjacent elements both having a class with a border
109
- target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
110
- this.focus( event, target );
111
- },
123
+ "mouseenter .ui-menu-item": "_activateItem",
124
+ "mousemove .ui-menu-item": "_activateItem",
112
125
  mouseleave: "collapseAll",
113
126
  "mouseleave .ui-menu": "collapseAll",
114
127
  focus: function( event, keepActiveItem ) {
128
+
115
129
  // If there's already an active item, keep it active
116
130
  // If not, activate the first item
117
- var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
131
+ var item = this.active || this._menuItems().first();
118
132
 
119
133
  if ( !keepActiveItem ) {
120
134
  this.focus( event, item );
121
135
  }
122
136
  },
123
137
  blur: function( event ) {
124
- this._delay(function() {
125
- if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
138
+ this._delay( function() {
139
+ var notContained = !$.contains(
140
+ this.element[ 0 ],
141
+ $.ui.safeActiveElement( this.document[ 0 ] )
142
+ );
143
+ if ( notContained ) {
126
144
  this.collapseAll( event );
127
145
  }
128
- });
146
+ } );
129
147
  },
130
148
  keydown: "_keydown"
131
- });
149
+ } );
132
150
 
133
151
  this.refresh();
134
152
 
135
153
  // Clicks outside of a menu collapse any open menus
136
154
  this._on( this.document, {
137
155
  click: function( event ) {
138
- if ( !$( event.target ).closest( ".ui-menu" ).length ) {
139
- this.collapseAll( event );
156
+ if ( this._closeOnDocumentClick( event ) ) {
157
+ this.collapseAll( event, true );
140
158
  }
141
159
 
142
160
  // Reset the mouseHandled flag
143
161
  this.mouseHandled = false;
144
162
  }
145
- });
163
+ } );
164
+ },
165
+
166
+ _activateItem: function( event ) {
167
+
168
+ // Ignore mouse events while typeahead is active, see #10458.
169
+ // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
170
+ // is over an item in the menu
171
+ if ( this.previousFilter ) {
172
+ return;
173
+ }
174
+
175
+ // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
176
+ if ( event.clientX === this.lastMousePosition.x &&
177
+ event.clientY === this.lastMousePosition.y ) {
178
+ return;
179
+ }
180
+
181
+ this.lastMousePosition = {
182
+ x: event.clientX,
183
+ y: event.clientY
184
+ };
185
+
186
+ var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
187
+ target = $( event.currentTarget );
188
+
189
+ // Ignore bubbled events on parent items, see #11641
190
+ if ( actualTarget[ 0 ] !== target[ 0 ] ) {
191
+ return;
192
+ }
193
+
194
+ // If the item is already active, there's nothing to do
195
+ if ( target.is( ".ui-state-active" ) ) {
196
+ return;
197
+ }
198
+
199
+ // Remove ui-state-active class from siblings of the newly focused menu item
200
+ // to avoid a jump caused by adjacent elements both having a class with a border
201
+ this._removeClass( target.siblings().children( ".ui-state-active" ),
202
+ null, "ui-state-active" );
203
+ this.focus( event, target );
146
204
  },
147
205
 
148
206
  _destroy: function() {
207
+ var items = this.element.find( ".ui-menu-item" )
208
+ .removeAttr( "role aria-disabled" ),
209
+ submenus = items.children( ".ui-menu-item-wrapper" )
210
+ .removeUniqueId()
211
+ .removeAttr( "tabIndex role aria-haspopup" );
212
+
149
213
  // Destroy (sub)menus
150
214
  this.element
151
215
  .removeAttr( "aria-activedescendant" )
152
216
  .find( ".ui-menu" ).addBack()
153
- .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
154
- .removeAttr( "role" )
155
- .removeAttr( "tabIndex" )
156
- .removeAttr( "aria-labelledby" )
157
- .removeAttr( "aria-expanded" )
158
- .removeAttr( "aria-hidden" )
159
- .removeAttr( "aria-disabled" )
217
+ .removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
218
+ "tabIndex" )
160
219
  .removeUniqueId()
161
220
  .show();
162
221
 
163
- // Destroy menu items
164
- this.element.find( ".ui-menu-item" )
165
- .removeClass( "ui-menu-item" )
166
- .removeAttr( "role" )
167
- .removeAttr( "aria-disabled" )
168
- .children( "a" )
169
- .removeUniqueId()
170
- .removeClass( "ui-corner-all ui-state-hover" )
171
- .removeAttr( "tabIndex" )
172
- .removeAttr( "role" )
173
- .removeAttr( "aria-haspopup" )
174
- .children().each( function() {
175
- var elem = $( this );
176
- if ( elem.data( "ui-menu-submenu-carat" ) ) {
177
- elem.remove();
178
- }
179
- });
180
-
181
- // Destroy menu dividers
182
- this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
222
+ submenus.children().each( function() {
223
+ var elem = $( this );
224
+ if ( elem.data( "ui-menu-submenu-caret" ) ) {
225
+ elem.remove();
226
+ }
227
+ } );
183
228
  },
184
229
 
185
230
  _keydown: function( event ) {
186
- var match, prev, character, skip, regex,
231
+ var match, prev, character, skip,
187
232
  preventDefault = true;
188
233
 
189
- function escape( value ) {
190
- return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
191
- }
192
-
193
234
  switch ( event.keyCode ) {
194
235
  case $.ui.keyCode.PAGE_UP:
195
236
  this.previousPage( event );
@@ -227,9 +268,12 @@ $.widget( "ui.menu", {
227
268
  default:
228
269
  preventDefault = false;
229
270
  prev = this.previousFilter || "";
230
- character = String.fromCharCode( event.keyCode );
231
271
  skip = false;
232
272
 
273
+ // Support number pad values
274
+ character = event.keyCode >= 96 && event.keyCode <= 105 ?
275
+ ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
276
+
233
277
  clearTimeout( this.filterTimer );
234
278
 
235
279
  if ( character === prev ) {
@@ -238,10 +282,7 @@ $.widget( "ui.menu", {
238
282
  character = prev + character;
239
283
  }
240
284
 
241
- regex = new RegExp( "^" + escape( character ), "i" );
242
- match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
243
- return regex.test( $( this ).children( "a" ).text() );
244
- });
285
+ match = this._filterMenuItems( character );
245
286
  match = skip && match.index( this.active.next() ) !== -1 ?
246
287
  this.active.nextAll( ".ui-menu-item" ) :
247
288
  match;
@@ -250,22 +291,15 @@ $.widget( "ui.menu", {
250
291
  // to move down the menu to the first item that starts with that character
251
292
  if ( !match.length ) {
252
293
  character = String.fromCharCode( event.keyCode );
253
- regex = new RegExp( "^" + escape( character ), "i" );
254
- match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
255
- return regex.test( $( this ).children( "a" ).text() );
256
- });
294
+ match = this._filterMenuItems( character );
257
295
  }
258
296
 
259
297
  if ( match.length ) {
260
298
  this.focus( event, match );
261
- if ( match.length > 1 ) {
262
- this.previousFilter = character;
263
- this.filterTimer = this._delay(function() {
264
- delete this.previousFilter;
265
- }, 1000 );
266
- } else {
299
+ this.previousFilter = character;
300
+ this.filterTimer = this._delay( function() {
267
301
  delete this.previousFilter;
268
- }
302
+ }, 1000 );
269
303
  } else {
270
304
  delete this.previousFilter;
271
305
  }
@@ -277,8 +311,8 @@ $.widget( "ui.menu", {
277
311
  },
278
312
 
279
313
  _activate: function( event ) {
280
- if ( !this.active.is( ".ui-state-disabled" ) ) {
281
- if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
314
+ if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
315
+ if ( this.active.children( "[aria-haspopup='true']" ).length ) {
282
316
  this.expand( event );
283
317
  } else {
284
318
  this.select( event );
@@ -287,59 +321,60 @@ $.widget( "ui.menu", {
287
321
  },
288
322
 
289
323
  refresh: function() {
290
- var menus,
324
+ var menus, items, newSubmenus, newItems, newWrappers,
325
+ that = this,
291
326
  icon = this.options.icons.submenu,
292
327
  submenus = this.element.find( this.options.menus );
293
328
 
294
- this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
329
+ this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
295
330
 
296
331
  // Initialize nested menus
297
- submenus.filter( ":not(.ui-menu)" )
298
- .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
332
+ newSubmenus = submenus.filter( ":not(.ui-menu)" )
299
333
  .hide()
300
- .attr({
334
+ .attr( {
301
335
  role: this.options.role,
302
336
  "aria-hidden": "true",
303
337
  "aria-expanded": "false"
304
- })
305
- .each(function() {
338
+ } )
339
+ .each( function() {
306
340
  var menu = $( this ),
307
- item = menu.prev( "a" ),
308
- submenuCarat = $( "<span>" )
309
- .addClass( "ui-menu-icon ui-icon " + icon )
310
- .data( "ui-menu-submenu-carat", true );
341
+ item = menu.prev(),
342
+ submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
311
343
 
344
+ that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
312
345
  item
313
346
  .attr( "aria-haspopup", "true" )
314
- .prepend( submenuCarat );
347
+ .prepend( submenuCaret );
315
348
  menu.attr( "aria-labelledby", item.attr( "id" ) );
316
- });
349
+ } );
350
+
351
+ this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
317
352
 
318
353
  menus = submenus.add( this.element );
354
+ items = menus.find( this.options.items );
355
+
356
+ // Initialize menu-items containing spaces and/or dashes only as dividers
357
+ items.not( ".ui-menu-item" ).each( function() {
358
+ var item = $( this );
359
+ if ( that._isDivider( item ) ) {
360
+ that._addClass( item, "ui-menu-divider", "ui-widget-content" );
361
+ }
362
+ } );
319
363
 
320
364
  // Don't refresh list items that are already adapted
321
- menus.children( ":not(.ui-menu-item):has(a)" )
322
- .addClass( "ui-menu-item" )
323
- .attr( "role", "presentation" )
324
- .children( "a" )
365
+ newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
366
+ newWrappers = newItems.children()
367
+ .not( ".ui-menu" )
325
368
  .uniqueId()
326
- .addClass( "ui-corner-all" )
327
- .attr({
369
+ .attr( {
328
370
  tabIndex: -1,
329
371
  role: this._itemRole()
330
- });
331
-
332
- // Initialize unlinked menu-items containing spaces and/or dashes only as dividers
333
- menus.children( ":not(.ui-menu-item)" ).each(function() {
334
- var item = $( this );
335
- // hyphen, em dash, en dash
336
- if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
337
- item.addClass( "ui-widget-content ui-menu-divider" );
338
- }
339
- });
372
+ } );
373
+ this._addClass( newItems, "ui-menu-item" )
374
+ ._addClass( newWrappers, "ui-menu-item-wrapper" );
340
375
 
341
376
  // Add aria-disabled attribute to any disabled menu item
342
- menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
377
+ items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
343
378
 
344
379
  // If the active item has been removed, blur the menu
345
380
  if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
@@ -356,21 +391,31 @@ $.widget( "ui.menu", {
356
391
 
357
392
  _setOption: function( key, value ) {
358
393
  if ( key === "icons" ) {
359
- this.element.find( ".ui-menu-icon" )
360
- .removeClass( this.options.icons.submenu )
361
- .addClass( value.submenu );
394
+ var icons = this.element.find( ".ui-menu-icon" );
395
+ this._removeClass( icons, null, this.options.icons.submenu )
396
+ ._addClass( icons, null, value.submenu );
362
397
  }
363
398
  this._super( key, value );
364
399
  },
365
400
 
401
+ _setOptionDisabled: function( value ) {
402
+ this._super( value );
403
+
404
+ this.element.attr( "aria-disabled", String( value ) );
405
+ this._toggleClass( null, "ui-state-disabled", !!value );
406
+ },
407
+
366
408
  focus: function( event, item ) {
367
- var nested, focused;
409
+ var nested, focused, activeParent;
368
410
  this.blur( event, event && event.type === "focus" );
369
411
 
370
412
  this._scrollIntoView( item );
371
413
 
372
414
  this.active = item.first();
373
- focused = this.active.children( "a" ).addClass( "ui-state-focus" );
415
+
416
+ focused = this.active.children( ".ui-menu-item-wrapper" );
417
+ this._addClass( focused, null, "ui-state-active" );
418
+
374
419
  // Only update aria-activedescendant if there's a role
375
420
  // otherwise we assume focus is managed elsewhere
376
421
  if ( this.options.role ) {
@@ -378,23 +423,23 @@ $.widget( "ui.menu", {
378
423
  }
379
424
 
380
425
  // Highlight active parent menu item, if any
381
- this.active
426
+ activeParent = this.active
382
427
  .parent()
383
- .closest( ".ui-menu-item" )
384
- .children( "a:first" )
385
- .addClass( "ui-state-active" );
428
+ .closest( ".ui-menu-item" )
429
+ .children( ".ui-menu-item-wrapper" );
430
+ this._addClass( activeParent, null, "ui-state-active" );
386
431
 
387
432
  if ( event && event.type === "keydown" ) {
388
433
  this._close();
389
434
  } else {
390
- this.timer = this._delay(function() {
435
+ this.timer = this._delay( function() {
391
436
  this._close();
392
437
  }, this.delay );
393
438
  }
394
439
 
395
440
  nested = item.children( ".ui-menu" );
396
441
  if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
397
- this._startOpening(nested);
442
+ this._startOpening( nested );
398
443
  }
399
444
  this.activeMenu = item.parent();
400
445
 
@@ -404,12 +449,12 @@ $.widget( "ui.menu", {
404
449
  _scrollIntoView: function( item ) {
405
450
  var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
406
451
  if ( this._hasScroll() ) {
407
- borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
408
- paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
452
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
453
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
409
454
  offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
410
455
  scroll = this.activeMenu.scrollTop();
411
456
  elementHeight = this.activeMenu.height();
412
- itemHeight = item.height();
457
+ itemHeight = item.outerHeight();
413
458
 
414
459
  if ( offset < 0 ) {
415
460
  this.activeMenu.scrollTop( scroll + offset );
@@ -428,29 +473,30 @@ $.widget( "ui.menu", {
428
473
  return;
429
474
  }
430
475
 
431
- this.active.children( "a" ).removeClass( "ui-state-focus" );
432
- this.active = null;
476
+ this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
477
+ null, "ui-state-active" );
433
478
 
434
479
  this._trigger( "blur", event, { item: this.active } );
480
+ this.active = null;
435
481
  },
436
482
 
437
483
  _startOpening: function( submenu ) {
438
484
  clearTimeout( this.timer );
439
485
 
440
486
  // Don't open if already open fixes a Firefox bug that caused a .5 pixel
441
- // shift in the submenu position when mousing over the carat icon
487
+ // shift in the submenu position when mousing over the caret icon
442
488
  if ( submenu.attr( "aria-hidden" ) !== "true" ) {
443
489
  return;
444
490
  }
445
491
 
446
- this.timer = this._delay(function() {
492
+ this.timer = this._delay( function() {
447
493
  this._close();
448
494
  this._open( submenu );
449
495
  }, this.delay );
450
496
  },
451
497
 
452
498
  _open: function( submenu ) {
453
- var position = $.extend({
499
+ var position = $.extend( {
454
500
  of: this.active
455
501
  }, this.options.position );
456
502
 
@@ -468,12 +514,14 @@ $.widget( "ui.menu", {
468
514
 
469
515
  collapseAll: function( event, all ) {
470
516
  clearTimeout( this.timer );
471
- this.timer = this._delay(function() {
517
+ this.timer = this._delay( function() {
518
+
472
519
  // If we were passed an event, look for the submenu that contains the event
473
520
  var currentMenu = all ? this.element :
474
521
  $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
475
522
 
476
- // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
523
+ // If we found no valid submenu ancestor, use the main menu to close all
524
+ // sub menus anyway
477
525
  if ( !currentMenu.length ) {
478
526
  currentMenu = this.element;
479
527
  }
@@ -481,8 +529,12 @@ $.widget( "ui.menu", {
481
529
  this._close( currentMenu );
482
530
 
483
531
  this.blur( event );
532
+
533
+ // Work around active item staying active after menu is blurred
534
+ this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
535
+
484
536
  this.activeMenu = currentMenu;
485
- }, this.delay );
537
+ }, all ? 0 : this.delay );
486
538
  },
487
539
 
488
540
  // With no arguments, closes the currently active menu - if nothing is active
@@ -492,14 +544,20 @@ $.widget( "ui.menu", {
492
544
  startMenu = this.active ? this.active.parent() : this.element;
493
545
  }
494
546
 
495
- startMenu
496
- .find( ".ui-menu" )
497
- .hide()
498
- .attr( "aria-hidden", "true" )
499
- .attr( "aria-expanded", "false" )
500
- .end()
501
- .find( "a.ui-state-active" )
502
- .removeClass( "ui-state-active" );
547
+ startMenu.find( ".ui-menu" )
548
+ .hide()
549
+ .attr( "aria-hidden", "true" )
550
+ .attr( "aria-expanded", "false" );
551
+ },
552
+
553
+ _closeOnDocumentClick: function( event ) {
554
+ return !$( event.target ).closest( ".ui-menu" ).length;
555
+ },
556
+
557
+ _isDivider: function( item ) {
558
+
559
+ // Match hyphen, em dash, en dash
560
+ return !/[^\-\u2014\u2013\s]/.test( item.text() );
503
561
  },
504
562
 
505
563
  collapse: function( event ) {
@@ -512,19 +570,15 @@ $.widget( "ui.menu", {
512
570
  },
513
571
 
514
572
  expand: function( event ) {
515
- var newItem = this.active &&
516
- this.active
517
- .children( ".ui-menu " )
518
- .children( ".ui-menu-item" )
519
- .first();
573
+ var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
520
574
 
521
575
  if ( newItem && newItem.length ) {
522
576
  this._open( newItem.parent() );
523
577
 
524
578
  // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
525
- this._delay(function() {
579
+ this._delay( function() {
526
580
  this.focus( event, newItem );
527
- });
581
+ } );
528
582
  }
529
583
  },
530
584
 
@@ -544,21 +598,27 @@ $.widget( "ui.menu", {
544
598
  return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
545
599
  },
546
600
 
601
+ _menuItems: function( menu ) {
602
+ return ( menu || this.element )
603
+ .find( this.options.items )
604
+ .filter( ".ui-menu-item" );
605
+ },
606
+
547
607
  _move: function( direction, filter, event ) {
548
608
  var next;
549
609
  if ( this.active ) {
550
610
  if ( direction === "first" || direction === "last" ) {
551
611
  next = this.active
552
612
  [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
553
- .eq( -1 );
613
+ .last();
554
614
  } else {
555
615
  next = this.active
556
616
  [ direction + "All" ]( ".ui-menu-item" )
557
- .eq( 0 );
617
+ .first();
558
618
  }
559
619
  }
560
620
  if ( !next || !next.length || !this.active ) {
561
- next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
621
+ next = this._menuItems( this.activeMenu )[ filter ]();
562
622
  }
563
623
 
564
624
  this.focus( event, next );
@@ -576,15 +636,21 @@ $.widget( "ui.menu", {
576
636
  }
577
637
  if ( this._hasScroll() ) {
578
638
  base = this.active.offset().top;
579
- height = this.element.height();
580
- this.active.nextAll( ".ui-menu-item" ).each(function() {
639
+ height = this.element.innerHeight();
640
+
641
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
642
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
643
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
644
+ }
645
+
646
+ this.active.nextAll( ".ui-menu-item" ).each( function() {
581
647
  item = $( this );
582
648
  return item.offset().top - base - height < 0;
583
- });
649
+ } );
584
650
 
585
651
  this.focus( event, item );
586
652
  } else {
587
- this.focus( event, this.activeMenu.children( ".ui-menu-item" )
653
+ this.focus( event, this._menuItems( this.activeMenu )
588
654
  [ !this.active ? "first" : "last" ]() );
589
655
  }
590
656
  },
@@ -600,15 +666,21 @@ $.widget( "ui.menu", {
600
666
  }
601
667
  if ( this._hasScroll() ) {
602
668
  base = this.active.offset().top;
603
- height = this.element.height();
604
- this.active.prevAll( ".ui-menu-item" ).each(function() {
669
+ height = this.element.innerHeight();
670
+
671
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
672
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
673
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
674
+ }
675
+
676
+ this.active.prevAll( ".ui-menu-item" ).each( function() {
605
677
  item = $( this );
606
678
  return item.offset().top - base + height > 0;
607
- });
679
+ } );
608
680
 
609
681
  this.focus( event, item );
610
682
  } else {
611
- this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
683
+ this.focus( event, this._menuItems( this.activeMenu ).first() );
612
684
  }
613
685
  },
614
686
 
@@ -617,6 +689,7 @@ $.widget( "ui.menu", {
617
689
  },
618
690
 
619
691
  select: function( event ) {
692
+
620
693
  // TODO: It should never be possible to not have an active item at this
621
694
  // point, but the tests don't trigger mouseenter before click.
622
695
  this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
@@ -625,7 +698,23 @@ $.widget( "ui.menu", {
625
698
  this.collapseAll( event, true );
626
699
  }
627
700
  this._trigger( "select", event, ui );
701
+ },
702
+
703
+ _filterMenuItems: function( character ) {
704
+ var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
705
+ regex = new RegExp( "^" + escapedCharacter, "i" );
706
+
707
+ return this.activeMenu
708
+ .find( this.options.items )
709
+
710
+ // Only match on items, not dividers or other content (#10571)
711
+ .filter( ".ui-menu-item" )
712
+ .filter( function() {
713
+ return regex.test(
714
+ String.prototype.trim.call(
715
+ $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
716
+ } );
628
717
  }
629
- });
718
+ } );
630
719
 
631
- }( jQuery ));
720
+ } );