jquery-ui-rails 4.2.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +1 -1
  3. data/History.md +45 -2
  4. data/README.md +100 -83
  5. data/Rakefile +82 -49
  6. data/VERSIONS.md +10 -0
  7. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  8. data/app/assets/images/jquery-ui/ui-icons_444444_256x240.png +0 -0
  9. data/app/assets/images/jquery-ui/ui-icons_555555_256x240.png +0 -0
  10. data/app/assets/images/jquery-ui/ui-icons_777620_256x240.png +0 -0
  11. data/app/assets/images/jquery-ui/ui-icons_777777_256x240.png +0 -0
  12. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  14. data/app/assets/javascripts/jquery-ui/data.js +39 -0
  15. data/app/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  16. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  17. data/app/assets/javascripts/jquery-ui/effect.js +954 -0
  18. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +76 -0
  19. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +116 -0
  20. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +71 -0
  21. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +75 -0
  22. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +117 -0
  23. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +53 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +95 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +63 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +49 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +70 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +63 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +80 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +199 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +82 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +46 -0
  33. data/app/assets/javascripts/jquery-ui/focusable.js +79 -0
  34. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +81 -0
  35. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +40 -0
  36. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +42 -0
  37. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +42 -0
  38. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +40 -0
  39. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +40 -0
  40. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +41 -0
  41. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +40 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +40 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +40 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +48 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +40 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de-AT.js +41 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +40 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +40 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +40 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +40 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +40 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +40 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +40 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +48 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +39 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +76 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +40 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +48 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +40 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +40 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +42 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +40 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +40 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +40 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +40 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +39 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +40 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +41 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +48 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +40 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +40 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +40 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +51 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +40 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +40 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +40 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +41 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +48 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +48 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +48 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +40 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +40 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +40 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +52 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +40 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +40 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +52 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +53 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +40 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +48 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +47 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +64 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +43 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +40 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +40 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +41 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +40 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +40 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +40 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +40 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +56 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +40 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +40 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +40 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +41 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +40 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +40 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +40 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +40 -0
  110. data/app/assets/javascripts/jquery-ui/jquery-patch.js +58 -0
  111. data/app/assets/javascripts/jquery-ui/jquery-var-for-color.js +24 -0
  112. data/app/assets/javascripts/jquery-ui/keycode.js +51 -0
  113. data/app/assets/javascripts/jquery-ui/labels.js +70 -0
  114. data/app/assets/javascripts/jquery-ui/plugin.js +49 -0
  115. data/app/assets/javascripts/{jquery.ui.position.js → jquery-ui/position.js} +123 -111
  116. data/app/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  117. data/app/assets/javascripts/jquery-ui/tabbable.js +41 -0
  118. data/app/assets/javascripts/jquery-ui/unique-id.js +54 -0
  119. data/app/assets/javascripts/jquery-ui/vendor/jquery-color/jquery.color.js +691 -0
  120. data/app/assets/javascripts/jquery-ui/version.js +20 -0
  121. data/app/assets/javascripts/jquery-ui/widget.js +761 -0
  122. data/app/assets/javascripts/{jquery.ui.accordion.js → jquery-ui/widgets/accordion.js} +263 -209
  123. data/app/assets/javascripts/{jquery.ui.autocomplete.js → jquery-ui/widgets/autocomplete.js} +177 -142
  124. data/app/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  125. data/app/assets/javascripts/jquery-ui/widgets/checkboxradio.js +294 -0
  126. data/app/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  127. data/app/assets/javascripts/jquery-ui/widgets/datepicker.js +2240 -0
  128. data/app/assets/javascripts/jquery-ui/widgets/dialog.js +957 -0
  129. data/app/assets/javascripts/jquery-ui/widgets/draggable.js +1264 -0
  130. data/app/assets/javascripts/jquery-ui/widgets/droppable.js +508 -0
  131. data/app/assets/javascripts/{jquery.ui.menu.js → jquery-ui/widgets/menu.js} +276 -189
  132. data/app/assets/javascripts/jquery-ui/widgets/mouse.js +226 -0
  133. data/app/assets/javascripts/jquery-ui/widgets/progressbar.js +184 -0
  134. data/app/assets/javascripts/jquery-ui/widgets/resizable.js +1281 -0
  135. data/app/assets/javascripts/jquery-ui/widgets/selectable.js +321 -0
  136. data/app/assets/javascripts/jquery-ui/widgets/selectmenu.js +675 -0
  137. data/app/assets/javascripts/{jquery.ui.slider.js → jquery-ui/widgets/slider.js} +256 -176
  138. data/app/assets/javascripts/jquery-ui/widgets/sortable.js +1614 -0
  139. data/app/assets/javascripts/{jquery.ui.spinner.js → jquery-ui/widgets/spinner.js} +200 -137
  140. data/app/assets/javascripts/{jquery.ui.tabs.js → jquery-ui/widgets/tabs.js} +322 -277
  141. data/app/assets/javascripts/jquery-ui/widgets/tooltip.js +528 -0
  142. data/app/assets/javascripts/jquery-ui.js +52 -0
  143. data/app/assets/stylesheets/jquery-ui/accordion.css +26 -0
  144. data/app/assets/stylesheets/jquery-ui/all.css +14 -0
  145. data/app/assets/stylesheets/jquery-ui/autocomplete.css +19 -0
  146. data/app/assets/stylesheets/jquery-ui/base.css +32 -0
  147. data/app/assets/stylesheets/jquery-ui/button.css +80 -0
  148. data/app/assets/stylesheets/jquery-ui/checkboxradio.css +37 -0
  149. data/app/assets/stylesheets/jquery-ui/controlgroup.css +65 -0
  150. data/app/assets/stylesheets/{jquery.ui.core.css.erb → jquery-ui/core.css} +15 -12
  151. data/app/assets/stylesheets/{jquery.ui.datepicker.css.erb → jquery-ui/datepicker.css} +17 -8
  152. data/app/assets/stylesheets/{jquery.ui.dialog.css.erb → jquery-ui/dialog.css} +43 -15
  153. data/app/assets/stylesheets/jquery-ui/draggable.css +14 -0
  154. data/app/assets/stylesheets/jquery-ui/menu.css +65 -0
  155. data/app/assets/stylesheets/jquery-ui/progressbar.css +30 -0
  156. data/app/assets/stylesheets/{jquery.ui.resizable.css.erb → jquery-ui/resizable.css} +6 -6
  157. data/app/assets/stylesheets/jquery-ui/selectable.css +19 -0
  158. data/app/assets/stylesheets/jquery-ui/selectmenu.css +53 -0
  159. data/app/assets/stylesheets/{jquery.ui.slider.css.erb → jquery-ui/slider.css} +8 -14
  160. data/app/assets/stylesheets/jquery-ui/sortable.css +14 -0
  161. data/app/assets/stylesheets/{jquery.ui.spinner.css.erb → jquery-ui/spinner.css} +12 -27
  162. data/app/assets/stylesheets/{jquery.ui.tabs.css.erb → jquery-ui/tabs.css} +6 -7
  163. data/app/assets/stylesheets/{jquery.ui.theme.css.erb → jquery-ui/theme.css.erb} +121 -102
  164. data/app/assets/stylesheets/jquery-ui/tooltip.css +22 -0
  165. data/app/assets/stylesheets/jquery-ui.css +1 -0
  166. data/lib/jquery/ui/rails/version.rb +2 -2
  167. metadata +178 -169
  168. data/app/assets/images/jquery-ui/animated-overlay.gif +0 -0
  169. data/app/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  170. data/app/assets/images/jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  171. data/app/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  172. data/app/assets/images/jquery-ui/ui-bg_glass_75_dadada_1x400.png +0 -0
  173. data/app/assets/images/jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  174. data/app/assets/images/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  175. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  176. data/app/assets/images/jquery-ui/ui-icons_222222_256x240.png +0 -0
  177. data/app/assets/images/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
  178. data/app/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  179. data/app/assets/images/jquery-ui/ui-icons_888888_256x240.png +0 -0
  180. data/app/assets/images/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
  181. data/app/assets/javascripts/jquery.ui.all.js +0 -34
  182. data/app/assets/javascripts/jquery.ui.button.js +0 -398
  183. data/app/assets/javascripts/jquery.ui.core.js +0 -320
  184. data/app/assets/javascripts/jquery.ui.datepicker-af.js +0 -23
  185. data/app/assets/javascripts/jquery.ui.datepicker-ar-DZ.js +0 -23
  186. data/app/assets/javascripts/jquery.ui.datepicker-ar.js +0 -23
  187. data/app/assets/javascripts/jquery.ui.datepicker-az.js +0 -23
  188. data/app/assets/javascripts/jquery.ui.datepicker-be.js +0 -23
  189. data/app/assets/javascripts/jquery.ui.datepicker-bg.js +0 -24
  190. data/app/assets/javascripts/jquery.ui.datepicker-bs.js +0 -23
  191. data/app/assets/javascripts/jquery.ui.datepicker-ca.js +0 -23
  192. data/app/assets/javascripts/jquery.ui.datepicker-cs.js +0 -23
  193. data/app/assets/javascripts/jquery.ui.datepicker-cy-GB.js +0 -23
  194. data/app/assets/javascripts/jquery.ui.datepicker-da.js +0 -23
  195. data/app/assets/javascripts/jquery.ui.datepicker-de.js +0 -23
  196. data/app/assets/javascripts/jquery.ui.datepicker-el.js +0 -23
  197. data/app/assets/javascripts/jquery.ui.datepicker-en-AU.js +0 -23
  198. data/app/assets/javascripts/jquery.ui.datepicker-en-GB.js +0 -23
  199. data/app/assets/javascripts/jquery.ui.datepicker-en-NZ.js +0 -23
  200. data/app/assets/javascripts/jquery.ui.datepicker-eo.js +0 -23
  201. data/app/assets/javascripts/jquery.ui.datepicker-es.js +0 -23
  202. data/app/assets/javascripts/jquery.ui.datepicker-et.js +0 -23
  203. data/app/assets/javascripts/jquery.ui.datepicker-eu.js +0 -23
  204. data/app/assets/javascripts/jquery.ui.datepicker-fa.js +0 -59
  205. data/app/assets/javascripts/jquery.ui.datepicker-fi.js +0 -23
  206. data/app/assets/javascripts/jquery.ui.datepicker-fo.js +0 -23
  207. data/app/assets/javascripts/jquery.ui.datepicker-fr-CA.js +0 -23
  208. data/app/assets/javascripts/jquery.ui.datepicker-fr-CH.js +0 -23
  209. data/app/assets/javascripts/jquery.ui.datepicker-fr.js +0 -25
  210. data/app/assets/javascripts/jquery.ui.datepicker-gl.js +0 -23
  211. data/app/assets/javascripts/jquery.ui.datepicker-he.js +0 -23
  212. data/app/assets/javascripts/jquery.ui.datepicker-hi.js +0 -23
  213. data/app/assets/javascripts/jquery.ui.datepicker-hr.js +0 -23
  214. data/app/assets/javascripts/jquery.ui.datepicker-hu.js +0 -23
  215. data/app/assets/javascripts/jquery.ui.datepicker-hy.js +0 -23
  216. data/app/assets/javascripts/jquery.ui.datepicker-id.js +0 -23
  217. data/app/assets/javascripts/jquery.ui.datepicker-is.js +0 -23
  218. data/app/assets/javascripts/jquery.ui.datepicker-it.js +0 -23
  219. data/app/assets/javascripts/jquery.ui.datepicker-ja.js +0 -23
  220. data/app/assets/javascripts/jquery.ui.datepicker-ka.js +0 -21
  221. data/app/assets/javascripts/jquery.ui.datepicker-kk.js +0 -23
  222. data/app/assets/javascripts/jquery.ui.datepicker-km.js +0 -23
  223. data/app/assets/javascripts/jquery.ui.datepicker-ko.js +0 -23
  224. data/app/assets/javascripts/jquery.ui.datepicker-ky.js +0 -24
  225. data/app/assets/javascripts/jquery.ui.datepicker-lb.js +0 -23
  226. data/app/assets/javascripts/jquery.ui.datepicker-lt.js +0 -23
  227. data/app/assets/javascripts/jquery.ui.datepicker-lv.js +0 -23
  228. data/app/assets/javascripts/jquery.ui.datepicker-mk.js +0 -23
  229. data/app/assets/javascripts/jquery.ui.datepicker-ml.js +0 -23
  230. data/app/assets/javascripts/jquery.ui.datepicker-ms.js +0 -23
  231. data/app/assets/javascripts/jquery.ui.datepicker-nb.js +0 -22
  232. data/app/assets/javascripts/jquery.ui.datepicker-nl-BE.js +0 -23
  233. data/app/assets/javascripts/jquery.ui.datepicker-nl.js +0 -23
  234. data/app/assets/javascripts/jquery.ui.datepicker-nn.js +0 -22
  235. data/app/assets/javascripts/jquery.ui.datepicker-no.js +0 -23
  236. data/app/assets/javascripts/jquery.ui.datepicker-pl.js +0 -23
  237. data/app/assets/javascripts/jquery.ui.datepicker-pt-BR.js +0 -23
  238. data/app/assets/javascripts/jquery.ui.datepicker-pt.js +0 -22
  239. data/app/assets/javascripts/jquery.ui.datepicker-rm.js +0 -21
  240. data/app/assets/javascripts/jquery.ui.datepicker-ro.js +0 -26
  241. data/app/assets/javascripts/jquery.ui.datepicker-ru.js +0 -23
  242. data/app/assets/javascripts/jquery.ui.datepicker-sk.js +0 -23
  243. data/app/assets/javascripts/jquery.ui.datepicker-sl.js +0 -24
  244. data/app/assets/javascripts/jquery.ui.datepicker-sq.js +0 -23
  245. data/app/assets/javascripts/jquery.ui.datepicker-sr-SR.js +0 -23
  246. data/app/assets/javascripts/jquery.ui.datepicker-sr.js +0 -23
  247. data/app/assets/javascripts/jquery.ui.datepicker-sv.js +0 -23
  248. data/app/assets/javascripts/jquery.ui.datepicker-ta.js +0 -23
  249. data/app/assets/javascripts/jquery.ui.datepicker-th.js +0 -23
  250. data/app/assets/javascripts/jquery.ui.datepicker-tj.js +0 -23
  251. data/app/assets/javascripts/jquery.ui.datepicker-tr.js +0 -23
  252. data/app/assets/javascripts/jquery.ui.datepicker-uk.js +0 -24
  253. data/app/assets/javascripts/jquery.ui.datepicker-vi.js +0 -23
  254. data/app/assets/javascripts/jquery.ui.datepicker-zh-CN.js +0 -23
  255. data/app/assets/javascripts/jquery.ui.datepicker-zh-HK.js +0 -23
  256. data/app/assets/javascripts/jquery.ui.datepicker-zh-TW.js +0 -23
  257. data/app/assets/javascripts/jquery.ui.datepicker.js +0 -2040
  258. data/app/assets/javascripts/jquery.ui.dialog.js +0 -830
  259. data/app/assets/javascripts/jquery.ui.draggable.js +0 -962
  260. data/app/assets/javascripts/jquery.ui.droppable.js +0 -394
  261. data/app/assets/javascripts/jquery.ui.effect-blind.js +0 -84
  262. data/app/assets/javascripts/jquery.ui.effect-bounce.js +0 -115
  263. data/app/assets/javascripts/jquery.ui.effect-clip.js +0 -69
  264. data/app/assets/javascripts/jquery.ui.effect-drop.js +0 -67
  265. data/app/assets/javascripts/jquery.ui.effect-explode.js +0 -99
  266. data/app/assets/javascripts/jquery.ui.effect-fade.js +0 -32
  267. data/app/assets/javascripts/jquery.ui.effect-fold.js +0 -78
  268. data/app/assets/javascripts/jquery.ui.effect-highlight.js +0 -52
  269. data/app/assets/javascripts/jquery.ui.effect-pulsate.js +0 -65
  270. data/app/assets/javascripts/jquery.ui.effect-scale.js +0 -320
  271. data/app/assets/javascripts/jquery.ui.effect-shake.js +0 -76
  272. data/app/assets/javascripts/jquery.ui.effect-slide.js +0 -66
  273. data/app/assets/javascripts/jquery.ui.effect-transfer.js +0 -49
  274. data/app/assets/javascripts/jquery.ui.effect.all.js +0 -14
  275. data/app/assets/javascripts/jquery.ui.effect.js +0 -1289
  276. data/app/assets/javascripts/jquery.ui.mouse.js +0 -172
  277. data/app/assets/javascripts/jquery.ui.progressbar.js +0 -148
  278. data/app/assets/javascripts/jquery.ui.resizable.js +0 -982
  279. data/app/assets/javascripts/jquery.ui.selectable.js +0 -281
  280. data/app/assets/javascripts/jquery.ui.sortable.js +0 -1293
  281. data/app/assets/javascripts/jquery.ui.tooltip.js +0 -406
  282. data/app/assets/javascripts/jquery.ui.widget.js +0 -521
  283. data/app/assets/stylesheets/jquery.ui.accordion.css.erb +0 -42
  284. data/app/assets/stylesheets/jquery.ui.all.css.erb +0 -14
  285. data/app/assets/stylesheets/jquery.ui.autocomplete.css.erb +0 -21
  286. data/app/assets/stylesheets/jquery.ui.base.css.erb +0 -27
  287. data/app/assets/stylesheets/jquery.ui.button.css.erb +0 -118
  288. data/app/assets/stylesheets/jquery.ui.menu.css.erb +0 -83
  289. data/app/assets/stylesheets/jquery.ui.progressbar.css.erb +0 -37
  290. data/app/assets/stylesheets/jquery.ui.selectable.css.erb +0 -17
  291. data/app/assets/stylesheets/jquery.ui.tooltip.css.erb +0 -25
