compass-jquery-plugin 0.3.2.7 → 0.3.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +17 -11
- data/VERSION.yml +2 -2
- data/lib/handle_js_files.rb +1 -1
- data/lib/jquery/emulators.rb +13 -0
- data/templates/dynatree/jquery.dynatree.min.js +79 -81
- data/templates/emulators/config/initializers/emulators.rb +0 -9
- data/templates/emulators/emulators/{blackberry.landscape.scss → blackberry.torch.landscape.scss} +6 -2
- data/templates/emulators/emulators/{blackberry.portrait.scss → blackberry.torch.portrait.scss} +6 -1
- data/templates/emulators/emulators/galaxy.s.landscape.png +0 -0
- data/templates/emulators/emulators/galaxy.s.landscape.scss +20 -0
- data/templates/emulators/emulators/galaxy.s.portrait.png +0 -0
- data/templates/emulators/emulators/galaxy.s.portrait.scss +20 -0
- data/templates/emulators/emulators/galaxy.s2.landscape.png +0 -0
- data/templates/emulators/emulators/galaxy.s2.landscape.scss +20 -0
- data/templates/emulators/emulators/galaxy.s2.portrait.png +0 -0
- data/templates/emulators/emulators/galaxy.s2.portrait.scss +20 -0
- data/templates/emulators/emulators/galaxy.tab.10.1.landscape.png +0 -0
- data/templates/emulators/emulators/galaxy.tab.10.1.landscape.scss +20 -0
- data/templates/emulators/emulators/galaxy.tab.10.1.portrait.png +0 -0
- data/templates/emulators/emulators/galaxy.tab.10.1.portrait.scss +20 -0
- data/templates/emulators/emulators/galaxy.tab.7.landscape.png +0 -0
- data/templates/emulators/emulators/galaxy.tab.7.landscape.scss +20 -0
- data/templates/emulators/emulators/galaxy.tab.7.portrait.png +0 -0
- data/templates/emulators/emulators/galaxy.tab.7.portrait.scss +20 -0
- data/templates/emulators/emulators/galaxy.tab.8.9.landscape.png +0 -0
- data/templates/emulators/emulators/galaxy.tab.8.9.landscape.scss +20 -0
- data/templates/emulators/emulators/galaxy.tab.8.9.portrait.png +0 -0
- data/templates/emulators/emulators/galaxy.tab.8.9.portrait.scss +20 -0
- data/templates/emulators/emulators/ipad.landscape.png +0 -0
- data/templates/emulators/emulators/ipad.landscape.scss +9 -4
- data/templates/emulators/emulators/ipad.portrait.png +0 -0
- data/templates/emulators/emulators/ipad.portrait.scss +9 -4
- data/templates/emulators/emulators/{iphone.landscape.png → iphone.3.landscape.png} +0 -0
- data/templates/emulators/emulators/{iphone.landscape.scss → iphone.3.landscape.scss} +7 -3
- data/templates/emulators/emulators/{iphone.portrait.png → iphone.3.portrait.png} +0 -0
- data/templates/emulators/emulators/{iphone.portrait.scss → iphone.3.portrait.scss} +7 -3
- data/templates/emulators/emulators/iphone.4.landscape .scss +20 -0
- data/templates/emulators/emulators/iphone.4.landscape.png +0 -0
- data/templates/emulators/emulators/iphone.4.portrait.png +0 -0
- data/templates/emulators/emulators/iphone.4.portrait.scss +20 -0
- data/templates/emulators/emulators/{palm.pre.landscape.png → palm.pre.2.landscape.png} +0 -0
- data/templates/emulators/emulators/{palm.landscape.scss → palm.pre.2.landscape.scss} +7 -3
- data/templates/emulators/emulators/{palm.pre.portrait.png → palm.pre.2.portrait.png} +0 -0
- data/templates/emulators/emulators/{palm.portrait.scss → palm.pre.2.portrait.scss} +7 -3
- data/templates/emulators/manifest.rb +34 -10
- data/templates/graphics/config/initializers/graphics.rb +8 -0
- data/templates/graphics/highcharts/dark-blue.js +170 -0
- data/templates/graphics/highcharts/dark-blue.min.js +4 -0
- data/templates/graphics/highcharts/dark-green.js +170 -0
- data/templates/graphics/highcharts/dark-green.min.js +4 -0
- data/templates/graphics/highcharts/gray.js +164 -0
- data/templates/graphics/highcharts/gray.min.js +4 -0
- data/templates/graphics/highcharts/grid.js +97 -0
- data/templates/graphics/highcharts/grid.min.js +3 -0
- data/templates/graphics/highcharts/highslide-config.js +12 -0
- data/templates/graphics/highcharts/highslide-config.min.js +1 -0
- data/templates/graphics/highcharts/highslide-full.js +3391 -0
- data/templates/graphics/highcharts/highslide-full.min.js +132 -0
- data/templates/graphics/highcharts/skies.js +89 -0
- data/templates/graphics/highcharts/skies.min.js +3 -0
- data/templates/graphics/jquery.ganttView.js +1 -1
- data/templates/graphics/jquery.ganttView.min.js +61 -61
- data/templates/graphics/jquery.highcharts.js +11342 -0
- data/templates/graphics/jquery.highcharts.min.js +176 -0
- data/templates/graphics/jquery.sparkline.min.js +35 -36
- data/templates/graphics/jquery/highcharts/graphics/close.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/closeX.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar-black-border.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar-text-buttons.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar-white-small.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar-white.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar2.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar3.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar4-hover.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/controlbar4.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/fullexpand.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/geckodimmer.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/icon.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/loader.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/loader.white.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/outlines/beveled.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/outlines/drop-shadow.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/outlines/glossy-dark.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/outlines/outer-glow.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/outlines/rounded-black.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/outlines/rounded-white.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/resize.gif +0 -0
- data/templates/graphics/jquery/highcharts/graphics/scrollarrows.png +0 -0
- data/templates/graphics/jquery/highcharts/graphics/zoomin.cur +0 -0
- data/templates/graphics/jquery/highcharts/graphics/zoomout.cur +0 -0
- data/templates/graphics/jquery/highcharts/skies.jpg +0 -0
- data/templates/graphics/jquery/highslide.scss +763 -0
- data/templates/graphics/manifest.rb +43 -0
- data/templates/ical/config/initializers/ical.rb +1 -0
- data/templates/ical/jquery.ical.js +8401 -8209
- data/templates/ical/jquery.ical.min.js +206 -208
- data/templates/ical/jquery/ical.print.scss +48 -0
- data/templates/ical/jquery/ical.scss +372 -343
- data/templates/ical/manifest.rb +1 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ar.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-bg.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-bg1251.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-cat.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-cn.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-cs.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-da.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-de.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-el.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-en.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-es.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-fa.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-fr.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-gl.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-he.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-hu.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-is.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-it.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-ja.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-lt.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-nl.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-no.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-pl.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-pt-br.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-pt.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-ro.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-ru.min.js +2 -2
- data/templates/jqgrid/i18n/jqgrid/locale-sk.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-sr.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-sv.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-tr.min.js +1 -1
- data/templates/jqgrid/i18n/jqgrid/locale-ua.min.js +2 -2
- data/templates/jqgrid/jquery.jqGrid.js +162 -850
- data/templates/jqgrid/jquery.jqGrid.min.js +476 -497
- data/templates/jqgrid/jquery/jqGrid.scss +0 -19
- data/templates/jquery/amplify.store.js +248 -0
- data/templates/jquery/amplify.store.min.js +6 -0
- data/templates/jquery/config/initializers/jquery.rb +5 -1
- data/templates/jquery/history.adapter.jquery.js +37 -43
- data/templates/jquery/history.adapter.jquery.min.js +1 -1
- data/templates/jquery/history.html4.js +596 -587
- data/templates/jquery/history.html4.min.js +8 -8
- data/templates/jquery/history.js +1839 -1669
- data/templates/jquery/history.min.js +27 -25
- data/templates/jquery/i18n/jquery.ui/datepicker-af.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ar-DZ.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ar.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-az.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-bg.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-bs.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ca.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-cs.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-da.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-de.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-el.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-en-AU.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-en-GB.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-en-NZ.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-eo.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-es.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-et.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-eu.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-fa.min.js +2 -2
- data/templates/jquery/i18n/jquery.ui/datepicker-fi.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-fo.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-fr-CH.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-fr.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-gl.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-he.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-hr.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-hu.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-hy.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-id.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-is.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-it.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ja.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ko.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-kz.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-lt.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-lv.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ml.min.js +2 -2
- data/templates/jquery/i18n/jquery.ui/datepicker-ms.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-nl.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-no.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-pl.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-pt-BR.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-pt.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-rm.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ro.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ru.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-sk.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-sl.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-sq.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-sr-SR.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-sr.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-sv.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-ta.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-th.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-tj.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-tr.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-uk.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-vi.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-zh-CN.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-zh-HK.min.js +1 -1
- data/templates/jquery/i18n/jquery.ui/datepicker-zh-TW.min.js +1 -1
- data/templates/jquery/jquery-ui.js +217 -104
- data/templates/jquery/jquery-ui.min.js +437 -436
- data/templates/jquery/jquery.bgiframe.min.js +1 -1
- data/templates/jquery/jquery.contextMenu.min.js +7 -7
- data/templates/jquery/jquery.cookie.js +60 -58
- data/templates/jquery/jquery.cookie.min.js +1 -1
- data/templates/jquery/jquery.dotimeout.min.js +2 -2
- data/templates/jquery/jquery.dst.min.js +4 -4
- data/templates/jquery/jquery.farbtastic.min.js +10 -10
- data/templates/jquery/jquery.form.js +15 -5
- data/templates/jquery/jquery.form.min.js +20 -20
- data/templates/jquery/jquery.haml.min.js +5 -5
- data/templates/jquery/jquery.hotkeys.min.js +3 -3
- data/templates/jquery/jquery.js +8205 -8170
- data/templates/jquery/jquery.layout.min.js +48 -50
- data/templates/jquery/jquery.min.js +166 -167
- data/templates/jquery/jquery.mousewheel.min.js +2 -2
- data/templates/jquery/jquery.offline.min.js +4 -4
- data/templates/jquery/jquery.pngFix.js +28 -30
- data/templates/jquery/jquery.pngFix.min.js +5 -5
- data/templates/jquery/jquery.rails.js +166 -0
- data/templates/jquery/jquery.rails.min.js +6 -0
- data/templates/jquery/jquery.replacetext.min.js +1 -1
- data/templates/jquery/jquery.themeswitchertool.min.js +4 -4
- data/templates/jquery/jquery.tmpl.js +14 -12
- data/templates/jquery/jquery.tmpl.min.js +12 -12
- data/templates/jquery/jquery.tmplPlus.js +2 -2
- data/templates/jquery/jquery.tmplPlus.min.js +3 -3
- data/templates/jquery/jquery.tokeninput.js +729 -0
- data/templates/jquery/jquery.tokeninput.min.js +14 -0
- data/templates/jquery/jquery/ui/_theme.scss +23 -16
- data/templates/jquery/jquery/ui/black-tie/ui-icons_4ca300_256x240.png +0 -0
- data/templates/jquery/jquery/ui/black-tie/ui-icons_bbbbbb_256x240.png +0 -0
- data/templates/jquery/jquery/ui/black-tie/ui-icons_ededed_256x240.png +0 -0
- data/templates/jquery/jquery/ui/black-tie/ui-icons_ffcf29_256x240.png +0 -0
- data/templates/jquery/jquery/ui/tokeninput.facebook.scss +95 -0
- data/templates/jquery/jquery/ui/tokeninput.mac.scss +164 -0
- data/templates/jquery/jquery/ui/tokeninput.scss +85 -0
- data/templates/jquery/jquery/ui/vader/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/templates/jquery/jquery/ui/vader/ui-icons_bbbbbb_256x240.png +0 -0
- data/templates/jquery/jquery/ui/vader/ui-icons_c98000_256x240.png +0 -0
- data/templates/jquery/jquery/ui/vader/ui-icons_f29a00_256x240.png +0 -0
- data/templates/jquery/json.min.js +6 -6
- data/templates/jquery/json2.js +214 -214
- data/templates/jquery/json2.min.js +5 -6
- data/templates/jquery/manifest.rb +9 -2
- data/templates/jstree/jquery.jstree.min.js +222 -224
- data/templates/mobile/config/initializers/mobile.rb +1 -1
- data/templates/mobile/jquery.mobile.js +887 -404
- data/templates/mobile/jquery.mobile.min.js +4 -4
- data/templates/mobile/jquery/mobile/_base.scss +50 -26
- data/templates/mobile/jquery/mobile/default.scss +59 -63
- data/templates/mobile/jquery/mobile/valencia.scss +44 -42
- data/templates/ribbon/jquery.ribbon.min.js +14 -14
- data/templates/tiny_mce/manifest.rb +4 -0
- data/templates/tiny_mce/tiny_mce/langs/de.js +1 -1
- data/templates/tiny_mce/tiny_mce/langs/en.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advimage/js/image.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advimage/langs/de_dlg.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advlink/js/advlink.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advlink/langs/en_dlg.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advlink/link.htm +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advlist/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/advlist/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/autolink/editor_plugin.js +1 -0
- data/templates/tiny_mce/tiny_mce/plugins/autolink/editor_plugin_src.js +1 -0
- data/templates/tiny_mce/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/autoresize/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/contextmenu/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/fullpage/css/fullpage.css +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/fullpage/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/fullpage/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/fullpage/fullpage.htm +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/fullpage/js/fullpage.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/lists/editor_plugin.js +1 -0
- data/templates/tiny_mce/tiny_mce/plugins/lists/editor_plugin_src.js +1 -0
- data/templates/tiny_mce/tiny_mce/plugins/media/js/media.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/media/media.htm +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/noneditable/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/noneditable/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/paste/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/paste/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/searchreplace/js/searchreplace.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/spellchecker/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/table/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/table/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/js/attributes.js +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/editor_template.js +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/editor_template_src.js +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/js/charmap.js +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/langs/de_dlg.js +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/ui.css +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/dialog.css +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui.css +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +1 -1
- data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +1 -1
- data/templates/tiny_mce/tiny_mce/tiny_mce.js +1 -1
- data/templates/tiny_mce/tiny_mce/utils/form_utils.js +1 -1
- data/templates/tiny_mce/tiny_mce/utils/validate.js +1 -1
- data/templates/tools/flowplayer.min.js +29 -30
- data/templates/tools/jquery.tools.min.js +96 -96
- data/templates/tools/swfobject.min.js +18 -19
- metadata +95 -16
- data/templates/jquery/jrails.js +0 -200
- data/templates/jquery/jrails.min.js +0 -8
@@ -3,4 +3,4 @@ require 'jquery/mobile'
|
|
3
3
|
ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion :mobile_default => ['compiled/jquery/mobile/default.css']
|
4
4
|
ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion :mobile_valencia => ['compiled/jquery/mobile/valencia.css']
|
5
5
|
|
6
|
-
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :mobile => ['jquery.
|
6
|
+
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :mobile => ['jquery.mobile.min']
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* jQuery UI Widget @VERSION
|
3
3
|
*
|
4
|
-
* Copyright
|
4
|
+
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
5
5
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6
6
|
* http://jquery.org/license
|
7
7
|
*
|
@@ -96,19 +96,15 @@
|
|
96
96
|
|
97
97
|
if (isMethodCall) {
|
98
98
|
this.each(function() {
|
99
|
-
var instance = $.data(this, name)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
// if ( !$.isFunction( instance[options] ) ) {
|
109
|
-
// throw "no such method '" + options + "' for " + name + " widget instance";
|
110
|
-
// }
|
111
|
-
// var methodValue = instance[ options ].apply( instance, args );
|
99
|
+
var instance = $.data(this, name);
|
100
|
+
if (!instance) {
|
101
|
+
throw "cannot call methods on " + name + " prior to initialization; " +
|
102
|
+
"attempted to call method '" + options + "'";
|
103
|
+
}
|
104
|
+
if (!$.isFunction(instance[options])) {
|
105
|
+
throw "no such method '" + options + "' for " + name + " widget instance";
|
106
|
+
}
|
107
|
+
var methodValue = instance[ options ].apply(instance, args);
|
112
108
|
if (methodValue !== instance && methodValue !== undefined) {
|
113
109
|
returnValue = methodValue;
|
114
110
|
return false;
|
@@ -162,7 +158,11 @@
|
|
162
158
|
this._init();
|
163
159
|
},
|
164
160
|
_getCreateOptions: function() {
|
165
|
-
|
161
|
+
var options = {};
|
162
|
+
if ($.metadata) {
|
163
|
+
options = $.metadata.get(element)[ this.widgetName ];
|
164
|
+
}
|
165
|
+
return options;
|
166
166
|
},
|
167
167
|
_create: function() {
|
168
168
|
},
|
@@ -436,7 +436,7 @@
|
|
436
436
|
var fakeBody = $("<body>").prependTo("html"),
|
437
437
|
fbCSS = fakeBody[0].style,
|
438
438
|
vendors = ['webkit','moz','o'],
|
439
|
-
webos =
|
439
|
+
webos = "palmGetResource" in window, //only used to rule out scrollTop
|
440
440
|
bb = window.blackberry; //only used to rule out box shadow, as it's filled opaque on BB
|
441
441
|
|
442
442
|
//thx Modernizr
|
@@ -494,7 +494,8 @@
|
|
494
494
|
cssPseudoElement: !!propExists('content'),
|
495
495
|
boxShadow: !!propExists('boxShadow') && !bb,
|
496
496
|
scrollTop: ("pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[0]) && !webos,
|
497
|
-
dynamicBaseTag: baseTagTest()
|
497
|
+
dynamicBaseTag: baseTagTest(),
|
498
|
+
eventCapture: ("addEventListener" in document) // This is a weak test. We may want to beef this up later.
|
498
499
|
});
|
499
500
|
|
500
501
|
fakeBody.remove();
|
@@ -506,6 +507,442 @@
|
|
506
507
|
|
507
508
|
})(jQuery);
|
508
509
|
|
510
|
+
/*
|
511
|
+
* jQuery Mobile Framework : "mouse" plugin
|
512
|
+
* Copyright (c) jQuery Project
|
513
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
514
|
+
* http://jquery.org/license
|
515
|
+
*/
|
516
|
+
|
517
|
+
// This plugin is an experiment for abstracting away the touch and mouse
|
518
|
+
// events so that developers don't have to worry about which method of input
|
519
|
+
// the device their document is loaded on supports.
|
520
|
+
//
|
521
|
+
// The idea here is to allow the developer to register listeners for the
|
522
|
+
// basic mouse events, such as mousedown, mousemove, mouseup, and click,
|
523
|
+
// and the plugin will take care of registering the correct listeners
|
524
|
+
// behind the scenes to invoke the listener at the fastest possible time
|
525
|
+
// for that device, while still retaining the order of event firing in
|
526
|
+
// the traditional mouse environment, should multiple handlers be registered
|
527
|
+
// on the same element for different events.
|
528
|
+
//
|
529
|
+
// The current version exposes the following virtual events to jQuery bind methods:
|
530
|
+
// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"
|
531
|
+
|
532
|
+
(function($, window, document, undefined) {
|
533
|
+
|
534
|
+
var dataPropertyName = "virtualMouseBindings",
|
535
|
+
touchTargetPropertyName = "virtualTouchID",
|
536
|
+
virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),
|
537
|
+
touchEventProps = "clientX clientY pageX pageY screenX screenY".split(" "),
|
538
|
+
activeDocHandlers = {},
|
539
|
+
resetTimerID = 0,
|
540
|
+
startX = 0,
|
541
|
+
startY = 0,
|
542
|
+
didScroll = false,
|
543
|
+
clickBlockList = [],
|
544
|
+
blockMouseTriggers = false,
|
545
|
+
blockTouchTriggers = false,
|
546
|
+
eventCaptureSupported = $.support.eventCapture,
|
547
|
+
$document = $(document),
|
548
|
+
nextTouchID = 1,
|
549
|
+
lastTouchID = 0;
|
550
|
+
|
551
|
+
$.vmouse = {
|
552
|
+
moveDistanceThreshold: 10,
|
553
|
+
clickDistanceThreshold: 10,
|
554
|
+
resetTimerDuration: 1500
|
555
|
+
};
|
556
|
+
|
557
|
+
function getNativeEvent(event) {
|
558
|
+
while (event && typeof event.originalEvent !== "undefined") {
|
559
|
+
event = event.originalEvent;
|
560
|
+
}
|
561
|
+
return event;
|
562
|
+
}
|
563
|
+
|
564
|
+
function createVirtualEvent(event, eventType) {
|
565
|
+
var t = event.type;
|
566
|
+
event = $.Event(event);
|
567
|
+
event.type = eventType;
|
568
|
+
|
569
|
+
var oe = event.originalEvent;
|
570
|
+
var props = $.event.props;
|
571
|
+
|
572
|
+
// copy original event properties over to the new event
|
573
|
+
// this would happen if we could call $.event.fix instead of $.Event
|
574
|
+
// but we don't have a way to force an event to be fixed multiple times
|
575
|
+
if (oe) {
|
576
|
+
for (var i = props.length, prop; i;) {
|
577
|
+
prop = props[ --i ];
|
578
|
+
event[prop] = oe[prop];
|
579
|
+
}
|
580
|
+
}
|
581
|
+
|
582
|
+
if (t.search(/^touch/) !== -1) {
|
583
|
+
var ne = getNativeEvent(oe),
|
584
|
+
t = ne.touches,
|
585
|
+
ct = ne.changedTouches,
|
586
|
+
touch = (t && t.length) ? t[0] : ((ct && ct.length) ? ct[0] : undefined);
|
587
|
+
if (touch) {
|
588
|
+
for (var i = 0, len = touchEventProps.length; i < len; i++) {
|
589
|
+
var prop = touchEventProps[i];
|
590
|
+
event[prop] = touch[prop];
|
591
|
+
}
|
592
|
+
}
|
593
|
+
}
|
594
|
+
|
595
|
+
return event;
|
596
|
+
}
|
597
|
+
|
598
|
+
function getVirtualBindingFlags(element) {
|
599
|
+
var flags = {};
|
600
|
+
while (element) {
|
601
|
+
var b = $.data(element, dataPropertyName);
|
602
|
+
for (var k in b) {
|
603
|
+
if (b[k]) {
|
604
|
+
flags[k] = flags.hasVirtualBinding = true;
|
605
|
+
}
|
606
|
+
}
|
607
|
+
element = element.parentNode;
|
608
|
+
}
|
609
|
+
return flags;
|
610
|
+
}
|
611
|
+
|
612
|
+
function getClosestElementWithVirtualBinding(element, eventType) {
|
613
|
+
while (element) {
|
614
|
+
var b = $.data(element, dataPropertyName);
|
615
|
+
if (b && (!eventType || b[eventType])) {
|
616
|
+
return element;
|
617
|
+
}
|
618
|
+
element = element.parentNode;
|
619
|
+
}
|
620
|
+
return null;
|
621
|
+
}
|
622
|
+
|
623
|
+
function enableTouchBindings() {
|
624
|
+
blockTouchTriggers = false;
|
625
|
+
}
|
626
|
+
|
627
|
+
function disableTouchBindings() {
|
628
|
+
blockTouchTriggers = true;
|
629
|
+
}
|
630
|
+
|
631
|
+
function enableMouseBindings() {
|
632
|
+
lastTouchID = 0;
|
633
|
+
clickBlockList.length = 0;
|
634
|
+
blockMouseTriggers = false;
|
635
|
+
|
636
|
+
// When mouse bindings are enabled, our
|
637
|
+
// touch bindings are disabled.
|
638
|
+
disableTouchBindings();
|
639
|
+
}
|
640
|
+
|
641
|
+
function disableMouseBindings() {
|
642
|
+
// When mouse bindings are disabled, our
|
643
|
+
// touch bindings are enabled.
|
644
|
+
enableTouchBindings();
|
645
|
+
}
|
646
|
+
|
647
|
+
function startResetTimer() {
|
648
|
+
clearResetTimer();
|
649
|
+
resetTimerID = setTimeout(function() {
|
650
|
+
resetTimerID = 0;
|
651
|
+
enableMouseBindings();
|
652
|
+
}, $.vmouse.resetTimerDuration);
|
653
|
+
}
|
654
|
+
|
655
|
+
function clearResetTimer() {
|
656
|
+
if (resetTimerID) {
|
657
|
+
clearTimeout(resetTimerID);
|
658
|
+
resetTimerID = 0;
|
659
|
+
}
|
660
|
+
}
|
661
|
+
|
662
|
+
function triggerVirtualEvent(eventType, event, flags) {
|
663
|
+
var defaultPrevented = false;
|
664
|
+
|
665
|
+
if ((flags && flags[eventType]) || (!flags && getClosestElementWithVirtualBinding(event.target, eventType))) {
|
666
|
+
var ve = createVirtualEvent(event, eventType);
|
667
|
+
$(event.target).trigger(ve);
|
668
|
+
defaultPrevented = ve.isDefaultPrevented();
|
669
|
+
}
|
670
|
+
|
671
|
+
return defaultPrevented;
|
672
|
+
}
|
673
|
+
|
674
|
+
function mouseEventCallback(event) {
|
675
|
+
var touchID = $.data(event.target, touchTargetPropertyName);
|
676
|
+
if (!blockMouseTriggers && (!lastTouchID || lastTouchID !== touchID)) {
|
677
|
+
triggerVirtualEvent("v" + event.type, event);
|
678
|
+
}
|
679
|
+
}
|
680
|
+
|
681
|
+
function handleTouchStart(event) {
|
682
|
+
var touches = getNativeEvent(event).touches;
|
683
|
+
if (touches && touches.length === 1) {
|
684
|
+
var target = event.target,
|
685
|
+
flags = getVirtualBindingFlags(target);
|
686
|
+
|
687
|
+
if (flags.hasVirtualBinding) {
|
688
|
+
lastTouchID = nextTouchID++;
|
689
|
+
$.data(target, touchTargetPropertyName, lastTouchID);
|
690
|
+
|
691
|
+
clearResetTimer();
|
692
|
+
|
693
|
+
disableMouseBindings();
|
694
|
+
didScroll = false;
|
695
|
+
|
696
|
+
var t = getNativeEvent(event).touches[0];
|
697
|
+
startX = t.pageX;
|
698
|
+
startY = t.pageY;
|
699
|
+
|
700
|
+
triggerVirtualEvent("vmouseover", event, flags);
|
701
|
+
triggerVirtualEvent("vmousedown", event, flags);
|
702
|
+
}
|
703
|
+
}
|
704
|
+
}
|
705
|
+
|
706
|
+
function handleScroll(event) {
|
707
|
+
if (blockTouchTriggers) {
|
708
|
+
return;
|
709
|
+
}
|
710
|
+
|
711
|
+
if (!didScroll) {
|
712
|
+
triggerVirtualEvent("vmousecancel", event, getVirtualBindingFlags(event.target));
|
713
|
+
}
|
714
|
+
|
715
|
+
didScroll = true;
|
716
|
+
startResetTimer();
|
717
|
+
}
|
718
|
+
|
719
|
+
function handleTouchMove(event) {
|
720
|
+
if (blockTouchTriggers) {
|
721
|
+
return;
|
722
|
+
}
|
723
|
+
|
724
|
+
var t = getNativeEvent(event).touches[0];
|
725
|
+
|
726
|
+
var didCancel = didScroll,
|
727
|
+
moveThreshold = $.vmouse.moveDistanceThreshold;
|
728
|
+
didScroll = didScroll
|
729
|
+
|| (Math.abs(t.pageX - startX) > moveThreshold || Math.abs(t.pageY - startY) > moveThreshold);
|
730
|
+
|
731
|
+
var flags = getVirtualBindingFlags(event.target);
|
732
|
+
if (didScroll && !didCancel) {
|
733
|
+
triggerVirtualEvent("vmousecancel", event, flags);
|
734
|
+
}
|
735
|
+
triggerVirtualEvent("vmousemove", event, flags);
|
736
|
+
startResetTimer();
|
737
|
+
}
|
738
|
+
|
739
|
+
function handleTouchEnd(event) {
|
740
|
+
if (blockTouchTriggers) {
|
741
|
+
return;
|
742
|
+
}
|
743
|
+
|
744
|
+
disableTouchBindings();
|
745
|
+
|
746
|
+
var flags = getVirtualBindingFlags(event.target);
|
747
|
+
triggerVirtualEvent("vmouseup", event, flags);
|
748
|
+
if (!didScroll) {
|
749
|
+
if (triggerVirtualEvent("vclick", event, flags)) {
|
750
|
+
// The target of the mouse events that follow the touchend
|
751
|
+
// event don't necessarily match the target used during the
|
752
|
+
// touch. This means we need to rely on coordinates for blocking
|
753
|
+
// any click that is generated.
|
754
|
+
var t = getNativeEvent(event).changedTouches[0];
|
755
|
+
clickBlockList.push({ touchID: lastTouchID, x: t.clientX, y: t.clientY });
|
756
|
+
|
757
|
+
// Prevent any mouse events that follow from triggering
|
758
|
+
// virtual event notifications.
|
759
|
+
blockMouseTriggers = true;
|
760
|
+
}
|
761
|
+
}
|
762
|
+
triggerVirtualEvent("vmouseout", event, flags);
|
763
|
+
didScroll = false;
|
764
|
+
|
765
|
+
startResetTimer();
|
766
|
+
}
|
767
|
+
|
768
|
+
function hasVirtualBindings(ele) {
|
769
|
+
var bindings = $.data(ele, dataPropertyName), k;
|
770
|
+
if (bindings) {
|
771
|
+
for (k in bindings) {
|
772
|
+
if (bindings[k]) {
|
773
|
+
return true;
|
774
|
+
}
|
775
|
+
}
|
776
|
+
}
|
777
|
+
return false;
|
778
|
+
}
|
779
|
+
|
780
|
+
function dummyMouseHandler() {
|
781
|
+
}
|
782
|
+
|
783
|
+
function getSpecialEventObject(eventType) {
|
784
|
+
var realType = eventType.substr(1);
|
785
|
+
return {
|
786
|
+
setup: function(data, namespace) {
|
787
|
+
// If this is the first virtual mouse binding for this element,
|
788
|
+
// add a bindings object to its data.
|
789
|
+
|
790
|
+
if (!hasVirtualBindings(this)) {
|
791
|
+
$.data(this, dataPropertyName, {});
|
792
|
+
}
|
793
|
+
|
794
|
+
// If setup is called, we know it is the first binding for this
|
795
|
+
// eventType, so initialize the count for the eventType to zero.
|
796
|
+
|
797
|
+
var bindings = $.data(this, dataPropertyName);
|
798
|
+
bindings[eventType] = true;
|
799
|
+
|
800
|
+
// If this is the first virtual mouse event for this type,
|
801
|
+
// register a global handler on the document.
|
802
|
+
|
803
|
+
activeDocHandlers[eventType] = (activeDocHandlers[eventType] || 0) + 1;
|
804
|
+
if (activeDocHandlers[eventType] === 1) {
|
805
|
+
$document.bind(realType, mouseEventCallback);
|
806
|
+
}
|
807
|
+
|
808
|
+
// Some browsers, like Opera Mini, won't dispatch mouse/click events
|
809
|
+
// for elements unless they actually have handlers registered on them.
|
810
|
+
// To get around this, we register dummy handlers on the elements.
|
811
|
+
|
812
|
+
$(this).bind(realType, dummyMouseHandler);
|
813
|
+
|
814
|
+
// For now, if event capture is not supported, we rely on mouse handlers.
|
815
|
+
if (eventCaptureSupported) {
|
816
|
+
// If this is the first virtual mouse binding for the document,
|
817
|
+
// register our touchstart handler on the document.
|
818
|
+
|
819
|
+
activeDocHandlers["touchstart"] = (activeDocHandlers["touchstart"] || 0) + 1;
|
820
|
+
if (activeDocHandlers["touchstart"] === 1) {
|
821
|
+
$document.bind("touchstart", handleTouchStart)
|
822
|
+
|
823
|
+
.bind("touchend", handleTouchEnd)
|
824
|
+
|
825
|
+
// On touch platforms, touching the screen and then dragging your finger
|
826
|
+
// causes the window content to scroll after some distance threshold is
|
827
|
+
// exceeded. On these platforms, a scroll prevents a click event from being
|
828
|
+
// dispatched, and on some platforms, even the touchend is suppressed. To
|
829
|
+
// mimic the suppression of the click event, we need to watch for a scroll
|
830
|
+
// event. Unfortunately, some platforms like iOS don't dispatch scroll
|
831
|
+
// events until *AFTER* the user lifts their finger (touchend). This means
|
832
|
+
// we need to watch both scroll and touchmove events to figure out whether
|
833
|
+
// or not a scroll happenens before the touchend event is fired.
|
834
|
+
|
835
|
+
.bind("touchmove", handleTouchMove)
|
836
|
+
.bind("scroll", handleScroll);
|
837
|
+
}
|
838
|
+
}
|
839
|
+
},
|
840
|
+
|
841
|
+
teardown: function(data, namespace) {
|
842
|
+
// If this is the last virtual binding for this eventType,
|
843
|
+
// remove its global handler from the document.
|
844
|
+
|
845
|
+
--activeDocHandlers[eventType];
|
846
|
+
if (!activeDocHandlers[eventType]) {
|
847
|
+
$document.unbind(realType, mouseEventCallback);
|
848
|
+
}
|
849
|
+
|
850
|
+
if (eventCaptureSupported) {
|
851
|
+
// If this is the last virtual mouse binding in existence,
|
852
|
+
// remove our document touchstart listener.
|
853
|
+
|
854
|
+
--activeDocHandlers["touchstart"];
|
855
|
+
if (!activeDocHandlers["touchstart"]) {
|
856
|
+
$document.unbind("touchstart", handleTouchStart)
|
857
|
+
.unbind("touchmove", handleTouchMove)
|
858
|
+
.unbind("touchend", handleTouchEnd)
|
859
|
+
.unbind("scroll", handleScroll);
|
860
|
+
}
|
861
|
+
}
|
862
|
+
|
863
|
+
var $this = $(this),
|
864
|
+
bindings = $.data(this, dataPropertyName);
|
865
|
+
bindings[eventType] = false;
|
866
|
+
|
867
|
+
// Unregister the dummy event handler.
|
868
|
+
|
869
|
+
$this.unbind(realType, dummyMouseHandler);
|
870
|
+
|
871
|
+
// If this is the last virtual mouse binding on the
|
872
|
+
// element, remove the binding data from the element.
|
873
|
+
|
874
|
+
if (!hasVirtualBindings(this)) {
|
875
|
+
$this.removeData(dataPropertyName);
|
876
|
+
}
|
877
|
+
}
|
878
|
+
};
|
879
|
+
}
|
880
|
+
|
881
|
+
// Expose our custom events to the jQuery bind/unbind mechanism.
|
882
|
+
|
883
|
+
for (var i = 0; i < virtualEventNames.length; i++) {
|
884
|
+
$.event.special[virtualEventNames[i]] = getSpecialEventObject(virtualEventNames[i]);
|
885
|
+
}
|
886
|
+
|
887
|
+
// Add a capture click handler to block clicks.
|
888
|
+
// Note that we require event capture support for this so if the device
|
889
|
+
// doesn't support it, we punt for now and rely solely on mouse events.
|
890
|
+
if (eventCaptureSupported) {
|
891
|
+
document.addEventListener("click", function(e) {
|
892
|
+
var cnt = clickBlockList.length;
|
893
|
+
var target = e.target;
|
894
|
+
if (cnt) {
|
895
|
+
var x = e.clientX,
|
896
|
+
y = e.clientY,
|
897
|
+
threshold = $.vmouse.clickDistanceThreshold;
|
898
|
+
|
899
|
+
// The idea here is to run through the clickBlockList to see if
|
900
|
+
// the current click event is in the proximity of one of our
|
901
|
+
// vclick events that had preventDefault() called on it. If we find
|
902
|
+
// one, then we block the click.
|
903
|
+
//
|
904
|
+
// Why do we have to rely on proximity?
|
905
|
+
//
|
906
|
+
// Because the target of the touch event that triggered the vclick
|
907
|
+
// can be different from the target of the click event synthesized
|
908
|
+
// by the browser. The target of a mouse/click event that is syntehsized
|
909
|
+
// from a touch event seems to be implementation specific. For example,
|
910
|
+
// some browsers will fire mouse/click events for a link that is near
|
911
|
+
// a touch event, even though the target of the touchstart/touchend event
|
912
|
+
// says the user touched outside the link. Also, it seems that with most
|
913
|
+
// browsers, the target of the mouse/click event is not calculated until the
|
914
|
+
// time it is dispatched, so if you replace an element that you touched
|
915
|
+
// with another element, the target of the mouse/click will be the new
|
916
|
+
// element underneath that point.
|
917
|
+
//
|
918
|
+
// Aside from proximity, we also check to see if the target and any
|
919
|
+
// of its ancestors were the ones that blocked a click. This is necessary
|
920
|
+
// because of the strange mouse/click target calculation done in the
|
921
|
+
// Android 2.1 browser, where if you click on an element, and there is a
|
922
|
+
// mouse/click handler on one of its ancestors, the target will be the
|
923
|
+
// innermost child of the touched element, even if that child is no where
|
924
|
+
// near the point of touch.
|
925
|
+
|
926
|
+
var ele = target;
|
927
|
+
while (ele) {
|
928
|
+
for (var i = 0; i < cnt; i++) {
|
929
|
+
var o = clickBlockList[i],
|
930
|
+
touchID = 0;
|
931
|
+
if ((ele === target && Math.abs(o.x - x) < threshold && Math.abs(o.y - y) < threshold) || $.data(ele, touchTargetPropertyName) === o.touchID) {
|
932
|
+
// XXX: We may want to consider removing matches from the block list
|
933
|
+
// instead of waiting for the reset timer to fire.
|
934
|
+
e.preventDefault();
|
935
|
+
e.stopPropagation();
|
936
|
+
return;
|
937
|
+
}
|
938
|
+
}
|
939
|
+
ele = ele.parentNode;
|
940
|
+
}
|
941
|
+
}
|
942
|
+
}, true);
|
943
|
+
}
|
944
|
+
})(jQuery, window, document);
|
945
|
+
|
509
946
|
/*
|
510
947
|
* jQuery Mobile Framework : events
|
511
948
|
* Copyright (c) jQuery Project
|
@@ -528,6 +965,13 @@
|
|
528
965
|
touchStopEvent = supportTouch ? "touchend" : "mouseup",
|
529
966
|
touchMoveEvent = supportTouch ? "touchmove" : "mousemove";
|
530
967
|
|
968
|
+
function triggerCustomEvent(obj, eventType, event) {
|
969
|
+
var originalType = event.type;
|
970
|
+
event.type = eventType;
|
971
|
+
$.event.handle.call(obj, event);
|
972
|
+
event.type = originalType;
|
973
|
+
}
|
974
|
+
|
531
975
|
// also handles scrollstop
|
532
976
|
$.event.special.scrollstart = {
|
533
977
|
enabled: true,
|
@@ -540,10 +984,7 @@
|
|
540
984
|
|
541
985
|
function trigger(event, state) {
|
542
986
|
scrolling = state;
|
543
|
-
|
544
|
-
event.type = scrolling ? "scrollstart" : "scrollstop";
|
545
|
-
$.event.handle.call(thisObject, event);
|
546
|
-
event.type = originalType;
|
987
|
+
triggerCustomEvent(thisObject, scrolling ? "scrollstart" : "scrollstop", event);
|
547
988
|
}
|
548
989
|
|
549
990
|
// iPhone triggers scroll after a small delay; use touchmove instead
|
@@ -571,71 +1012,40 @@
|
|
571
1012
|
$this = $(thisObject);
|
572
1013
|
|
573
1014
|
$this
|
574
|
-
.bind("
|
575
|
-
if (event.which && event.which !== 1
|
576
|
-
//check if event fired once already by a device that fires both mousedown and touchstart (while supporting both events)
|
577
|
-
$this.jqmData("prevEvent") && $this.jqmData("prevEvent") !== event.type) {
|
1015
|
+
.bind("vmousedown", function(event) {
|
1016
|
+
if (event.which && event.which !== 1) {
|
578
1017
|
return false;
|
579
1018
|
}
|
580
1019
|
|
581
|
-
|
582
|
-
//allowing quick repetitive taps but not duplicative events
|
583
|
-
$this.jqmData("prevEvent", event.type);
|
584
|
-
setTimeout(function() {
|
585
|
-
$this.removeData("prevEvent");
|
586
|
-
}, 800);
|
587
|
-
|
588
|
-
var moved = false,
|
589
|
-
touching = true,
|
1020
|
+
var touching = true,
|
590
1021
|
origTarget = event.target,
|
591
1022
|
origEvent = event.originalEvent,
|
592
|
-
origPos = event.type == "touchstart" ? [origEvent.touches[0].pageX, origEvent.touches[0].pageY] : [ event.pageX, event.pageY ],
|
593
|
-
originalType,
|
594
1023
|
timer;
|
595
1024
|
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
return;
|
601
|
-
}
|
602
|
-
var newPageXY = event.type == "touchmove" ? event.originalEvent.touches[0] : event;
|
603
|
-
if ((Math.abs(origPos[0] - newPageXY.pageX) > 10) ||
|
604
|
-
(Math.abs(origPos[1] - newPageXY.pageY) > 10)) {
|
605
|
-
moved = true;
|
606
|
-
}
|
1025
|
+
function clearTapHandlers() {
|
1026
|
+
touching = false;
|
1027
|
+
clearTimeout(timer);
|
1028
|
+
$this.unbind("vclick", clickHandler).unbind("vmousecancel", clearTapHandlers);
|
607
1029
|
}
|
608
1030
|
|
609
|
-
|
610
|
-
|
611
|
-
originalType = event.type;
|
612
|
-
event.type = "taphold";
|
613
|
-
$.event.handle.call(thisObject, event);
|
614
|
-
event.type = originalType;
|
615
|
-
}
|
616
|
-
}, 750);
|
617
|
-
|
618
|
-
//scroll now cancels tap
|
619
|
-
$(window).one("scroll", moveHandler);
|
620
|
-
|
621
|
-
$this
|
622
|
-
.bind("mousemove touchmove", moveHandler)
|
623
|
-
.one("mouseup touchend", function(event) {
|
624
|
-
$this.unbind("mousemove touchmove", moveHandler);
|
625
|
-
$(window).unbind("scroll", moveHandler);
|
626
|
-
clearTimeout(timer);
|
627
|
-
touching = false;
|
1031
|
+
function clickHandler(event) {
|
1032
|
+
clearTapHandlers();
|
628
1033
|
|
629
1034
|
/* ONLY trigger a 'tap' event if the start target is
|
630
1035
|
* the same as the stop target.
|
631
1036
|
*/
|
632
|
-
if (
|
633
|
-
|
634
|
-
event.type = "tap";
|
635
|
-
$.event.handle.call(thisObject, event);
|
636
|
-
event.type = originalType;
|
1037
|
+
if (origTarget == event.target) {
|
1038
|
+
triggerCustomEvent(thisObject, "tap", event);
|
637
1039
|
}
|
638
|
-
}
|
1040
|
+
}
|
1041
|
+
|
1042
|
+
$this.bind("vmousecancel", clearTapHandlers).bind("vclick", clickHandler);
|
1043
|
+
|
1044
|
+
timer = setTimeout(function() {
|
1045
|
+
if (touching) {
|
1046
|
+
triggerCustomEvent(thisObject, "taphold", event);
|
1047
|
+
}
|
1048
|
+
}, 750);
|
639
1049
|
});
|
640
1050
|
}
|
641
1051
|
};
|
@@ -687,6 +1097,7 @@
|
|
687
1097
|
Math.abs(start.coords[1] - stop.coords[1]) < 75) {
|
688
1098
|
start.origin
|
689
1099
|
.trigger("swipe")
|
1100
|
+
|
690
1101
|
.trigger(start.coords[0] > stop.coords[0] ? "swipeleft" : "swiperight");
|
691
1102
|
}
|
692
1103
|
}
|
@@ -1199,6 +1610,7 @@
|
|
1199
1610
|
options: {
|
1200
1611
|
backBtnText: "Back",
|
1201
1612
|
addBackBtn: true,
|
1613
|
+
backBtnTheme: null,
|
1202
1614
|
degradeInputs: {
|
1203
1615
|
color: false,
|
1204
1616
|
date: false,
|
@@ -1268,7 +1680,12 @@
|
|
1268
1680
|
$elem.jqmData("url") !== $.mobile.path.stripHash(location.hash) &&
|
1269
1681
|
!leftbtn && $this.jqmData("backbtn") !== false) {
|
1270
1682
|
|
1271
|
-
$("<a href='#' class='ui-btn-left' data-" + $.mobile.ns + "rel='back' data-" + $.mobile.ns + "icon='arrow-l'>" + o.backBtnText + "</a>").prependTo($this);
|
1683
|
+
var backBtn = $("<a href='#' class='ui-btn-left' data-" + $.mobile.ns + "rel='back' data-" + $.mobile.ns + "icon='arrow-l'>" + o.backBtnText + "</a>").prependTo($this);
|
1684
|
+
|
1685
|
+
//if theme is provided, override default inheritance
|
1686
|
+
if (o.backBtnTheme) {
|
1687
|
+
backBtn.attr("data-" + $.mobile.ns + "theme", o.backBtnTheme);
|
1688
|
+
}
|
1272
1689
|
}
|
1273
1690
|
|
1274
1691
|
//page title
|
@@ -1448,6 +1865,9 @@
|
|
1448
1865
|
//if false, message will not appear, but loading classes will still be toggled on html el
|
1449
1866
|
loadingMessage: "loading",
|
1450
1867
|
|
1868
|
+
//error response message - appears when an Ajax page request fails
|
1869
|
+
pageLoadErrorMessage: "Error Loading Page",
|
1870
|
+
|
1451
1871
|
//configure meta viewport tag's content attr:
|
1452
1872
|
//note: this feature is deprecated in A4 in favor of adding
|
1453
1873
|
//the meta viewport element directly in the markup
|
@@ -1598,17 +2018,38 @@
|
|
1598
2018
|
path.origin = path.get(location.protocol + '//' + location.host + location.pathname);
|
1599
2019
|
},
|
1600
2020
|
|
1601
|
-
//prefix a relative url with the current path
|
2021
|
+
// prefix a relative url with the current path
|
2022
|
+
// TODO force old relative deeplinks into new absolute path
|
1602
2023
|
makeAbsolute: function(url) {
|
1603
|
-
|
2024
|
+
var isHashPath = path.isPath(location.hash);
|
2025
|
+
|
2026
|
+
if (path.isQuery(url)) {
|
2027
|
+
// if the path is a list of query params and the hash is a path
|
2028
|
+
// append the query params to the hash (without params or dialog keys).
|
2029
|
+
// otherwise use the pathname and append the query params
|
2030
|
+
return ( isHashPath ? path.cleanHash(location.hash) : location.pathname ) + url;
|
2031
|
+
}
|
2032
|
+
|
2033
|
+
// If the hash is a path, even if its not absolute, use it to prepend to the url
|
2034
|
+
// otherwise use the path with the trailing segement removed
|
2035
|
+
return ( isHashPath ? path.get() : path.get(location.pathname) ) + url;
|
2036
|
+
},
|
2037
|
+
|
2038
|
+
// test if a given url (string) is a path
|
2039
|
+
// NOTE might be exceptionally naive
|
2040
|
+
isPath: function(url) {
|
2041
|
+
return /\//.test(url);
|
2042
|
+
},
|
2043
|
+
|
2044
|
+
isQuery: function(url) {
|
2045
|
+
return /^\?/.test(url);
|
1604
2046
|
},
|
1605
2047
|
|
1606
2048
|
//return a url path with the window's location protocol/hostname/pathname removed
|
1607
2049
|
clean: function(url) {
|
1608
|
-
// Replace the protocol
|
2050
|
+
// Replace the protocol host only once at the beginning of the url to avoid
|
1609
2051
|
// problems when it's included as a part of a param
|
1610
|
-
|
1611
|
-
var leadingUrlRootRegex = new RegExp("^" + location.protocol + "//" + location.host + location.pathname);
|
2052
|
+
var leadingUrlRootRegex = new RegExp("^" + location.protocol + "//" + location.host);
|
1612
2053
|
return url.replace(leadingUrlRootRegex, "");
|
1613
2054
|
},
|
1614
2055
|
|
@@ -1617,6 +2058,11 @@
|
|
1617
2058
|
return url.replace(/^#/, "");
|
1618
2059
|
},
|
1619
2060
|
|
2061
|
+
//remove the preceding hash, any query params, and dialog notations
|
2062
|
+
cleanHash: function(hash) {
|
2063
|
+
return path.stripHash(hash.replace(/\?.*$/, "").replace(dialogHashKey, ""));
|
2064
|
+
},
|
2065
|
+
|
1620
2066
|
//check whether a url is referencing the same domain, or an external domain or different protocol
|
1621
2067
|
//could be mailto, etc
|
1622
2068
|
isExternal: function(url) {
|
@@ -1663,13 +2109,13 @@
|
|
1663
2109
|
},
|
1664
2110
|
|
1665
2111
|
// addNew is used whenever a new page is added
|
1666
|
-
addNew: function(url, transition) {
|
2112
|
+
addNew: function(url, transition, title, storedTo) {
|
1667
2113
|
//if there's forward history, wipe it
|
1668
2114
|
if (urlHistory.getNext()) {
|
1669
2115
|
urlHistory.clearForward();
|
1670
2116
|
}
|
1671
2117
|
|
1672
|
-
urlHistory.stack.push({url : url, transition: transition });
|
2118
|
+
urlHistory.stack.push({url : url, transition: transition, title: title, page: storedTo });
|
1673
2119
|
|
1674
2120
|
urlHistory.activeIndex = urlHistory.stack.length - 1;
|
1675
2121
|
},
|
@@ -1786,12 +2232,20 @@
|
|
1786
2232
|
|
1787
2233
|
//direct focus to the page title, or otherwise first focusable element
|
1788
2234
|
function reFocus(page) {
|
1789
|
-
var
|
1790
|
-
|
1791
|
-
|
2235
|
+
var lastClicked = page.jqmData("lastClicked");
|
2236
|
+
|
2237
|
+
if (lastClicked && lastClicked.length) {
|
2238
|
+
lastClicked.focus();
|
1792
2239
|
}
|
1793
2240
|
else {
|
1794
|
-
page.find(
|
2241
|
+
var pageTitle = page.find(".ui-title:eq(0)");
|
2242
|
+
|
2243
|
+
if (pageTitle.length) {
|
2244
|
+
pageTitle.focus();
|
2245
|
+
}
|
2246
|
+
else {
|
2247
|
+
page.find(focusable).eq(0).focus();
|
2248
|
+
}
|
1795
2249
|
}
|
1796
2250
|
}
|
1797
2251
|
|
@@ -1841,8 +2295,9 @@
|
|
1841
2295
|
// changepage function
|
1842
2296
|
$.mobile.changePage = function(to, transition, reverse, changeHash, fromHashChange) {
|
1843
2297
|
//from is always the currently viewed page
|
1844
|
-
var
|
1845
|
-
|
2298
|
+
var toType = $.type(to),
|
2299
|
+
toIsArray = toType === "array",
|
2300
|
+
toIsObject = toType === "object",
|
1846
2301
|
from = toIsArray ? to[0] : $.mobile.activePage;
|
1847
2302
|
|
1848
2303
|
to = toIsArray ? to[1] : to;
|
@@ -1853,15 +2308,18 @@
|
|
1853
2308
|
type = 'get',
|
1854
2309
|
isFormRequest = false,
|
1855
2310
|
duplicateCachedPage = null,
|
1856
|
-
|
2311
|
+
active = urlHistory.getActive(),
|
1857
2312
|
back = false,
|
1858
|
-
forward = false
|
2313
|
+
forward = false,
|
2314
|
+
pageTitle = document.title;
|
1859
2315
|
|
1860
2316
|
|
1861
2317
|
// If we are trying to transition to the same page that we are currently on ignore the request.
|
1862
2318
|
// an illegal same page request is defined by the current page being the same as the url, as long as there's history
|
1863
2319
|
// and to is not an array or object (those are allowed to be "same")
|
1864
|
-
if (
|
2320
|
+
if (urlHistory.stack.length > 0
|
2321
|
+
&& active.page.jqmData("url") === url
|
2322
|
+
&& !toIsArray && !toIsObject) {
|
1865
2323
|
return;
|
1866
2324
|
}
|
1867
2325
|
else if (isPageTransitioning) {
|
@@ -1879,7 +2337,7 @@
|
|
1879
2337
|
isBack: function() {
|
1880
2338
|
forward = !(back = true);
|
1881
2339
|
reverse = true;
|
1882
|
-
transition = transition ||
|
2340
|
+
transition = transition || active.transition;
|
1883
2341
|
},
|
1884
2342
|
isForward: function() {
|
1885
2343
|
forward = !(back = false);
|
@@ -1912,7 +2370,7 @@
|
|
1912
2370
|
}
|
1913
2371
|
|
1914
2372
|
//kill the keyboard
|
1915
|
-
$(window.document.activeElement).add("input:focus, textarea:focus, select:focus").blur();
|
2373
|
+
$(window.document.activeElement || "").add("input:focus, textarea:focus, select:focus").blur();
|
1916
2374
|
|
1917
2375
|
function defaultTransition() {
|
1918
2376
|
if (transition === undefined) {
|
@@ -1943,13 +2401,15 @@
|
|
1943
2401
|
|
1944
2402
|
if (from) {
|
1945
2403
|
//set as data for returning to that spot
|
1946
|
-
from
|
2404
|
+
from
|
2405
|
+
.jqmData("lastScroll", currScroll)
|
2406
|
+
.jqmData("lastClicked", $activeClickedLink);
|
1947
2407
|
//trigger before show/hide events
|
1948
2408
|
from.data("page")._trigger("beforehide", null, { nextPage: to });
|
1949
2409
|
}
|
1950
2410
|
to.data("page")._trigger("beforeshow", null, { prevPage: from || $("") });
|
1951
2411
|
|
1952
|
-
function
|
2412
|
+
function pageChangeComplete() {
|
1953
2413
|
|
1954
2414
|
if (changeHash !== false && url) {
|
1955
2415
|
//disable hash listening temporarily
|
@@ -1958,11 +2418,20 @@
|
|
1958
2418
|
path.set(url);
|
1959
2419
|
}
|
1960
2420
|
|
2421
|
+
//if title element wasn't found, try the page div data attr too
|
2422
|
+
var newPageTitle = to.jqmData("title") || to.find(".ui-header .ui-title").text();
|
2423
|
+
if (!!newPageTitle && pageTitle == document.title) {
|
2424
|
+
pageTitle = newPageTitle;
|
2425
|
+
}
|
2426
|
+
|
1961
2427
|
//add page to history stack if it's not back or forward
|
1962
2428
|
if (!back && !forward) {
|
1963
|
-
urlHistory.addNew(url, transition);
|
2429
|
+
urlHistory.addNew(url, transition, pageTitle, to);
|
1964
2430
|
}
|
1965
2431
|
|
2432
|
+
//set page title
|
2433
|
+
document.title = urlHistory.getActive().title;
|
2434
|
+
|
1966
2435
|
removeActiveLinkClass();
|
1967
2436
|
|
1968
2437
|
//jump to top or prev scroll, sometimes on iOS the page has not rendered yet. I could only get by this with a setTimeout, but would like to avoid that.
|
@@ -2004,9 +2473,10 @@
|
|
2004
2473
|
pageContainerClasses = [];
|
2005
2474
|
}
|
2006
2475
|
|
2476
|
+
//clear page loader
|
2477
|
+
$.mobile.pageLoading(true);
|
2007
2478
|
|
2008
2479
|
if (transition && (transition !== 'none')) {
|
2009
|
-
$.mobile.pageLoading(true);
|
2010
2480
|
if ($.inArray(transition, perspectiveTransitions) >= 0) {
|
2011
2481
|
addContainerClass('ui-mobile-viewport-perspective');
|
2012
2482
|
}
|
@@ -2025,17 +2495,16 @@
|
|
2025
2495
|
if (from) {
|
2026
2496
|
from.removeClass($.mobile.activePageClass);
|
2027
2497
|
}
|
2028
|
-
|
2498
|
+
pageChangeComplete();
|
2029
2499
|
removeContainerClasses();
|
2030
2500
|
});
|
2031
2501
|
}
|
2032
2502
|
else {
|
2033
|
-
$.mobile.pageLoading(true);
|
2034
2503
|
if (from) {
|
2035
2504
|
from.removeClass($.mobile.activePageClass);
|
2036
2505
|
}
|
2037
2506
|
to.addClass($.mobile.activePageClass);
|
2038
|
-
|
2507
|
+
pageChangeComplete();
|
2039
2508
|
}
|
2040
2509
|
}
|
2041
2510
|
|
@@ -2092,15 +2561,21 @@
|
|
2092
2561
|
url: fileUrl,
|
2093
2562
|
type: type,
|
2094
2563
|
data: data,
|
2564
|
+
dataType: "html",
|
2095
2565
|
success: function(html) {
|
2096
2566
|
//pre-parse html to check for a data-url,
|
2097
2567
|
//use it as the new fileUrl, base path, etc
|
2098
2568
|
var all = $("<div></div>"),
|
2099
2569
|
redirectLoc,
|
2570
|
+
|
2571
|
+
//page title regexp
|
2572
|
+
newPageTitle = html.match(/<title[^>]*>([^<]*)/) && RegExp.$1,
|
2573
|
+
|
2100
2574
|
// TODO handle dialogs again
|
2101
2575
|
pageElemRegex = new RegExp(".*(<[^>]+\\bdata-" + $.mobile.ns + "role=[\"']?page[\"']?[^>]*>).*"),
|
2102
2576
|
dataUrlRegex = new RegExp("\\bdata-" + $.mobile.ns + "url=[\"']?([^\"'>]*)[\"']?");
|
2103
2577
|
|
2578
|
+
|
2104
2579
|
// data-url must be provided for the base tag so resource requests can be directed to the
|
2105
2580
|
// correct url. loading into a temprorary element makes these requests immediately
|
2106
2581
|
if (pageElemRegex.test(html) && RegExp.$1 && dataUrlRegex.test(RegExp.$1) && RegExp.$1) {
|
@@ -2123,15 +2598,21 @@
|
|
2123
2598
|
all.get(0).innerHTML = html;
|
2124
2599
|
to = all.find(":jqmData(role='page'), :jqmData(role='dialog')").first();
|
2125
2600
|
|
2601
|
+
//finally, if it's defined now, set the page title for storage in urlHistory
|
2602
|
+
if (newPageTitle) {
|
2603
|
+
pageTitle = newPageTitle;
|
2604
|
+
}
|
2605
|
+
|
2126
2606
|
//rewrite src and href attrs to use a base url
|
2127
2607
|
if (!$.support.dynamicBaseTag) {
|
2128
2608
|
var newPath = path.get(fileUrl);
|
2129
|
-
to.find(
|
2609
|
+
to.find("[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]").each(function() {
|
2130
2610
|
var thisAttr = $(this).is('[href]') ? 'href' : 'src',
|
2131
2611
|
thisUrl = $(this).attr(thisAttr);
|
2132
2612
|
|
2613
|
+
|
2133
2614
|
//if full path exists and is same, chop it - helps IE out
|
2134
|
-
thisUrl.replace(location.protocol + '//' + location.host + location.pathname, '');
|
2615
|
+
thisUrl = thisUrl.replace(location.protocol + '//' + location.host + location.pathname, '');
|
2135
2616
|
|
2136
2617
|
if (!/^(\w+:|#|\/)/.test(thisUrl)) {
|
2137
2618
|
$(this).attr(thisAttr, newPath + thisUrl);
|
@@ -2150,19 +2631,29 @@
|
|
2150
2631
|
}, 0);
|
2151
2632
|
},
|
2152
2633
|
error: function() {
|
2634
|
+
|
2635
|
+
//remove loading message
|
2153
2636
|
$.mobile.pageLoading(true);
|
2637
|
+
|
2638
|
+
//clear out the active button state
|
2154
2639
|
removeActiveLinkClass(true);
|
2640
|
+
|
2641
|
+
//set base back to current path
|
2155
2642
|
if (base) {
|
2156
2643
|
base.set(path.get());
|
2157
2644
|
}
|
2158
|
-
|
2645
|
+
|
2646
|
+
//release transition lock so navigation is free again
|
2647
|
+
releasePageTransitionLock();
|
2648
|
+
|
2649
|
+
//show error message
|
2650
|
+
$("<div class='ui-loader ui-overlay-shadow ui-body-e ui-corner-all'><h1>" + $.mobile.pageLoadErrorMessage + "</h1></div>")
|
2159
2651
|
.css({ "display": "block", "opacity": 0.96, "top": $(window).scrollTop() + 100 })
|
2160
2652
|
.appendTo($.mobile.pageContainer)
|
2161
2653
|
.delay(800)
|
2162
2654
|
.fadeOut(400, function() {
|
2163
2655
|
$(this).remove();
|
2164
2656
|
});
|
2165
|
-
releasePageTransitionLock();
|
2166
2657
|
}
|
2167
2658
|
});
|
2168
2659
|
}
|
@@ -2207,14 +2698,36 @@
|
|
2207
2698
|
event.preventDefault();
|
2208
2699
|
});
|
2209
2700
|
|
2701
|
+
function findClosestLink(ele) {
|
2702
|
+
while (ele) {
|
2703
|
+
if (ele.nodeName.toLowerCase() == "a") {
|
2704
|
+
break;
|
2705
|
+
}
|
2706
|
+
ele = ele.parentNode;
|
2707
|
+
}
|
2708
|
+
return ele;
|
2709
|
+
}
|
2710
|
+
|
2711
|
+
//add active state on vclick
|
2712
|
+
$(document).bind("vclick", function(event) {
|
2713
|
+
var link = findClosestLink(event.target);
|
2714
|
+
if (link) {
|
2715
|
+
$(link).closest(".ui-btn").not(".ui-disabled").addClass($.mobile.activeBtnClass);
|
2716
|
+
}
|
2717
|
+
});
|
2718
|
+
|
2210
2719
|
|
2211
2720
|
//click routing - direct to HTTP or Ajax, accordingly
|
2212
|
-
$(
|
2721
|
+
$(document).bind("click", function(event) {
|
2722
|
+
var link = findClosestLink(event.target);
|
2723
|
+
if (!link) {
|
2724
|
+
return;
|
2725
|
+
}
|
2213
2726
|
|
2214
|
-
var $
|
2727
|
+
var $link = $(link),
|
2215
2728
|
|
2216
2729
|
//get href, if defined, otherwise fall to null #
|
2217
|
-
href = $
|
2730
|
+
href = $link.attr("href") || "#",
|
2218
2731
|
|
2219
2732
|
//cache a check for whether the link had a protocol
|
2220
2733
|
//if this is true and the link was same domain, we won't want
|
@@ -2226,7 +2739,7 @@
|
|
2226
2739
|
url = path.clean(href),
|
2227
2740
|
|
2228
2741
|
//rel set to external
|
2229
|
-
isRelExternal = $
|
2742
|
+
isRelExternal = $link.is("[rel='external']"),
|
2230
2743
|
|
2231
2744
|
//rel set to external
|
2232
2745
|
isEmbeddedPage = path.isEmbeddedPage(url),
|
@@ -2245,13 +2758,13 @@
|
|
2245
2758
|
isExternal = (path.isExternal(url) && !isCrossDomainPageLoad) || (isRelExternal && !isEmbeddedPage),
|
2246
2759
|
|
2247
2760
|
//if target attr is specified we mimic _blank... for now
|
2248
|
-
hasTarget = $
|
2761
|
+
hasTarget = $link.is("[target]"),
|
2249
2762
|
|
2250
2763
|
//if data-ajax attr is set to false, use the default behavior of a link
|
2251
|
-
hasAjaxDisabled = $
|
2764
|
+
hasAjaxDisabled = $link.is(":jqmData(ajax='false')");
|
2252
2765
|
|
2253
2766
|
//if there's a data-rel=back attr, go back in history
|
2254
|
-
if ($
|
2767
|
+
if ($link.is(":jqmData(rel='back')")) {
|
2255
2768
|
window.history.back();
|
2256
2769
|
return false;
|
2257
2770
|
}
|
@@ -2264,7 +2777,7 @@
|
|
2264
2777
|
return;
|
2265
2778
|
}
|
2266
2779
|
|
2267
|
-
$activeClickedLink = $
|
2780
|
+
$activeClickedLink = $link.closest(".ui-btn");
|
2268
2781
|
|
2269
2782
|
if (isExternal || hasAjaxDisabled || hasTarget || !$.mobile.ajaxEnabled ||
|
2270
2783
|
// TODO: deprecated - remove at 1.0
|
@@ -2277,30 +2790,28 @@
|
|
2277
2790
|
//use default click handling
|
2278
2791
|
return;
|
2279
2792
|
}
|
2280
|
-
else {
|
2281
|
-
//use ajax
|
2282
|
-
var transition = $this.jqmData("transition"),
|
2283
|
-
direction = $this.jqmData("direction"),
|
2284
|
-
reverse = (direction && direction === "reverse") ||
|
2285
|
-
// deprecated - remove by 1.0
|
2286
|
-
$this.jqmData("back");
|
2287
2793
|
|
2288
|
-
|
2289
|
-
|
2794
|
+
//use ajax
|
2795
|
+
var transition = $link.jqmData("transition"),
|
2796
|
+
direction = $link.jqmData("direction"),
|
2797
|
+
reverse = (direction && direction === "reverse") ||
|
2798
|
+
// deprecated - remove by 1.0
|
2799
|
+
$link.jqmData("back");
|
2290
2800
|
|
2291
|
-
|
2292
|
-
|
2293
|
-
url = path.makeAbsolute(url);
|
2294
|
-
}
|
2295
|
-
|
2296
|
-
url = path.stripHash(url);
|
2801
|
+
//this may need to be more specific as we use data-rel more
|
2802
|
+
nextPageRole = $link.attr("data-" + $.mobile.ns + "rel");
|
2297
2803
|
|
2298
|
-
|
2804
|
+
//if it's a relative href, prefix href with base url
|
2805
|
+
if (path.isRelative(url) && !hadProtocol) {
|
2806
|
+
url = path.makeAbsolute(url);
|
2299
2807
|
}
|
2808
|
+
|
2809
|
+
url = path.stripHash(url);
|
2810
|
+
|
2811
|
+
$.mobile.changePage(url, transition, reverse);
|
2300
2812
|
event.preventDefault();
|
2301
2813
|
});
|
2302
2814
|
|
2303
|
-
|
2304
2815
|
//hashchange event handler
|
2305
2816
|
$window.bind("hashchange", function(e, triggered) {
|
2306
2817
|
//find first page via hash
|
@@ -2317,24 +2828,35 @@
|
|
2317
2828
|
return;
|
2318
2829
|
}
|
2319
2830
|
|
2320
|
-
// special case for dialogs
|
2831
|
+
// special case for dialogs
|
2321
2832
|
if (urlHistory.stack.length > 1 &&
|
2322
|
-
to.indexOf(dialogHashKey) > -1
|
2323
|
-
|
2324
|
-
|
2325
|
-
//
|
2326
|
-
|
2327
|
-
|
2328
|
-
|
2329
|
-
|
2330
|
-
|
2331
|
-
|
2332
|
-
|
2333
|
-
|
2334
|
-
|
2335
|
-
|
2833
|
+
to.indexOf(dialogHashKey) > -1) {
|
2834
|
+
|
2835
|
+
// If current active page is not a dialog skip the dialog and continue
|
2836
|
+
// in the same direction
|
2837
|
+
if (!$.mobile.activePage.is(".ui-dialog")) {
|
2838
|
+
//determine if we're heading forward or backward and continue accordingly past
|
2839
|
+
//the current dialog
|
2840
|
+
urlHistory.directHashChange({
|
2841
|
+
currentUrl: to,
|
2842
|
+
isBack: function() {
|
2843
|
+
window.history.back();
|
2844
|
+
},
|
2845
|
+
isForward: function() {
|
2846
|
+
window.history.forward();
|
2847
|
+
}
|
2848
|
+
});
|
2336
2849
|
|
2337
|
-
|
2850
|
+
// prevent changepage
|
2851
|
+
return;
|
2852
|
+
} else {
|
2853
|
+
var setTo = function() {
|
2854
|
+
to = $.mobile.urlHistory.getActive().page;
|
2855
|
+
};
|
2856
|
+
// if the current active page is a dialog and we're navigating
|
2857
|
+
// to a dialog use the dialog objected saved in the stack
|
2858
|
+
urlHistory.directHashChange({ currentUrl: to, isBack: setTo, isForward: setTo });
|
2859
|
+
}
|
2338
2860
|
}
|
2339
2861
|
|
2340
2862
|
//if to is defined, load it
|
@@ -2346,6 +2868,7 @@
|
|
2346
2868
|
$.mobile.changePage($.mobile.firstPage, transition, true, false, true);
|
2347
2869
|
}
|
2348
2870
|
});
|
2871
|
+
|
2349
2872
|
})(jQuery);
|
2350
2873
|
|
2351
2874
|
|
@@ -2410,15 +2933,12 @@
|
|
2410
2933
|
|
2411
2934
|
$(function() {
|
2412
2935
|
$(document)
|
2413
|
-
.bind(
|
2936
|
+
.bind("vmousedown", function(event) {
|
2414
2937
|
if (touchToggleEnabled) {
|
2415
|
-
if ($(event.target).closest(ignoreTargets).length) {
|
2416
|
-
return;
|
2417
|
-
}
|
2418
2938
|
stateBefore = currentstate;
|
2419
2939
|
}
|
2420
2940
|
})
|
2421
|
-
.bind(
|
2941
|
+
.bind("vclick", function(event) {
|
2422
2942
|
if (touchToggleEnabled) {
|
2423
2943
|
if ($(event.target).closest(ignoreTargets).length) {
|
2424
2944
|
return;
|
@@ -2430,9 +2950,6 @@
|
|
2430
2950
|
}
|
2431
2951
|
})
|
2432
2952
|
.bind('scrollstart', function(event) {
|
2433
|
-
if ($(event.target).closest(ignoreTargets).length) {
|
2434
|
-
return;
|
2435
|
-
} //because it could be a touchmove...
|
2436
2953
|
scrollTriggered = true;
|
2437
2954
|
if (stateBefore == null) {
|
2438
2955
|
stateBefore = currentstate;
|
@@ -2470,30 +2987,30 @@
|
|
2470
2987
|
//before page is shown, check for duplicate footer
|
2471
2988
|
$('.ui-page').live('pagebeforeshow', function(event, ui) {
|
2472
2989
|
var page = $(event.target),
|
2473
|
-
footer = page.find(":jqmData(role='footer')
|
2474
|
-
id = footer.
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2482
|
-
stickyFooter = footer;
|
2483
|
-
footer = stickyFooter.clone(); // footer placeholder
|
2484
|
-
stickyFooter.addClass('ui-sticky-footer').before(footer);
|
2485
|
-
}
|
2486
|
-
footer.addClass('ui-footer-duplicate');
|
2487
|
-
stickyFooter.appendTo($.mobile.pageContainer).css('top', 0);
|
2488
|
-
setTop(stickyFooter);
|
2990
|
+
footer = page.find(":jqmData(role='footer')"),
|
2991
|
+
id = footer.data('id'),
|
2992
|
+
prevPage = ui.prevPage,
|
2993
|
+
prevFooter = prevPage && prevPage.find(":jqmData(role='footer')"),
|
2994
|
+
prevFooterMatches = prevFooter.length && prevFooter.jqmData("id") === id;
|
2995
|
+
|
2996
|
+
if (id && prevFooterMatches) {
|
2997
|
+
stickyFooter = footer;
|
2998
|
+
setTop(stickyFooter.removeClass("fade in out").appendTo($.mobile.pageContainer));
|
2489
2999
|
}
|
2490
3000
|
});
|
2491
3001
|
|
2492
3002
|
//after page is shown, append footer to new page
|
2493
3003
|
$('.ui-page').live('pageshow', function(event, ui) {
|
3004
|
+
var $this = $(this);
|
3005
|
+
|
2494
3006
|
if (stickyFooter && stickyFooter.length) {
|
2495
|
-
|
3007
|
+
|
3008
|
+
setTimeout(function() {
|
3009
|
+
setTop(stickyFooter.appendTo($this).addClass("fade"));
|
3010
|
+
stickyFooter = null;
|
3011
|
+
}, 500);
|
2496
3012
|
}
|
3013
|
+
|
2497
3014
|
$.fixedToolbars.show(true, this);
|
2498
3015
|
});
|
2499
3016
|
|
@@ -2681,57 +3198,33 @@
|
|
2681
3198
|
.wrapAll("<div class='ui-" + inputtype + "'></div>");
|
2682
3199
|
|
2683
3200
|
label.bind({
|
2684
|
-
|
3201
|
+
vmouseover: function() {
|
2685
3202
|
if ($(this).parent().is('.ui-disabled')) {
|
2686
3203
|
return false;
|
2687
3204
|
}
|
2688
3205
|
},
|
2689
3206
|
|
2690
|
-
|
2691
|
-
var oe = event.originalEvent.touches[0];
|
2692
|
-
if (label.jqmData("movestart")) {
|
2693
|
-
if (Math.abs(label.jqmData("movestart")[0] - oe.pageX) > 10 ||
|
2694
|
-
Math.abs(label.jqmData("movestart")[1] - oe.pageY) > 10) {
|
2695
|
-
label.jqmData("moved", true);
|
2696
|
-
}
|
2697
|
-
}
|
2698
|
-
else {
|
2699
|
-
label.jqmData("movestart", [ parseFloat(oe.pageX), parseFloat(oe.pageY) ]);
|
2700
|
-
}
|
2701
|
-
},
|
2702
|
-
|
2703
|
-
"touchend mouseup": function(event) {
|
3207
|
+
vclick: function(event) {
|
2704
3208
|
if (input.is(":disabled")) {
|
2705
3209
|
event.preventDefault();
|
2706
3210
|
return;
|
2707
3211
|
}
|
2708
3212
|
|
2709
|
-
label.removeData("movestart");
|
2710
|
-
if (label.jqmData("etype") && label.jqmData("etype") !== event.type || label.jqmData("moved")) {
|
2711
|
-
label.removeData("etype").removeData("moved");
|
2712
|
-
if (label.jqmData("moved")) {
|
2713
|
-
label.removeData("moved");
|
2714
|
-
}
|
2715
|
-
return false;
|
2716
|
-
}
|
2717
|
-
label.jqmData("etype", event.type);
|
2718
3213
|
self._cacheVals();
|
2719
3214
|
input.attr("checked", inputtype === "radio" && true || !input.is(":checked"));
|
2720
3215
|
self._updateAll();
|
2721
|
-
|
2722
|
-
}
|
2723
|
-
|
2724
|
-
click: false
|
3216
|
+
return false;
|
3217
|
+
}
|
2725
3218
|
|
2726
3219
|
});
|
2727
3220
|
|
2728
3221
|
input
|
2729
3222
|
.bind({
|
2730
|
-
|
3223
|
+
vmousedown: function() {
|
2731
3224
|
this._cacheVals();
|
2732
3225
|
},
|
2733
3226
|
|
2734
|
-
|
3227
|
+
vclick: function() {
|
2735
3228
|
self._updateAll();
|
2736
3229
|
},
|
2737
3230
|
|
@@ -2761,9 +3254,10 @@
|
|
2761
3254
|
},
|
2762
3255
|
|
2763
3256
|
_updateAll: function() {
|
3257
|
+
var self = this;
|
3258
|
+
|
2764
3259
|
this._getInputSet().each(function() {
|
2765
|
-
|
2766
|
-
if (dVal && dVal !== $(this).is(":checked") || this.inputtype === "checkbox") {
|
3260
|
+
if ($(this).is(":checked") || self.inputtype === "checkbox") {
|
2767
3261
|
$(this).trigger("change");
|
2768
3262
|
}
|
2769
3263
|
})
|
@@ -3083,20 +3577,20 @@
|
|
3083
3577
|
|
3084
3578
|
select
|
3085
3579
|
.appendTo(button)
|
3086
|
-
.bind("
|
3580
|
+
.bind("vmousedown", function(e) {
|
3087
3581
|
//add active class to button
|
3088
3582
|
button.addClass($.mobile.activeBtnClass);
|
3089
3583
|
})
|
3090
|
-
.bind("focus
|
3091
|
-
button.trigger("
|
3584
|
+
.bind("focus vmouseover", function() {
|
3585
|
+
button.trigger("vmouseover");
|
3092
3586
|
})
|
3093
|
-
.bind("
|
3587
|
+
.bind("vmousemove", function() {
|
3094
3588
|
//remove active class on scroll/touchmove
|
3095
3589
|
button.removeClass($.mobile.activeBtnClass);
|
3096
3590
|
})
|
3097
|
-
.bind("change blur
|
3591
|
+
.bind("change blur vmouseout", function() {
|
3098
3592
|
button
|
3099
|
-
.trigger("
|
3593
|
+
.trigger("vmouseout")
|
3100
3594
|
.removeClass($.mobile.activeBtnClass);
|
3101
3595
|
});
|
3102
3596
|
|
@@ -3115,43 +3609,28 @@
|
|
3115
3609
|
|
3116
3610
|
//button events
|
3117
3611
|
button
|
3118
|
-
.bind("
|
3119
|
-
|
3120
|
-
|
3121
|
-
})
|
3122
|
-
.bind($.support.touch ? "touchend" : "mouseup", function(event) {
|
3123
|
-
//if it's a scroll, don't open
|
3124
|
-
if ($(this).jqmData("moved")) {
|
3125
|
-
$(this).removeData("moved");
|
3126
|
-
} else {
|
3612
|
+
.bind("vclick keydown", function(event) {
|
3613
|
+
if (event.type == "vclick" ||
|
3614
|
+
event.keyCode && ( event.keyCode === $.mobile.keyCode.ENTER || event.keyCode === $.mobile.keyCode.SPACE )) {
|
3127
3615
|
self.open();
|
3128
|
-
|
3129
|
-
event.preventDefault();
|
3130
|
-
})
|
3131
|
-
.bind("touchmove", function(event) {
|
3132
|
-
//if touch moved enough, set data moved and don't open menu
|
3133
|
-
var thisTouches = event.originalEvent.touches[ 0 ],
|
3134
|
-
startTouches = $(this).jqmData("startTouches"),
|
3135
|
-
deltaX = Math.abs(thisTouches.pageX - startTouches.pageX),
|
3136
|
-
deltaY = Math.abs(thisTouches.pageY - startTouches.pageY);
|
3137
|
-
|
3138
|
-
if (deltaX > 10 || deltaY > 10) {
|
3139
|
-
$(this).jqmData("moved", true);
|
3616
|
+
event.preventDefault();
|
3140
3617
|
}
|
3141
3618
|
});
|
3142
3619
|
|
3143
|
-
|
3144
3620
|
//events for list items
|
3145
|
-
list
|
3146
|
-
|
3147
|
-
|
3148
|
-
|
3149
|
-
|
3150
|
-
|
3151
|
-
|
3621
|
+
list
|
3622
|
+
.attr("role", "listbox")
|
3623
|
+
.delegate(".ui-li>a", "focusin", function() {
|
3624
|
+
$(this).attr("tabindex", "0");
|
3625
|
+
})
|
3626
|
+
.delegate(".ui-li>a", "focusout", function() {
|
3627
|
+
$(this).attr("tabindex", "-1");
|
3628
|
+
})
|
3629
|
+
.delegate("li:not(.ui-disabled, .ui-li-divider)", "vclick", function(event) {
|
3152
3630
|
|
3153
3631
|
// index of option tag to be selected
|
3154
|
-
var
|
3632
|
+
var oldIndex = select[0].selectedIndex,
|
3633
|
+
newIndex = list.find("li:not(.ui-li-divider)").index(this),
|
3155
3634
|
option = self.optionElems.eq(newIndex)[0];
|
3156
3635
|
|
3157
3636
|
// toggle selected status on the tag for multi selects
|
@@ -3165,8 +3644,10 @@
|
|
3165
3644
|
.toggleClass('ui-icon-checkbox-off', !option.selected);
|
3166
3645
|
}
|
3167
3646
|
|
3168
|
-
// trigger change
|
3169
|
-
|
3647
|
+
// trigger change if value changed
|
3648
|
+
if (oldIndex !== newIndex) {
|
3649
|
+
select.trigger("change");
|
3650
|
+
}
|
3170
3651
|
|
3171
3652
|
//hide custom select for single selects only
|
3172
3653
|
if (!isMultiple) {
|
@@ -3174,12 +3655,68 @@
|
|
3174
3655
|
}
|
3175
3656
|
|
3176
3657
|
event.preventDefault();
|
3658
|
+
})
|
3659
|
+
//keyboard events for menu items
|
3660
|
+
.keydown(function(e) {
|
3661
|
+
var target = $(e.target),
|
3662
|
+
li = target.closest("li");
|
3663
|
+
|
3664
|
+
// switch logic based on which key was pressed
|
3665
|
+
switch (e.keyCode) {
|
3666
|
+
// up or left arrow keys
|
3667
|
+
case 38:
|
3668
|
+
var prev = li.prev();
|
3669
|
+
|
3670
|
+
// if there's a previous option, focus it
|
3671
|
+
if (prev.length) {
|
3672
|
+
target
|
3673
|
+
.blur()
|
3674
|
+
.attr("tabindex", "-1");
|
3675
|
+
|
3676
|
+
prev.find("a").first().focus();
|
3677
|
+
}
|
3678
|
+
|
3679
|
+
return false;
|
3680
|
+
break;
|
3681
|
+
|
3682
|
+
// down or right arrow keys
|
3683
|
+
case 40:
|
3684
|
+
var next = li.next();
|
3685
|
+
|
3686
|
+
// if there's a next option, focus it
|
3687
|
+
if (next.length) {
|
3688
|
+
target
|
3689
|
+
.blur()
|
3690
|
+
.attr("tabindex", "-1");
|
3691
|
+
|
3692
|
+
next.find("a").first().focus();
|
3693
|
+
}
|
3694
|
+
|
3695
|
+
return false;
|
3696
|
+
break;
|
3697
|
+
|
3698
|
+
// if enter or space is pressed, trigger click
|
3699
|
+
case 13:
|
3700
|
+
case 32:
|
3701
|
+
target.trigger("vclick");
|
3702
|
+
|
3703
|
+
return false;
|
3704
|
+
break;
|
3705
|
+
}
|
3177
3706
|
});
|
3178
3707
|
|
3179
|
-
//events on "screen" overlay
|
3180
|
-
screen.
|
3708
|
+
//events on "screen" overlay
|
3709
|
+
screen.bind("vclick", function(event) {
|
3181
3710
|
self.close();
|
3182
3711
|
});
|
3712
|
+
|
3713
|
+
//close button on small overlays
|
3714
|
+
self.headerClose.click(function() {
|
3715
|
+
if (self.menuType == "overlay") {
|
3716
|
+
self.close();
|
3717
|
+
return false;
|
3718
|
+
}
|
3719
|
+
})
|
3183
3720
|
}
|
3184
3721
|
},
|
3185
3722
|
|
@@ -3232,6 +3769,10 @@
|
|
3232
3769
|
|
3233
3770
|
self.list.html(lis.join(" "));
|
3234
3771
|
|
3772
|
+
self.list.find("li")
|
3773
|
+
.attr({ "role": "option", "tabindex": "-1" })
|
3774
|
+
.first().attr("tabindex", "0");
|
3775
|
+
|
3235
3776
|
// hide header close link for single selects
|
3236
3777
|
if (!this.isMultiple) {
|
3237
3778
|
this.headerClose.hide();
|
@@ -3317,8 +3858,7 @@
|
|
3317
3858
|
scrollTop = $(window).scrollTop(),
|
3318
3859
|
btnOffset = self.button.offset().top,
|
3319
3860
|
screenHeight = window.innerHeight,
|
3320
|
-
screenWidth = window.innerWidth
|
3321
|
-
dialogUsed = self.list.parents('.ui-dialog').length;
|
3861
|
+
screenWidth = window.innerWidth;
|
3322
3862
|
|
3323
3863
|
//add active class to button
|
3324
3864
|
self.button.addClass($.mobile.activeBtnClass);
|
@@ -3332,9 +3872,7 @@
|
|
3332
3872
|
self.list.find(".ui-btn-active").focus();
|
3333
3873
|
}
|
3334
3874
|
|
3335
|
-
|
3336
|
-
// is display: none. Upstream?
|
3337
|
-
if (dialogUsed || menuHeight > screenHeight - 80 || !$.support.scrollTop) {
|
3875
|
+
if (menuHeight > screenHeight - 80 || !$.support.scrollTop) {
|
3338
3876
|
|
3339
3877
|
//for webos (set lastscroll using button offset)
|
3340
3878
|
if (scrollTop == 0 && btnOffset > screenHeight) {
|
@@ -3538,23 +4076,50 @@
|
|
3538
4076
|
wrapperEls: "span"
|
3539
4077
|
};
|
3540
4078
|
|
4079
|
+
function closestEnabledButton(element) {
|
4080
|
+
while (element) {
|
4081
|
+
var $ele = $(element);
|
4082
|
+
if ($ele.hasClass("ui-btn") && !ele.hasClass("ui-disabled")) {
|
4083
|
+
break;
|
4084
|
+
}
|
4085
|
+
element = element.parentNode;
|
4086
|
+
}
|
4087
|
+
return element;
|
4088
|
+
}
|
4089
|
+
|
3541
4090
|
var attachEvents = function() {
|
3542
|
-
$(
|
3543
|
-
"
|
3544
|
-
var
|
3545
|
-
|
4091
|
+
$(document).bind({
|
4092
|
+
"vmousedown": function() {
|
4093
|
+
var btn = closestEnabledButton(this);
|
4094
|
+
if (btn) {
|
4095
|
+
var $btn = $(btn),
|
4096
|
+
theme = $btn.attr("data-" + $.mobile.ns + "theme");
|
4097
|
+
$btn.removeClass("ui-btn-up-" + theme).addClass("ui-btn-down-" + theme);
|
4098
|
+
}
|
3546
4099
|
},
|
3547
|
-
"
|
3548
|
-
var
|
3549
|
-
|
4100
|
+
"vmousecancel vmouseup": function() {
|
4101
|
+
var btn = closestEnabledButton(this);
|
4102
|
+
if (btn) {
|
4103
|
+
var $btn = $(btn),
|
4104
|
+
theme = $btn.attr("data-" + $.mobile.ns + "theme");
|
4105
|
+
$btn.removeClass("ui-btn-down-" + theme).addClass("ui-btn-up-" + theme);
|
4106
|
+
}
|
3550
4107
|
},
|
3551
|
-
"
|
3552
|
-
var
|
3553
|
-
|
4108
|
+
"vmouseover focus": function() {
|
4109
|
+
var btn = closestEnabledButton(this);
|
4110
|
+
if (btn) {
|
4111
|
+
var $btn = $(btn),
|
4112
|
+
theme = $btn.attr("data-" + $.mobile.ns + "theme");
|
4113
|
+
$btn.removeClass("ui-btn-up-" + theme).addClass("ui-btn-hover-" + theme);
|
4114
|
+
}
|
3554
4115
|
},
|
3555
|
-
"
|
3556
|
-
var
|
3557
|
-
|
4116
|
+
"vmouseout blur": function() {
|
4117
|
+
var btn = closestEnabledButton(this);
|
4118
|
+
if (btn) {
|
4119
|
+
var $btn = $(btn),
|
4120
|
+
theme = $btn.attr("data-" + $.mobile.ns + "theme");
|
4121
|
+
$btn.removeClass("ui-btn-hover-" + theme).addClass("ui-btn-up-" + theme);
|
4122
|
+
}
|
3558
4123
|
}
|
3559
4124
|
});
|
3560
4125
|
|
@@ -3603,7 +4168,7 @@
|
|
3603
4168
|
//add hidden input during submit
|
3604
4169
|
var type = $el.attr('type');
|
3605
4170
|
if (type !== 'button' && type !== 'reset') {
|
3606
|
-
$el.
|
4171
|
+
$el.bind("vclick", function() {
|
3607
4172
|
var $buttonPlaceholder = $("<input>",
|
3608
4173
|
{type: "hidden", name: $el.attr("name"), value: $el.attr("value")})
|
3609
4174
|
.insertBefore($el);
|
@@ -3729,7 +4294,7 @@
|
|
3729
4294
|
});
|
3730
4295
|
|
3731
4296
|
// prevent screen drag when slider activated
|
3732
|
-
$(document).bind("
|
4297
|
+
$(document).bind("vmousemove", function(event) {
|
3733
4298
|
if (self.dragging) {
|
3734
4299
|
self.refresh(event);
|
3735
4300
|
return false;
|
@@ -3737,7 +4302,7 @@
|
|
3737
4302
|
});
|
3738
4303
|
|
3739
4304
|
slider
|
3740
|
-
.bind("
|
4305
|
+
.bind("vmousedown", function(event) {
|
3741
4306
|
self.dragging = true;
|
3742
4307
|
if (cType === "select") {
|
3743
4308
|
self.beforeStart = control[0].selectedIndex;
|
@@ -3748,7 +4313,7 @@
|
|
3748
4313
|
|
3749
4314
|
slider
|
3750
4315
|
.add(document)
|
3751
|
-
.bind("
|
4316
|
+
.bind("vmouseup", function() {
|
3752
4317
|
if (self.dragging) {
|
3753
4318
|
self.dragging = false;
|
3754
4319
|
if (cType === "select") {
|
@@ -3773,9 +4338,10 @@
|
|
3773
4338
|
|
3774
4339
|
// NOTE force focus on handle
|
3775
4340
|
this.handle
|
3776
|
-
.bind("
|
4341
|
+
.bind("vmousedown", function() {
|
3777
4342
|
$(this).focus();
|
3778
|
-
})
|
4343
|
+
})
|
4344
|
+
.bind("vclick", false);
|
3779
4345
|
|
3780
4346
|
this.handle
|
3781
4347
|
.bind("keydown", function(event) {
|
@@ -3845,7 +4411,7 @@
|
|
3845
4411
|
max = (cType === "input") ? parseFloat(control.attr("max")) : control.find("option").length - 1;
|
3846
4412
|
|
3847
4413
|
if (typeof val === "object") {
|
3848
|
-
var data = val
|
4414
|
+
var data = val,
|
3849
4415
|
// a slight tolerance helped get to the ends of the slider
|
3850
4416
|
tol = 8;
|
3851
4417
|
if (!this.dragging
|
@@ -3925,6 +4491,7 @@
|
|
3925
4491
|
this.slider.addClass("ui-disabled").attr("aria-disabled", true);
|
3926
4492
|
return this._setOption("disabled", true);
|
3927
4493
|
}
|
4494
|
+
|
3928
4495
|
});
|
3929
4496
|
})(jQuery);
|
3930
4497
|
|
@@ -4053,6 +4620,7 @@
|
|
4053
4620
|
.not("> .ui-collapsible-contain .ui-collapsible-contain")
|
4054
4621
|
.trigger("collapse");
|
4055
4622
|
});
|
4623
|
+
|
4056
4624
|
var set = collapsibleParent.find(":jqmData(role=collapsible)")
|
4057
4625
|
|
4058
4626
|
set.first()
|
@@ -4065,18 +4633,15 @@
|
|
4065
4633
|
}
|
4066
4634
|
|
4067
4635
|
collapsibleHeading
|
4068
|
-
.bind({
|
4069
|
-
|
4070
|
-
|
4071
|
-
|
4072
|
-
|
4073
|
-
|
4074
|
-
|
4075
|
-
|
4076
|
-
|
4077
|
-
},
|
4078
|
-
"click": false
|
4079
|
-
});
|
4636
|
+
.bind("vclick", function(e) {
|
4637
|
+
if (collapsibleHeading.is('.ui-collapsible-heading-collapsed')) {
|
4638
|
+
collapsibleContain.trigger('expand');
|
4639
|
+
}
|
4640
|
+
else {
|
4641
|
+
collapsibleContain.trigger('collapse');
|
4642
|
+
}
|
4643
|
+
return false;
|
4644
|
+
});
|
4080
4645
|
}
|
4081
4646
|
});
|
4082
4647
|
})(jQuery);
|
@@ -4162,92 +4727,13 @@
|
|
4162
4727
|
|
4163
4728
|
// create listview markup
|
4164
4729
|
$list
|
4165
|
-
.addClass("ui-listview")
|
4166
|
-
.attr("role", "listbox")
|
4730
|
+
.addClass("ui-listview");
|
4167
4731
|
|
4168
4732
|
if (o.inset) {
|
4169
4733
|
$list.addClass("ui-listview-inset ui-corner-all ui-shadow");
|
4170
4734
|
}
|
4171
4735
|
|
4172
|
-
|
4173
|
-
$(this).attr("tabindex", "0");
|
4174
|
-
});
|
4175
|
-
|
4176
|
-
this._itemApply($list, $list);
|
4177
|
-
|
4178
|
-
this.refresh(true);
|
4179
|
-
|
4180
|
-
//keyboard events for menu items
|
4181
|
-
$list.keydown(function(e) {
|
4182
|
-
var target = $(e.target),
|
4183
|
-
li = target.closest("li");
|
4184
|
-
|
4185
|
-
// switch logic based on which key was pressed
|
4186
|
-
switch (e.keyCode) {
|
4187
|
-
// up or left arrow keys
|
4188
|
-
case 38:
|
4189
|
-
var prev = li.prev();
|
4190
|
-
|
4191
|
-
// if there's a previous option, focus it
|
4192
|
-
if (prev.length) {
|
4193
|
-
target
|
4194
|
-
.blur()
|
4195
|
-
.attr("tabindex", "-1");
|
4196
|
-
|
4197
|
-
prev.find("a").first().focus();
|
4198
|
-
}
|
4199
|
-
|
4200
|
-
return false;
|
4201
|
-
break;
|
4202
|
-
|
4203
|
-
// down or right arrow keys
|
4204
|
-
case 40:
|
4205
|
-
var next = li.next();
|
4206
|
-
|
4207
|
-
// if there's a next option, focus it
|
4208
|
-
if (next.length) {
|
4209
|
-
target
|
4210
|
-
.blur()
|
4211
|
-
.attr("tabindex", "-1");
|
4212
|
-
|
4213
|
-
next.find("a").first().focus();
|
4214
|
-
}
|
4215
|
-
|
4216
|
-
return false;
|
4217
|
-
break;
|
4218
|
-
|
4219
|
-
case 39:
|
4220
|
-
var a = li.find("a.ui-li-link-alt");
|
4221
|
-
|
4222
|
-
if (a.length) {
|
4223
|
-
target.blur();
|
4224
|
-
a.first().focus();
|
4225
|
-
}
|
4226
|
-
|
4227
|
-
return false;
|
4228
|
-
break;
|
4229
|
-
|
4230
|
-
case 37:
|
4231
|
-
var a = li.find("a.ui-link-inherit");
|
4232
|
-
|
4233
|
-
if (a.length) {
|
4234
|
-
target.blur();
|
4235
|
-
a.first().focus();
|
4236
|
-
}
|
4237
|
-
|
4238
|
-
return false;
|
4239
|
-
break;
|
4240
|
-
|
4241
|
-
// if enter or space is pressed, trigger click
|
4242
|
-
case 13:
|
4243
|
-
case 32:
|
4244
|
-
target.trigger("click");
|
4245
|
-
|
4246
|
-
return false;
|
4247
|
-
break;
|
4248
|
-
}
|
4249
|
-
});
|
4250
|
-
|
4736
|
+
this.refresh();
|
4251
4737
|
},
|
4252
4738
|
|
4253
4739
|
_itemApply: function($list, item) {
|
@@ -4259,22 +4745,14 @@
|
|
4259
4745
|
|
4260
4746
|
item.find("p, dl").addClass("ui-li-desc");
|
4261
4747
|
|
4262
|
-
|
4263
|
-
$(this).
|
4264
|
-
.addClass($(this).is(".ui-li-icon") ? "ui-li-has-icon" : "ui-li-has-thumb");
|
4748
|
+
item.find("img:first-child:eq(0)").addClass("ui-li-thumb").each(function() {
|
4749
|
+
item.addClass($(this).is(".ui-li-icon") ? "ui-li-has-icon" : "ui-li-has-thumb");
|
4265
4750
|
});
|
4266
4751
|
|
4267
|
-
|
4268
|
-
|
4269
|
-
|
4270
|
-
|
4271
|
-
$(el).prependTo($(el).parent()); //shift aside to front for css float
|
4272
|
-
});
|
4273
|
-
}
|
4274
|
-
|
4275
|
-
if ($.support.cssPseudoElement || !$.nodeName(item[0], "ol")) {
|
4276
|
-
return;
|
4277
|
-
}
|
4752
|
+
item.find(".ui-li-aside").each(function() {
|
4753
|
+
var $this = $(this);
|
4754
|
+
$this.prependTo($this.parent()); //shift aside to front for css float
|
4755
|
+
});
|
4278
4756
|
},
|
4279
4757
|
|
4280
4758
|
_removeCorners: function(li) {
|
@@ -4290,6 +4768,8 @@
|
|
4290
4768
|
$list = this.element,
|
4291
4769
|
self = this,
|
4292
4770
|
dividertheme = $list.jqmData("dividertheme") || o.dividerTheme,
|
4771
|
+
listsplittheme = $list.jqmData("splittheme"),
|
4772
|
+
listspliticon = $list.jqmData("spliticon"),
|
4293
4773
|
li = $list.children("li"),
|
4294
4774
|
counter = $.support.cssPseudoElement || !$.nodeName($list[0], "ol") ? 0 : 1;
|
4295
4775
|
|
@@ -4297,23 +4777,19 @@
|
|
4297
4777
|
$list.find(".ui-li-dec").remove();
|
4298
4778
|
}
|
4299
4779
|
|
4300
|
-
|
4301
|
-
|
4302
|
-
|
4303
|
-
|
4304
|
-
|
4305
|
-
li.each(function(pos) {
|
4306
|
-
var item = $(this),
|
4780
|
+
var numli = li.length;
|
4781
|
+
for (var pos = 0; pos < numli; pos++) {
|
4782
|
+
var item = li.eq(pos),
|
4307
4783
|
itemClass = "ui-li";
|
4308
4784
|
|
4309
4785
|
// If we're creating the element, we update it regardless
|
4310
4786
|
if (!create && item.hasClass("ui-li")) {
|
4311
|
-
|
4787
|
+
continue;
|
4312
4788
|
}
|
4313
4789
|
|
4314
4790
|
var itemTheme = item.jqmData("theme") || o.theme;
|
4315
4791
|
|
4316
|
-
var a = item.
|
4792
|
+
var a = item.children("a");
|
4317
4793
|
|
4318
4794
|
if (a.length) {
|
4319
4795
|
var icon = item.jqmData("icon");
|
@@ -4334,7 +4810,7 @@
|
|
4334
4810
|
itemClass += " ui-li-has-alt";
|
4335
4811
|
|
4336
4812
|
var last = a.last(),
|
4337
|
-
splittheme =
|
4813
|
+
splittheme = listsplittheme || last.jqmData("theme") || o.splitTheme;
|
4338
4814
|
|
4339
4815
|
last
|
4340
4816
|
.appendTo(item)
|
@@ -4354,7 +4830,7 @@
|
|
4354
4830
|
corners: true,
|
4355
4831
|
theme: splittheme,
|
4356
4832
|
iconpos: "notext",
|
4357
|
-
icon:
|
4833
|
+
icon: listspliticon || last.jqmData("icon") || o.splitIcon
|
4358
4834
|
}));
|
4359
4835
|
}
|
4360
4836
|
|
@@ -4368,7 +4844,7 @@
|
|
4368
4844
|
}
|
4369
4845
|
|
4370
4846
|
} else {
|
4371
|
-
itemClass += " ui-li-static ui-
|
4847
|
+
itemClass += " ui-li-static ui-body-" + itemTheme;
|
4372
4848
|
}
|
4373
4849
|
|
4374
4850
|
|
@@ -4407,8 +4883,10 @@
|
|
4407
4883
|
|
4408
4884
|
|
4409
4885
|
if (counter && itemClass.indexOf("ui-li-divider") < 0) {
|
4410
|
-
|
4411
|
-
|
4886
|
+
|
4887
|
+
var countParent = item.is(".ui-li-static:first") ? item : item.find(".ui-link-inherit");
|
4888
|
+
|
4889
|
+
countParent
|
4412
4890
|
.addClass("ui-li-jsnumbering")
|
4413
4891
|
.prepend("<span class='ui-li-dec'>" + (counter++) + ". </span>");
|
4414
4892
|
}
|
@@ -4418,7 +4896,7 @@
|
|
4418
4896
|
if (!create) {
|
4419
4897
|
self._itemApply($list, item);
|
4420
4898
|
}
|
4421
|
-
}
|
4899
|
+
}
|
4422
4900
|
},
|
4423
4901
|
|
4424
4902
|
//create a string for ID/subpage url creation
|
@@ -4431,31 +4909,32 @@
|
|
4431
4909
|
parentPage = parentList.closest(".ui-page"),
|
4432
4910
|
parentId = parentPage.jqmData("url"),
|
4433
4911
|
o = this.options,
|
4912
|
+
dns = "data-" + $.mobile.ns,
|
4434
4913
|
self = this,
|
4435
4914
|
persistentFooterID = parentPage.find(":jqmData(role='footer')").jqmData("id");
|
4436
4915
|
|
4437
|
-
$(parentList.find("ul, ol").toArray().reverse()).each(
|
4916
|
+
$(parentList.find("li>ul, li>ol").toArray().reverse()).each(
|
4438
4917
|
function(i) {
|
4439
4918
|
var list = $(this),
|
4440
4919
|
parent = list.parent(),
|
4441
|
-
|
4920
|
+
nodeEls = $(list.prevAll().toArray().reverse()),
|
4921
|
+
nodeEls = nodeEls.length ? nodeEls : $("<span>" + $.trim(parent.contents()[ 0 ].nodeValue) + "</span>"),
|
4922
|
+
title = nodeEls.first().text(),//url limits to first 30 chars of text
|
4442
4923
|
id = parentId + "&" + $.mobile.subPageUrlKey + "=" + self._idStringEscape(title + " " + i),
|
4443
4924
|
theme = list.jqmData("theme") || o.theme,
|
4444
4925
|
countTheme = list.jqmData("counttheme") || parentList.jqmData("counttheme") || o.countTheme,
|
4445
|
-
newPage = list.
|
4926
|
+
newPage = list.detach()
|
4927
|
+
.wrap("<div " + dns + "role='page'" + dns + "url='" + id + "' " + dns + "theme='" + theme + "' " + dns + "count-theme='" + countTheme + "'><div " + dns + "role='content'></div></div>")
|
4446
4928
|
.parent()
|
4447
|
-
.before("<div
|
4448
|
-
.after(persistentFooterID ? $("<div
|
4929
|
+
.before("<div " + dns + "role='header' " + dns + "theme='" + o.headerTheme + "'><div class='ui-title'>" + title + "</div></div>")
|
4930
|
+
.after(persistentFooterID ? $("<div " + dns + "role='footer' " + dns + "id='" + persistentFooterID + "'>") : "")
|
4449
4931
|
.parent()
|
4450
|
-
.attr("data-" + $.mobile.ns + "url", id)
|
4451
|
-
.attr("data-" + $.mobile.ns + "theme", theme)
|
4452
|
-
.attr("data-" + $.mobile.ns + "count-theme", countTheme)
|
4453
4932
|
.appendTo($.mobile.pageContainer);
|
4454
4933
|
|
4455
4934
|
newPage.page();
|
4456
4935
|
var anchor = parent.find('a:first');
|
4457
4936
|
if (!anchor.length) {
|
4458
|
-
anchor = $("<a></a>").html(title).prependTo(parent.empty());
|
4937
|
+
anchor = $("<a></a>").html(nodeEls || title).prependTo(parent.empty());
|
4459
4938
|
}
|
4460
4939
|
anchor.attr('href', '#' + id);
|
4461
4940
|
}).listview();
|
@@ -4474,6 +4953,7 @@
|
|
4474
4953
|
(function($, undefined) {
|
4475
4954
|
|
4476
4955
|
$.mobile.listview.prototype.options.filter = false;
|
4956
|
+
$.mobile.listview.prototype.options.filterPlaceholder = "Filter items...";
|
4477
4957
|
|
4478
4958
|
$(":jqmData(role='listview')").live("listviewcreate", function() {
|
4479
4959
|
var list = $(this),
|
@@ -4486,7 +4966,7 @@
|
|
4486
4966
|
var wrapper = $("<form>", { "class": "ui-listview-filter ui-bar-c", "role": "search" }),
|
4487
4967
|
|
4488
4968
|
search = $("<input>", {
|
4489
|
-
placeholder:
|
4969
|
+
placeholder: listview.options.filterPlaceholder
|
4490
4970
|
})
|
4491
4971
|
.attr("data-" + $.mobile.ns + "type", "search")
|
4492
4972
|
.bind("keyup change", function() {
|
@@ -4537,7 +5017,9 @@
|
|
4537
5017
|
*/
|
4538
5018
|
(function($, undefined) {
|
4539
5019
|
$.widget("mobile.dialog", $.mobile.widget, {
|
4540
|
-
options: {
|
5020
|
+
options: {
|
5021
|
+
closeBtnText: "Close"
|
5022
|
+
},
|
4541
5023
|
_create: function() {
|
4542
5024
|
var self = this,
|
4543
5025
|
$el = self.element;
|
@@ -4549,7 +5031,7 @@
|
|
4549
5031
|
.addClass('ui-page ui-dialog ui-body-a')
|
4550
5032
|
.find(":jqmData(role=header)")
|
4551
5033
|
.addClass('ui-corner-top ui-overlay-shadow')
|
4552
|
-
.prepend("<a href='#' data-" + $.mobile.ns + "icon='delete' data-" + $.mobile.ns + "rel='back' data-" + $.mobile.ns + "iconpos='notext'>
|
5034
|
+
.prepend("<a href='#' data-" + $.mobile.ns + "icon='delete' data-" + $.mobile.ns + "rel='back' data-" + $.mobile.ns + "iconpos='notext'>" + this.options.closeBtnText + "</a>")
|
4553
5035
|
.end()
|
4554
5036
|
.find('.ui-content:not([class*="ui-body-"])')
|
4555
5037
|
.addClass('ui-body-c')
|
@@ -4564,9 +5046,9 @@
|
|
4564
5046
|
- if the click was on the close button, or the link has a data-rel="back" it'll go back in history naturally
|
4565
5047
|
*/
|
4566
5048
|
this.element
|
4567
|
-
.bind("
|
5049
|
+
.bind("vclick submit", function(e) {
|
4568
5050
|
var $targetel;
|
4569
|
-
if (e.type == "
|
5051
|
+
if (e.type == "vclick") {
|
4570
5052
|
$targetel = $(e.target).closest("a");
|
4571
5053
|
}
|
4572
5054
|
else {
|
@@ -4623,14 +5105,15 @@
|
|
4623
5105
|
iconpos: iconpos
|
4624
5106
|
});
|
4625
5107
|
|
4626
|
-
$navbar.delegate("a", "
|
4627
|
-
$navbtns.
|
4628
|
-
$(this).addClass(
|
5108
|
+
$navbar.delegate("a", "vclick", function(event) {
|
5109
|
+
$navbtns.not(".ui-state-persist").removeClass($.mobile.activeBtnClass);
|
5110
|
+
$(this).addClass($.mobile.activeBtnClass);
|
4629
5111
|
});
|
4630
5112
|
}
|
4631
5113
|
});
|
4632
5114
|
})(jQuery);
|
4633
5115
|
|
5116
|
+
|
4634
5117
|
/*
|
4635
5118
|
* jQuery Mobile Framework : plugin for creating CSS grids
|
4636
5119
|
* Copyright (c) jQuery Project
|