@@ -1,32 +1,58 @@
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/unique-id
4
+ //= require jquery-ui/version
5
+ //= require jquery-ui/widget
4
6
 
5
7
  /*!
6
- * jQuery UI Menu 1.10.4
7
- * http://jqueryui.com
8
+ * jQuery UI Menu 1.14.1
9
+ * https://jqueryui.com
8
10
  *
9
- * Copyright 2014 jQuery Foundation and other contributors
11
+ * Copyright OpenJS Foundation and other contributors
10
12
  * Released under the MIT license.
11
- * 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
13
+ * https://jquery.org/license
19
14
  */
20
- (function( $, undefined ) {
21
15
 
22
- $.widget( "ui.menu", {
23
- version: "1.10.4",
16
+ //>>label: Menu
17
+ //>>group: Widgets
18
+ //>>description: Creates nestable menus.
19
+ //>>docs: https://api.jqueryui.com/menu/
20
+ //>>demos: https://jqueryui.com/menu/
21
+ //>>css.structure: ../../themes/base/core.css
22
+ //>>css.structure: ../../themes/base/menu.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
+ "../position",
35
+ "../unique-id",
36
+ "../version",
37
+ "../widget"
38
+ ], factory );
39
+ } else {
40
+
41
+ // Browser globals
42
+ factory( jQuery );
43
+ }
44
+ } )( function( $ ) {
45
+ "use strict";
46
+
47
+ return $.widget( "ui.menu", {
48
+ version: "1.14.1",
24
49
  defaultElement: "<ul>",
25
50
  delay: 300,
26
51
  options: {
27
52
  icons: {
28
- submenu: "ui-icon-carat-1-e"
53
+ submenu: "ui-icon-caret-1-e"
29
54
  },
55
+ items: "> *",
30
56
  menus: "ul",
31
57
  position: {
32
58
  my: "left top",
@@ -34,7 +60,7 @@ $.widget( "ui.menu", {
34
60
  },
35
61
  role: "menu",
36
62
 
37
- // callbacks
63
+ // Callbacks
38
64
  blur: null,
39
65
  focus: null,
40
66
  select: null
@@ -42,42 +68,31 @@ $.widget( "ui.menu", {
42
68
 
43
69
  _create: function() {
44
70
  this.activeMenu = this.element;
45
- // flag used to prevent firing of the click handler
71
+
72
+ // Flag used to prevent firing of the click handler
46
73
  // as the event bubbles up through nested menus
47
74
  this.mouseHandled = false;
75
+ this.lastMousePosition = { x: null, y: null };
48
76
  this.element
49
77
  .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({
78
+ .attr( {
53
79
  role: this.options.role,
54
80
  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 ));
81
+ } );
63
82
 
64
- if ( this.options.disabled ) {
65
- this.element
66
- .addClass( "ui-state-disabled" )
67
- .attr( "aria-disabled", "true" );
68
- }
83
+ this._addClass( "ui-menu", "ui-widget ui-widget-content" );
84
+ this._on( {
69
85
 
70
- this._on({
71
86
  // Prevent focus from sticking to links inside menu after clicking
72
87
  // 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 ) {
88
+ "mousedown .ui-menu-item": function( event ) {
77
89
  event.preventDefault();
90
+
91
+ this._activateItem( event );
78
92
  },
79
- "click .ui-menu-item:has(a)": function( event ) {
80
- var target = $( event.target ).closest( ".ui-menu-item" );
93
+ "click .ui-menu-item": function( event ) {
94
+ var target = $( event.target );
95
+ var active = $( this.document[ 0 ].activeElement );
81
96
  if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
82
97
  this.select( event );
83
98
 
@@ -89,7 +104,8 @@ $.widget( "ui.menu", {
89
104
  // Open submenu on click
90
105
  if ( target.has( ".ui-menu" ).length ) {
91
106
  this.expand( event );
92
- } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
107
+ } else if ( !this.element.is( ":focus" ) &&
108
+ active.closest( ".ui-menu" ).length ) {
93
109
 
94
110
  // Redirect focus to the menu
95
111
  this.element.trigger( "focus", [ true ] );
@@ -102,94 +118,117 @@ $.widget( "ui.menu", {
102
118
  }
103
119
  }
104
120
  },
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
- },
121
+ "mouseenter .ui-menu-item": "_activateItem",
122
+ "mousemove .ui-menu-item": "_activateItem",
112
123
  mouseleave: "collapseAll",
113
124
  "mouseleave .ui-menu": "collapseAll",
114
125
  focus: function( event, keepActiveItem ) {
126
+
115
127
  // If there's already an active item, keep it active
116
128
  // If not, activate the first item
117
- var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
129
+ var item = this.active || this._menuItems().first();
118
130
 
119
131
  if ( !keepActiveItem ) {
120
132
  this.focus( event, item );
121
133
  }
122
134
  },
123
135
  blur: function( event ) {
124
- this._delay(function() {
125
- if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
136
+ this._delay( function() {
137
+ var notContained = !$.contains(
138
+ this.element[ 0 ],
139
+ this.document[ 0 ].activeElement
140
+ );
141
+ if ( notContained ) {
126
142
  this.collapseAll( event );
127
143
  }
128
- });
144
+ } );
129
145
  },
130
146
  keydown: "_keydown"
131
- });
147
+ } );
132
148
 
133
149
  this.refresh();
134
150
 
135
151
  // Clicks outside of a menu collapse any open menus
136
152
  this._on( this.document, {
137
153
  click: function( event ) {
138
- if ( !$( event.target ).closest( ".ui-menu" ).length ) {
139
- this.collapseAll( event );
154
+ if ( this._closeOnDocumentClick( event ) ) {
155
+ this.collapseAll( event, true );
140
156
  }
141
157
 
142
158
  // Reset the mouseHandled flag
143
159
  this.mouseHandled = false;
144
160
  }
145
- });
161
+ } );
162
+ },
163
+
164
+ _activateItem: function( event ) {
165
+
166
+ // Ignore mouse events while typeahead is active, see #10458.
167
+ // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
168
+ // is over an item in the menu
169
+ if ( this.previousFilter ) {
170
+ return;
171
+ }
172
+
173
+ // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
174
+ if ( event.clientX === this.lastMousePosition.x &&
175
+ event.clientY === this.lastMousePosition.y ) {
176
+ return;
177
+ }
178
+
179
+ this.lastMousePosition = {
180
+ x: event.clientX,
181
+ y: event.clientY
182
+ };
183
+
184
+ var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
185
+ target = $( event.currentTarget );
186
+
187
+ // Ignore bubbled events on parent items, see #11641
188
+ if ( actualTarget[ 0 ] !== target[ 0 ] ) {
189
+ return;
190
+ }
191
+
192
+ // If the item is already active, there's nothing to do
193
+ if ( target.is( ".ui-state-active" ) ) {
194
+ return;
195
+ }
196
+
197
+ // Remove ui-state-active class from siblings of the newly focused menu item
198
+ // to avoid a jump caused by adjacent elements both having a class with a border
199
+ this._removeClass( target.siblings().children( ".ui-state-active" ),
200
+ null, "ui-state-active" );
201
+ this.focus( event, target );
146
202
  },
147
203
 
148
204
  _destroy: function() {
205
+ var items = this.element.find( ".ui-menu-item" )
206
+ .removeAttr( "role aria-disabled" ),
207
+ submenus = items.children( ".ui-menu-item-wrapper" )
208
+ .removeUniqueId()
209
+ .removeAttr( "tabIndex role aria-haspopup" );
210
+
149
211
  // Destroy (sub)menus
150
212
  this.element
151
213
  .removeAttr( "aria-activedescendant" )
152
214
  .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" )
215
+ .removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
216
+ "tabIndex" )
160
217
  .removeUniqueId()
161
218
  .show();
162
219
 
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" );
220
+ submenus.children().each( function() {
221
+ var elem = $( this );
222
+ if ( elem.data( "ui-menu-submenu-caret" ) ) {
223
+ elem.remove();
224
+ }
225
+ } );
183
226
  },
184
227
 
185
228
  _keydown: function( event ) {
186
- var match, prev, character, skip, regex,
229
+ var match, prev, character, skip,
187
230
  preventDefault = true;
188
231
 
189
- function escape( value ) {
190
- return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
191
- }
192
-
193
232
  switch ( event.keyCode ) {
194
233
  case $.ui.keyCode.PAGE_UP:
195
234
  this.previousPage( event );
@@ -227,9 +266,12 @@ $.widget( "ui.menu", {
227
266
  default:
228
267
  preventDefault = false;
229
268
  prev = this.previousFilter || "";
230
- character = String.fromCharCode( event.keyCode );
231
269
  skip = false;
232
270
 
271
+ // Support number pad values
272
+ character = event.keyCode >= 96 && event.keyCode <= 105 ?
273
+ ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
274
+
233
275
  clearTimeout( this.filterTimer );
234
276
 
235
277
  if ( character === prev ) {
@@ -238,10 +280,7 @@ $.widget( "ui.menu", {
238
280
  character = prev + character;
239
281
  }
240
282
 
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
- });
283
+ match = this._filterMenuItems( character );
245
284
  match = skip && match.index( this.active.next() ) !== -1 ?
246
285
  this.active.nextAll( ".ui-menu-item" ) :
247
286
  match;
@@ -250,22 +289,15 @@ $.widget( "ui.menu", {
250
289
  // to move down the menu to the first item that starts with that character
251
290
  if ( !match.length ) {
252
291
  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
- });
292
+ match = this._filterMenuItems( character );
257
293
  }
258
294
 
259
295
  if ( match.length ) {
260
296
  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 {
297
+ this.previousFilter = character;
298
+ this.filterTimer = this._delay( function() {
267
299
  delete this.previousFilter;
268
- }
300
+ }, 1000 );
269
301
  } else {
270
302
  delete this.previousFilter;
271
303
  }
@@ -277,8 +309,8 @@ $.widget( "ui.menu", {
277
309
  },
278
310
 
279
311
  _activate: function( event ) {
280
- if ( !this.active.is( ".ui-state-disabled" ) ) {
281
- if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
312
+ if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
313
+ if ( this.active.children( "[aria-haspopup='true']" ).length ) {
282
314
  this.expand( event );
283
315
  } else {
284
316
  this.select( event );
@@ -287,59 +319,60 @@ $.widget( "ui.menu", {
287
319
  },
288
320
 
289
321
  refresh: function() {
290
- var menus,
322
+ var menus, items, newSubmenus, newItems, newWrappers,
323
+ that = this,
291
324
  icon = this.options.icons.submenu,
292
325
  submenus = this.element.find( this.options.menus );
293
326
 
294
- this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
327
+ this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
295
328
 
296
329
  // Initialize nested menus
297
- submenus.filter( ":not(.ui-menu)" )
298
- .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
330
+ newSubmenus = submenus.filter( ":not(.ui-menu)" )
299
331
  .hide()
300
- .attr({
332
+ .attr( {
301
333
  role: this.options.role,
302
334
  "aria-hidden": "true",
303
335
  "aria-expanded": "false"
304
- })
305
- .each(function() {
336
+ } )
337
+ .each( function() {
306
338
  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 );
339
+ item = menu.prev(),
340
+ submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
311
341
 
342
+ that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
312
343
  item
313
344
  .attr( "aria-haspopup", "true" )
314
- .prepend( submenuCarat );
345
+ .prepend( submenuCaret );
315
346
  menu.attr( "aria-labelledby", item.attr( "id" ) );
316
- });
347
+ } );
348
+
349
+ this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
317
350
 
318
351
  menus = submenus.add( this.element );
352
+ items = menus.find( this.options.items );
353
+
354
+ // Initialize menu-items containing spaces and/or dashes only as dividers
355
+ items.not( ".ui-menu-item" ).each( function() {
356
+ var item = $( this );
357
+ if ( that._isDivider( item ) ) {
358
+ that._addClass( item, "ui-menu-divider", "ui-widget-content" );
359
+ }
360
+ } );
319
361
 
320
362
  // 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" )
363
+ newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
364
+ newWrappers = newItems.children()
365
+ .not( ".ui-menu" )
325
366
  .uniqueId()
326
- .addClass( "ui-corner-all" )
327
- .attr({
367
+ .attr( {
328
368
  tabIndex: -1,
329
369
  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
- });
370
+ } );
371
+ this._addClass( newItems, "ui-menu-item" )
372
+ ._addClass( newWrappers, "ui-menu-item-wrapper" );
340
373
 
341
374
  // Add aria-disabled attribute to any disabled menu item
342
- menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
375
+ items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
343
376
 
344
377
  // If the active item has been removed, blur the menu
345
378
  if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
@@ -356,21 +389,31 @@ $.widget( "ui.menu", {
356
389
 
357
390
  _setOption: function( key, value ) {
358
391
  if ( key === "icons" ) {
359
- this.element.find( ".ui-menu-icon" )
360
- .removeClass( this.options.icons.submenu )
361
- .addClass( value.submenu );
392
+ var icons = this.element.find( ".ui-menu-icon" );
393
+ this._removeClass( icons, null, this.options.icons.submenu )
394
+ ._addClass( icons, null, value.submenu );
362
395
  }
363
396
  this._super( key, value );
364
397
  },
365
398
 
399
+ _setOptionDisabled: function( value ) {
400
+ this._super( value );
401
+
402
+ this.element.attr( "aria-disabled", String( value ) );
403
+ this._toggleClass( null, "ui-state-disabled", !!value );
404
+ },
405
+
366
406
  focus: function( event, item ) {
367
- var nested, focused;
407
+ var nested, focused, activeParent;
368
408
  this.blur( event, event && event.type === "focus" );
369
409
 
370
410
  this._scrollIntoView( item );
371
411
 
372
412
  this.active = item.first();
373
- focused = this.active.children( "a" ).addClass( "ui-state-focus" );
413
+
414
+ focused = this.active.children( ".ui-menu-item-wrapper" );
415
+ this._addClass( focused, null, "ui-state-active" );
416
+
374
417
  // Only update aria-activedescendant if there's a role
375
418
  // otherwise we assume focus is managed elsewhere
376
419
  if ( this.options.role ) {
@@ -378,23 +421,23 @@ $.widget( "ui.menu", {
378
421
  }
379
422
 
380
423
  // Highlight active parent menu item, if any
381
- this.active
424
+ activeParent = this.active
382
425
  .parent()
383
- .closest( ".ui-menu-item" )
384
- .children( "a:first" )
385
- .addClass( "ui-state-active" );
426
+ .closest( ".ui-menu-item" )
427
+ .children( ".ui-menu-item-wrapper" );
428
+ this._addClass( activeParent, null, "ui-state-active" );
386
429
 
387
430
  if ( event && event.type === "keydown" ) {
388
431
  this._close();
389
432
  } else {
390
- this.timer = this._delay(function() {
433
+ this.timer = this._delay( function() {
391
434
  this._close();
392
435
  }, this.delay );
393
436
  }
394
437
 
395
438
  nested = item.children( ".ui-menu" );
396
439
  if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
397
- this._startOpening(nested);
440
+ this._startOpening( nested );
398
441
  }
399
442
  this.activeMenu = item.parent();
400
443
 
@@ -404,12 +447,12 @@ $.widget( "ui.menu", {
404
447
  _scrollIntoView: function( item ) {
405
448
  var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
406
449
  if ( this._hasScroll() ) {
407
- borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
408
- paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
450
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
451
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
409
452
  offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
410
453
  scroll = this.activeMenu.scrollTop();
411
454
  elementHeight = this.activeMenu.height();
412
- itemHeight = item.height();
455
+ itemHeight = item.outerHeight();
413
456
 
414
457
  if ( offset < 0 ) {
415
458
  this.activeMenu.scrollTop( scroll + offset );
@@ -428,29 +471,30 @@ $.widget( "ui.menu", {
428
471
  return;
429
472
  }
430
473
 
431
- this.active.children( "a" ).removeClass( "ui-state-focus" );
432
- this.active = null;
474
+ this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
475
+ null, "ui-state-active" );
433
476
 
434
477
  this._trigger( "blur", event, { item: this.active } );
478
+ this.active = null;
435
479
  },
436
480
 
437
481
  _startOpening: function( submenu ) {
438
482
  clearTimeout( this.timer );
439
483
 
440
484
  // 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
485
+ // shift in the submenu position when mousing over the caret icon
442
486
  if ( submenu.attr( "aria-hidden" ) !== "true" ) {
443
487
  return;
444
488
  }
445
489
 
446
- this.timer = this._delay(function() {
490
+ this.timer = this._delay( function() {
447
491
  this._close();
448
492
  this._open( submenu );
449
493
  }, this.delay );
450
494
  },
451
495
 
452
496
  _open: function( submenu ) {
453
- var position = $.extend({
497
+ var position = $.extend( {
454
498
  of: this.active
455
499
  }, this.options.position );
456
500
 
@@ -468,12 +512,14 @@ $.widget( "ui.menu", {
468
512
 
469
513
  collapseAll: function( event, all ) {
470
514
  clearTimeout( this.timer );
471
- this.timer = this._delay(function() {
515
+ this.timer = this._delay( function() {
516
+
472
517
  // If we were passed an event, look for the submenu that contains the event
473
518
  var currentMenu = all ? this.element :
474
519
  $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
475
520
 
476
- // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
521
+ // If we found no valid submenu ancestor, use the main menu to close all
522
+ // sub menus anyway
477
523
  if ( !currentMenu.length ) {
478
524
  currentMenu = this.element;
479
525
  }
@@ -481,8 +527,12 @@ $.widget( "ui.menu", {
481
527
  this._close( currentMenu );
482
528
 
483
529
  this.blur( event );
530
+
531
+ // Work around active item staying active after menu is blurred
532
+ this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
533
+
484
534
  this.activeMenu = currentMenu;
485
- }, this.delay );
535
+ }, all ? 0 : this.delay );
486
536
  },
487
537
 
488
538
  // With no arguments, closes the currently active menu - if nothing is active
@@ -492,14 +542,20 @@ $.widget( "ui.menu", {
492
542
  startMenu = this.active ? this.active.parent() : this.element;
493
543
  }
494
544
 
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" );
545
+ startMenu.find( ".ui-menu" )
546
+ .hide()
547
+ .attr( "aria-hidden", "true" )
548
+ .attr( "aria-expanded", "false" );
549
+ },
550
+
551
+ _closeOnDocumentClick: function( event ) {
552
+ return !$( event.target ).closest( ".ui-menu" ).length;
553
+ },
554
+
555
+ _isDivider: function( item ) {
556
+
557
+ // Match hyphen, em dash, en dash
558
+ return !/[^\-\u2014\u2013\s]/.test( item.text() );
503
559
  },
504
560
 
505
561
  collapse: function( event ) {
@@ -512,19 +568,15 @@ $.widget( "ui.menu", {
512
568
  },
513
569
 
514
570
  expand: function( event ) {
515
- var newItem = this.active &&
516
- this.active
517
- .children( ".ui-menu " )
518
- .children( ".ui-menu-item" )
519
- .first();
571
+ var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
520
572
 
521
573
  if ( newItem && newItem.length ) {
522
574
  this._open( newItem.parent() );
523
575
 
524
576
  // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
525
- this._delay(function() {
577
+ this._delay( function() {
526
578
  this.focus( event, newItem );
527
- });
579
+ } );
528
580
  }
529
581
  },
530
582
 
@@ -544,21 +596,27 @@ $.widget( "ui.menu", {
544
596
  return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
545
597
  },
546
598
 
599
+ _menuItems: function( menu ) {
600
+ return ( menu || this.element )
601
+ .find( this.options.items )
602
+ .filter( ".ui-menu-item" );
603
+ },
604
+
547
605
  _move: function( direction, filter, event ) {
548
606
  var next;
549
607
  if ( this.active ) {
550
608
  if ( direction === "first" || direction === "last" ) {
551
609
  next = this.active
552
610
  [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
553
- .eq( -1 );
611
+ .last();
554
612
  } else {
555
613
  next = this.active
556
614
  [ direction + "All" ]( ".ui-menu-item" )
557
- .eq( 0 );
615
+ .first();
558
616
  }
559
617
  }
560
618
  if ( !next || !next.length || !this.active ) {
561
- next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
619
+ next = this._menuItems( this.activeMenu )[ filter ]();
562
620
  }
563
621
 
564
622
  this.focus( event, next );
@@ -576,15 +634,21 @@ $.widget( "ui.menu", {
576
634
  }
577
635
  if ( this._hasScroll() ) {
578
636
  base = this.active.offset().top;
579
- height = this.element.height();
580
- this.active.nextAll( ".ui-menu-item" ).each(function() {
637
+ height = this.element.innerHeight();
638
+
639
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
640
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
641
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
642
+ }
643
+
644
+ this.active.nextAll( ".ui-menu-item" ).each( function() {
581
645
  item = $( this );
582
646
  return item.offset().top - base - height < 0;
583
- });
647
+ } );
584
648
 
585
649
  this.focus( event, item );
586
650
  } else {
587
- this.focus( event, this.activeMenu.children( ".ui-menu-item" )
651
+ this.focus( event, this._menuItems( this.activeMenu )
588
652
  [ !this.active ? "first" : "last" ]() );
589
653
  }
590
654
  },
@@ -600,15 +664,21 @@ $.widget( "ui.menu", {
600
664
  }
601
665
  if ( this._hasScroll() ) {
602
666
  base = this.active.offset().top;
603
- height = this.element.height();
604
- this.active.prevAll( ".ui-menu-item" ).each(function() {
667
+ height = this.element.innerHeight();
668
+
669
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
670
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
671
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
672
+ }
673
+
674
+ this.active.prevAll( ".ui-menu-item" ).each( function() {
605
675
  item = $( this );
606
676
  return item.offset().top - base + height > 0;
607
- });
677
+ } );
608
678
 
609
679
  this.focus( event, item );
610
680
  } else {
611
- this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
681
+ this.focus( event, this._menuItems( this.activeMenu ).first() );
612
682
  }
613
683
  },
614
684
 
@@ -617,6 +687,7 @@ $.widget( "ui.menu", {
617
687
  },
618
688
 
619
689
  select: function( event ) {
690
+
620
691
  // TODO: It should never be possible to not have an active item at this
621
692
  // point, but the tests don't trigger mouseenter before click.
622
693
  this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
@@ -625,7 +696,23 @@ $.widget( "ui.menu", {
625
696
  this.collapseAll( event, true );
626
697
  }
627
698
  this._trigger( "select", event, ui );
699
+ },
700
+
701
+ _filterMenuItems: function( character ) {
702
+ var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
703
+ regex = new RegExp( "^" + escapedCharacter, "i" );
704
+
705
+ return this.activeMenu
706
+ .find( this.options.items )
707
+
708
+ // Only match on items, not dividers or other content (#10571)
709
+ .filter( ".ui-menu-item" )
710
+ .filter( function() {
711
+ return regex.test(
712
+ String.prototype.trim.call(
713
+ $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
714
+ } );
628
715
  }
629
- });
716
+ } );
630
717
 
631
- }( jQuery ));
718
+ } );