From ce3816ea30544f63eadb2ebf61b7736378c4c106 Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Fri, 23 Nov 2012 20:14:23 +0100 Subject: [PATCH] removed: unneeded files --- .editorconfig | 16 - .gitignore | 148 +- .jshintrc | 12 - README.md | 99 - build/core.json | 68 - build/effect.json | 38 - build/interaction.json | 36 - build/release/changelog-shell | 109 - build/release/release.js | 409 - build/tasks/build.js | 241 - build/tasks/testswarm.js | 82 - build/widget.json | 98 - demos/accordion/collapsible.html | 50 - demos/accordion/custom-icons.html | 64 - demos/accordion/default.html | 80 - demos/accordion/fillspace.html | 72 - demos/accordion/hoverintent.html | 133 - demos/accordion/index.html | 20 - demos/accordion/no-auto-height.html | 50 - demos/accordion/sortable.html | 74 - demos/addClass/default.html | 45 - demos/addClass/index.html | 14 - demos/animate/default.html | 55 - demos/animate/index.html | 14 - demos/autocomplete/categories.html | 67 - demos/autocomplete/combobox.html | 211 - demos/autocomplete/custom-data.html | 91 - demos/autocomplete/default.html | 58 - demos/autocomplete/folding.html | 56 - demos/autocomplete/index.html | 25 - demos/autocomplete/maxheight.html | 71 - demos/autocomplete/multiple-remote.html | 80 - demos/autocomplete/multiple.html | 93 - demos/autocomplete/remote-jsonp.html | 82 - demos/autocomplete/remote-with-cache.html | 52 - demos/autocomplete/remote.html | 55 - demos/autocomplete/search.php | 590 - demos/autocomplete/xml.html | 66 - demos/button/checkbox.html | 37 - demos/button/default.html | 34 - demos/button/icons.html | 49 - demos/button/index.html | 19 - demos/button/radio.html | 32 - demos/button/splitbutton.html | 69 - demos/button/toolbar.html | 113 - demos/datepicker/alt-field.html | 29 - demos/datepicker/animation.html | 51 - demos/datepicker/buttonbar.html | 28 - demos/datepicker/date-formats.html | 40 - demos/datepicker/date-range.html | 44 - demos/datepicker/default.html | 26 - demos/datepicker/dropdown-month-year.html | 29 - demos/datepicker/icon-trigger.html | 30 - demos/datepicker/index.html | 27 - demos/datepicker/inline.html | 26 - demos/datepicker/localization.html | 169 - demos/datepicker/min-max.html | 26 - demos/datepicker/multiple-calendars.html | 29 - demos/datepicker/other-months.html | 30 - demos/datepicker/show-week.html | 32 - demos/demos.css | 19 - demos/dialog/animated.html | 49 - demos/dialog/default.html | 33 - demos/dialog/index.html | 19 - demos/dialog/modal-confirmation.html | 47 - demos/dialog/modal-form.html | 157 - demos/dialog/modal-message.html | 49 - demos/dialog/modal.html | 38 - demos/draggable/constrain-movement.html | 58 - demos/draggable/cursor-style.html | 42 - demos/draggable/default.html | 32 - demos/draggable/delay-start.html | 38 - demos/draggable/events.html | 70 - demos/draggable/handle.html | 41 - demos/draggable/index.html | 24 - demos/draggable/revert.html | 37 - demos/draggable/scroll.html | 44 - demos/draggable/snap-to.html | 61 - demos/draggable/sortable.html | 50 - demos/draggable/visual-feedback.html | 70 - demos/droppable/accepted-elements.html | 53 - demos/droppable/default.html | 46 - demos/droppable/index.html | 20 - demos/droppable/photo-manager.html | 182 - demos/droppable/propagation.html | 73 - demos/droppable/revert.html | 54 - demos/droppable/shopping-cart.html | 94 - demos/droppable/visual-feedback.html | 72 - demos/effect/default.html | 102 - demos/effect/easing.html | 102 - demos/effect/index.html | 15 - demos/hide/default.html | 95 - demos/hide/index.html | 14 - demos/index.html | 40 - demos/menu/default.html | 67 - demos/menu/icons.html | 44 - demos/menu/index.html | 15 - demos/position/cycler.html | 107 - demos/position/default.html | 142 - demos/position/index.html | 15 - demos/progressbar/animated.html | 37 - demos/progressbar/default.html | 28 - demos/progressbar/index.html | 16 - demos/progressbar/resize.html | 33 - demos/removeClass/default.html | 45 - demos/removeClass/index.html | 14 - demos/resizable/animate.html | 36 - demos/resizable/aspect-ratio.html | 35 - demos/resizable/constrain-area.html | 40 - demos/resizable/default.html | 33 - demos/resizable/delay-start.html | 45 - demos/resizable/helper.html | 36 - demos/resizable/index.html | 24 - demos/resizable/max-min.html | 38 - demos/resizable/snap-to-grid.html | 35 - demos/resizable/synchronous-resize.html | 42 - demos/resizable/textarea.html | 34 - demos/resizable/visual-feedback.html | 36 - demos/selectable/default.html | 43 - demos/selectable/display-grid.html | 48 - demos/selectable/index.html | 16 - demos/selectable/serialize.html | 54 - demos/show/default.html | 97 - demos/show/index.html | 14 - demos/slider/colorpicker.html | 87 - demos/slider/default.html | 27 - demos/slider/hotelrooms.html | 49 - demos/slider/index.html | 24 - demos/slider/multiple-vertical.html | 69 - demos/slider/range-vertical.html | 41 - demos/slider/range.html | 42 - demos/slider/rangemax.html | 40 - demos/slider/rangemin.html | 41 - demos/slider/side-scroll.html | 132 - demos/slider/slider-vertical.html | 42 - demos/slider/steps.html | 41 - .../sortable/connect-lists-through-tabs.html | 72 - demos/sortable/connect-lists.html | 52 - demos/sortable/default.html | 45 - demos/sortable/delay-start.html | 61 - demos/sortable/display-grid.html | 48 - demos/sortable/empty-lists.html | 63 - demos/sortable/index.html | 22 - demos/sortable/items.html | 64 - demos/sortable/placeholder.html | 50 - demos/sortable/portlets.html | 90 - demos/spinner/currency.html | 52 - demos/spinner/decimal.html | 56 - demos/spinner/default.html | 64 - demos/spinner/index.html | 19 - demos/spinner/latlong.html | 57 - demos/spinner/overflow.html | 44 - demos/spinner/time.html | 74 - demos/switchClass/default.html | 40 - demos/switchClass/index.html | 14 - demos/tabs/ajax.html | 46 - demos/tabs/bottom.html | 58 - demos/tabs/collapsible.html | 48 - demos/tabs/default.html | 42 - demos/tabs/index.html | 20 - demos/tabs/manipulation.html | 114 - demos/tabs/mouseover.html | 44 - demos/tabs/sortable.html | 51 - demos/tabs/vertical.html | 54 - demos/toggle/default.html | 103 - demos/toggle/index.html | 14 - demos/toggleClass/default.html | 39 - demos/toggleClass/index.html | 14 - demos/tooltip/ajax/content1.html | 1 - demos/tooltip/ajax/content2.html | 1 - demos/tooltip/custom-animation.html | 54 - demos/tooltip/custom-content.html | 83 - demos/tooltip/custom-style.html | 95 - demos/tooltip/default.html | 40 - demos/tooltip/forms.html | 65 - demos/tooltip/images/st-stephens.jpg | Bin 17724 -> 0 bytes demos/tooltip/images/tower-bridge.jpg | Bin 15764 -> 0 bytes demos/tooltip/index.html | 20 - demos/tooltip/tracking.html | 42 - demos/tooltip/video-player.html | 117 - demos/widget/default.html | 178 - demos/widget/index.html | 14 - external/globalize.culture.de-DE.js | 81 - external/globalize.culture.ja-JP.js | 100 - external/globalize.js | 1573 -- external/jquery.bgiframe-2.1.2.js | 39 - external/jquery.cookie.js | 89 - external/jquery.metadata.js | 122 - external/jquery.mousewheel.js | 84 - external/jshint.js | 4835 ---- grunt.js | 348 - jquery-1.8.2.js | 9440 -------- package.json | 56 - tests/.jshintrc | 48 - tests/index.css | 21 - tests/index.js | 10 - tests/jquery-1.6.1.js | 8936 -------- tests/jquery-1.6.2.js | 8981 -------- tests/jquery-1.6.3.js | 9044 -------- tests/jquery-1.6.4.js | 9046 -------- tests/jquery-1.6.js | 8865 -------- tests/jquery-1.7.1.js | 9266 -------- tests/jquery-1.7.2.js | 9404 -------- tests/jquery-1.7.js | 9300 -------- tests/jquery-1.8.0.js | 2 +- tests/jquery-1.8.1.js | 18000 +++++++-------- tests/jquery-1.8.2.js | 18196 ++++++++-------- tests/unit/accordion/accordion.html | 142 - tests/unit/accordion/accordion_common.js | 20 - .../accordion/accordion_common_deprecated.js | 29 - tests/unit/accordion/accordion_core.js | 117 - .../unit/accordion/accordion_deprecated.html | 140 - tests/unit/accordion/accordion_deprecated.js | 342 - tests/unit/accordion/accordion_events.js | 164 - tests/unit/accordion/accordion_methods.js | 56 - tests/unit/accordion/accordion_options.js | 465 - .../unit/accordion/accordion_test_helpers.js | 27 - tests/unit/accordion/all.html | 30 - tests/unit/all-active.html | 72 - tests/unit/all.html | 13 +- tests/unit/autocomplete/all.html | 30 - tests/unit/autocomplete/autocomplete.html | 49 - .../unit/autocomplete/autocomplete_common.js | 29 - tests/unit/autocomplete/autocomplete_core.js | 191 - .../unit/autocomplete/autocomplete_events.js | 182 - .../unit/autocomplete/autocomplete_methods.js | 45 - .../unit/autocomplete/autocomplete_options.js | 247 - tests/unit/button/all.html | 30 - tests/unit/button/button.html | 69 - tests/unit/button/button_common.js | 14 - tests/unit/button/button_core.js | 91 - tests/unit/button/button_events.js | 8 - tests/unit/button/button_methods.js | 52 - tests/unit/button/button_options.js | 106 - tests/unit/button/button_tickets.js | 75 - tests/unit/core/all.html | 30 - tests/unit/core/core.html | 135 - tests/unit/core/core.js | 186 - tests/unit/core/selector.js | 251 - tests/unit/datepicker/all.html | 30 - tests/unit/datepicker/datepicker.html | 58 - tests/unit/datepicker/datepicker_core.js | 445 - tests/unit/datepicker/datepicker_defaults.js | 11 - tests/unit/datepicker/datepicker_events.js | 129 - tests/unit/datepicker/datepicker_methods.js | 125 - tests/unit/datepicker/datepicker_options.js | 927 - tests/unit/datepicker/datepicker_tickets.js | 88 - tests/unit/defaults.html | 56 - tests/unit/dialog/all.html | 30 - tests/unit/dialog/dialog.html | 58 - tests/unit/dialog/dialog_common.js | 34 - tests/unit/dialog/dialog_core.js | 116 - tests/unit/dialog/dialog_events.js | 273 - tests/unit/dialog/dialog_methods.js | 141 - tests/unit/dialog/dialog_options.js | 458 - tests/unit/dialog/dialog_tickets.js | 205 - tests/unit/draggable/all.html | 30 - tests/unit/draggable/draggable.html | 58 - tests/unit/draggable/draggable_common.js | 32 - tests/unit/draggable/draggable_core.js | 66 - tests/unit/draggable/draggable_events.js | 81 - tests/unit/draggable/draggable_methods.js | 99 - tests/unit/draggable/draggable_options.js | 744 - tests/unit/droppable/all.html | 30 - tests/unit/droppable/droppable.html | 58 - tests/unit/droppable/droppable_common.js | 12 - tests/unit/droppable/droppable_core.js | 36 - tests/unit/droppable/droppable_events.js | 32 - tests/unit/droppable/droppable_methods.js | 86 - tests/unit/droppable/droppable_options.js | 64 - tests/unit/effects/all.html | 30 - tests/unit/effects/effects.html | 116 - tests/unit/effects/effects_core.js | 237 - tests/unit/effects/effects_scale.js | 68 - tests/unit/menu/all.html | 30 - tests/unit/menu/menu.html | 269 - tests/unit/menu/menu_common.js | 20 - tests/unit/menu/menu_core.js | 30 - tests/unit/menu/menu_events.js | 584 - tests/unit/menu/menu_methods.js | 104 - tests/unit/menu/menu_options.js | 112 - tests/unit/menu/menu_test_helpers.js | 31 - tests/unit/position/all.html | 30 - tests/unit/position/position.html | 56 - tests/unit/position/position_core.js | 692 - tests/unit/position/position_deprecated.html | 56 - tests/unit/position/position_deprecated.js | 33 - tests/unit/progressbar/all.html | 30 - tests/unit/progressbar/progressbar.html | 44 - tests/unit/progressbar/progressbar_common.js | 10 - tests/unit/progressbar/progressbar_core.js | 20 - tests/unit/progressbar/progressbar_events.js | 43 - tests/unit/progressbar/progressbar_methods.js | 25 - tests/unit/progressbar/progressbar_options.js | 62 - tests/unit/resizable/all.html | 30 - tests/unit/resizable/resizable.html | 56 - tests/unit/resizable/resizable_common.js | 27 - tests/unit/resizable/resizable_core.js | 146 - tests/unit/resizable/resizable_events.js | 12 - tests/unit/resizable/resizable_methods.js | 12 - tests/unit/resizable/resizable_options.js | 199 - tests/unit/selectable/all.html | 30 - tests/unit/selectable/selectable.html | 61 - tests/unit/selectable/selectable_common.js | 12 - tests/unit/selectable/selectable_core.js | 16 - tests/unit/selectable/selectable_events.js | 32 - tests/unit/selectable/selectable_methods.js | 95 - tests/unit/selectable/selectable_options.js | 46 - tests/unit/slider/all.html | 30 - tests/unit/slider/slider.html | 58 - tests/unit/slider/slider_common.js | 19 - tests/unit/slider/slider_core.js | 300 - tests/unit/slider/slider_events.js | 107 - tests/unit/slider/slider_methods.js | 99 - tests/unit/slider/slider_options.js | 150 - tests/unit/sortable/all.html | 30 - tests/unit/sortable/sortable.html | 62 - tests/unit/sortable/sortable_common.js | 30 - tests/unit/sortable/sortable_core.js | 13 - tests/unit/sortable/sortable_events.js | 147 - tests/unit/sortable/sortable_methods.js | 108 - tests/unit/sortable/sortable_options.js | 260 - tests/unit/sortable/sortable_tickets.js | 83 - tests/unit/spinner/all.html | 30 - tests/unit/spinner/spinner.html | 50 - tests/unit/spinner/spinner_common.js | 23 - tests/unit/spinner/spinner_core.js | 208 - tests/unit/spinner/spinner_events.js | 230 - tests/unit/spinner/spinner_methods.js | 174 - tests/unit/spinner/spinner_options.js | 255 - tests/unit/spinner/spinner_test_helpers.js | 8 - tests/unit/subsuite.js | 4 +- tests/unit/swarminject.js | 5 +- tests/unit/tabs/all.html | 30 - tests/unit/tabs/tabs.html | 158 - tests/unit/tabs/tabs_common.js | 18 - tests/unit/tabs/tabs_common_deprecated.js | 32 - tests/unit/tabs/tabs_core.js | 615 - tests/unit/tabs/tabs_deprecated.html | 157 - tests/unit/tabs/tabs_deprecated.js | 603 - tests/unit/tabs/tabs_events.js | 320 - tests/unit/tabs/tabs_methods.js | 275 - tests/unit/tabs/tabs_options.js | 339 - tests/unit/tabs/tabs_test_helpers.js | 67 - tests/unit/testsuite.js | 25 +- tests/unit/testsuites.js | 76 - tests/unit/tooltip/all.html | 30 - tests/unit/tooltip/tooltip.html | 55 - tests/unit/tooltip/tooltip_common.js | 21 - tests/unit/tooltip/tooltip_core.js | 137 - tests/unit/tooltip/tooltip_events.js | 57 - tests/unit/tooltip/tooltip_methods.js | 94 - tests/unit/tooltip/tooltip_options.js | 157 - tests/unit/widget/all.html | 30 - tests/unit/widget/widget.html | 44 - tests/unit/widget/widget_animation.js | 257 - tests/unit/widget/widget_core.js | 1411 -- tests/unit/widget/widget_extend.js | 105 - tests/visual/accordion/icons.html | 95 - tests/visual/addClass/queue.html | 52 - tests/visual/button/button.html | 94 - tests/visual/button/performance.html | 26 - tests/visual/compound/accordion_tabs.html | 86 - tests/visual/compound/datepicker_dialog.html | 31 - tests/visual/compound/dialog_widgets.html | 101 - .../visual/compound/draggable_accordion.html | 65 - ...le_accordion_accordion_tabs_draggable.html | 107 - .../sortable_accordion_sortable_tabs.html | 116 - tests/visual/compound/tabs_tabs.html | 73 - tests/visual/compound/tabs_tooltips.html | 37 - tests/visual/dialog/performance.html | 73 - tests/visual/effects/all.html | 217 - tests/visual/effects/effects.css | 49 - tests/visual/effects/effects.js | 107 - tests/visual/effects/scale.html | 157 - tests/visual/index.html | 82 - tests/visual/menu/menu.html | 314 - tests/visual/position/position.html | 143 - tests/visual/position/position_feedback.html | 146 - tests/visual/theme.html | 532 - tests/visual/tooltip/animations.html | 73 - tests/visual/tooltip/tooltip.html | 208 - themes/base/images/animated-overlay.gif | Bin 0 -> 1738 bytes themes/base/jquery.ui.accordion.css | 16 - themes/base/jquery.ui.all.css | 12 - themes/base/jquery.ui.autocomplete.css | 19 - themes/base/jquery.ui.base.css | 25 - themes/base/jquery.ui.button.css | 40 - themes/base/jquery.ui.core.css | 73 +- themes/base/jquery.ui.datepicker.css | 67 - themes/base/jquery.ui.dialog.css | 22 - themes/base/jquery.ui.menu.css | 30 - themes/base/jquery.ui.progressbar.css | 12 - themes/base/jquery.ui.resizable.css | 21 - themes/base/jquery.ui.selectable.css | 11 - themes/base/jquery.ui.slider.css | 25 - themes/base/jquery.ui.spinner.css | 23 - themes/base/jquery.ui.tabs.css | 18 - themes/base/jquery.ui.theme.css | 241 +- themes/base/jquery.ui.tooltip.css | 21 - ui.accordion.jquery.json | 57 - ui.autocomplete.jquery.json | 59 - ui.button.jquery.json | 56 - ui.core.jquery.json | 51 - ui.datepicker.jquery.json | 56 - ui.dialog.jquery.json | 60 - ui.draggable.jquery.json | 56 - ui.droppable.jquery.json | 57 - ui.effect-blind.jquery.json | 55 - ui.effect-bounce.jquery.json | 55 - ui.effect-clip.jquery.json | 55 - ui.effect-drop.jquery.json | 55 - ui.effect-explode.jquery.json | 55 - ui.effect-fade.jquery.json | 55 - ui.effect-fold.jquery.json | 55 - ui.effect-highlight.jquery.json | 55 - ui.effect-pulsate.jquery.json | 55 - ui.effect-scale.jquery.json | 55 - ui.effect-shake.jquery.json | 55 - ui.effect-slide.jquery.json | 55 - ui.effect-transfer.jquery.json | 53 - ui.effect.jquery.json | 58 - ui.menu.jquery.json | 56 - ui.mouse.jquery.json | 54 - ui.position.jquery.json | 56 - ui.progressbar.jquery.json | 55 - ui.resizable.jquery.json | 55 - ui.selectable.jquery.json | 55 - ui.slider.jquery.json | 57 - ui.sortable.jquery.json | 56 - ui.spinner.jquery.json | 58 - ui.tabs.jquery.json | 57 - ui.tooltip.jquery.json | 54 - ui.widget.jquery.json | 54 - ui/.jshintrc | 17 - ui/i18n/jquery.ui.datepicker-af.js | 23 - ui/i18n/jquery.ui.datepicker-ar-DZ.js | 23 - ui/i18n/jquery.ui.datepicker-ar.js | 23 - ui/i18n/jquery.ui.datepicker-az.js | 23 - ui/i18n/jquery.ui.datepicker-bg.js | 24 - ui/i18n/jquery.ui.datepicker-bs.js | 23 - ui/i18n/jquery.ui.datepicker-ca.js | 23 - ui/i18n/jquery.ui.datepicker-cs.js | 23 - ui/i18n/jquery.ui.datepicker-cy-GB.js | 23 - ui/i18n/jquery.ui.datepicker-da.js | 23 - ui/i18n/jquery.ui.datepicker-de.js | 23 - ui/i18n/jquery.ui.datepicker-el.js | 23 - ui/i18n/jquery.ui.datepicker-en-AU.js | 23 - ui/i18n/jquery.ui.datepicker-en-GB.js | 23 - ui/i18n/jquery.ui.datepicker-en-NZ.js | 23 - ui/i18n/jquery.ui.datepicker-eo.js | 23 - ui/i18n/jquery.ui.datepicker-es.js | 23 - ui/i18n/jquery.ui.datepicker-et.js | 23 - ui/i18n/jquery.ui.datepicker-eu.js | 23 - ui/i18n/jquery.ui.datepicker-fa.js | 59 - ui/i18n/jquery.ui.datepicker-fi.js | 23 - ui/i18n/jquery.ui.datepicker-fo.js | 23 - ui/i18n/jquery.ui.datepicker-fr-CH.js | 23 - ui/i18n/jquery.ui.datepicker-fr.js | 25 - ui/i18n/jquery.ui.datepicker-gl.js | 23 - ui/i18n/jquery.ui.datepicker-he.js | 23 - ui/i18n/jquery.ui.datepicker-hi.js | 23 - ui/i18n/jquery.ui.datepicker-hr.js | 23 - ui/i18n/jquery.ui.datepicker-hu.js | 23 - ui/i18n/jquery.ui.datepicker-hy.js | 23 - ui/i18n/jquery.ui.datepicker-id.js | 23 - ui/i18n/jquery.ui.datepicker-is.js | 23 - ui/i18n/jquery.ui.datepicker-it.js | 23 - ui/i18n/jquery.ui.datepicker-ja.js | 23 - ui/i18n/jquery.ui.datepicker-ka.js | 21 - ui/i18n/jquery.ui.datepicker-kk.js | 23 - ui/i18n/jquery.ui.datepicker-km.js | 23 - ui/i18n/jquery.ui.datepicker-ko.js | 23 - ui/i18n/jquery.ui.datepicker-lb.js | 23 - ui/i18n/jquery.ui.datepicker-lt.js | 23 - ui/i18n/jquery.ui.datepicker-lv.js | 23 - ui/i18n/jquery.ui.datepicker-mk.js | 23 - ui/i18n/jquery.ui.datepicker-ml.js | 23 - ui/i18n/jquery.ui.datepicker-ms.js | 23 - ui/i18n/jquery.ui.datepicker-nl-BE.js | 23 - ui/i18n/jquery.ui.datepicker-nl.js | 23 - ui/i18n/jquery.ui.datepicker-no.js | 23 - ui/i18n/jquery.ui.datepicker-pl.js | 23 - ui/i18n/jquery.ui.datepicker-pt-BR.js | 23 - ui/i18n/jquery.ui.datepicker-pt.js | 22 - ui/i18n/jquery.ui.datepicker-rm.js | 21 - ui/i18n/jquery.ui.datepicker-ro.js | 26 - ui/i18n/jquery.ui.datepicker-ru.js | 23 - ui/i18n/jquery.ui.datepicker-sk.js | 23 - ui/i18n/jquery.ui.datepicker-sl.js | 24 - ui/i18n/jquery.ui.datepicker-sq.js | 23 - ui/i18n/jquery.ui.datepicker-sr-SR.js | 23 - ui/i18n/jquery.ui.datepicker-sr.js | 23 - ui/i18n/jquery.ui.datepicker-sv.js | 23 - ui/i18n/jquery.ui.datepicker-ta.js | 23 - ui/i18n/jquery.ui.datepicker-th.js | 23 - ui/i18n/jquery.ui.datepicker-tj.js | 23 - ui/i18n/jquery.ui.datepicker-tr.js | 23 - ui/i18n/jquery.ui.datepicker-uk.js | 24 - ui/i18n/jquery.ui.datepicker-vi.js | 23 - ui/i18n/jquery.ui.datepicker-zh-CN.js | 23 - ui/i18n/jquery.ui.datepicker-zh-HK.js | 23 - ui/i18n/jquery.ui.datepicker-zh-TW.js | 23 - ui/jquery.ui.accordion.js | 731 - ui/jquery.ui.autocomplete.js | 602 - ui/jquery.ui.button.js | 418 - ui/jquery.ui.core.js | 31 +- ui/jquery.ui.datepicker.js | 1846 -- ui/jquery.ui.dialog.js | 858 - ui/jquery.ui.draggable.js | 836 - ui/jquery.ui.droppable.js | 294 - ui/jquery.ui.effect-blind.js | 82 - ui/jquery.ui.effect-bounce.js | 113 - ui/jquery.ui.effect-clip.js | 67 - ui/jquery.ui.effect-drop.js | 65 - ui/jquery.ui.effect-explode.js | 97 - ui/jquery.ui.effect-fade.js | 30 - ui/jquery.ui.effect-fold.js | 76 - ui/jquery.ui.effect-highlight.js | 50 - ui/jquery.ui.effect-pulsate.js | 63 - ui/jquery.ui.effect-scale.js | 318 - ui/jquery.ui.effect-shake.js | 74 - ui/jquery.ui.effect-slide.js | 64 - ui/jquery.ui.effect-transfer.js | 47 - ui/jquery.ui.effect.js | 1276 -- ui/jquery.ui.menu.js | 610 - ui/jquery.ui.mouse.js | 169 - ui/jquery.ui.position.js | 40 - ui/jquery.ui.progressbar.js | 105 - ui/jquery.ui.resizable.js | 801 - ui/jquery.ui.selectable.js | 261 - ui/jquery.ui.slider.js | 644 - ui/jquery.ui.sortable.js | 1096 - ui/jquery.ui.spinner.js | 478 - ui/jquery.ui.tabs.js | 1366 -- ui/jquery.ui.tooltip.js | 398 - ui/jquery.ui.widget.js | 14 +- 537 files changed, 18549 insertions(+), 158459 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .jshintrc delete mode 100644 README.md delete mode 100644 build/core.json delete mode 100644 build/effect.json delete mode 100644 build/interaction.json delete mode 100644 build/release/changelog-shell delete mode 100644 build/release/release.js delete mode 100644 build/tasks/build.js delete mode 100644 build/tasks/testswarm.js delete mode 100644 build/widget.json delete mode 100644 demos/accordion/collapsible.html delete mode 100644 demos/accordion/custom-icons.html delete mode 100644 demos/accordion/default.html delete mode 100644 demos/accordion/fillspace.html delete mode 100644 demos/accordion/hoverintent.html delete mode 100644 demos/accordion/index.html delete mode 100644 demos/accordion/no-auto-height.html delete mode 100644 demos/accordion/sortable.html delete mode 100644 demos/addClass/default.html delete mode 100644 demos/addClass/index.html delete mode 100644 demos/animate/default.html delete mode 100644 demos/animate/index.html delete mode 100644 demos/autocomplete/categories.html delete mode 100644 demos/autocomplete/combobox.html delete mode 100644 demos/autocomplete/custom-data.html delete mode 100644 demos/autocomplete/default.html delete mode 100644 demos/autocomplete/folding.html delete mode 100644 demos/autocomplete/index.html delete mode 100644 demos/autocomplete/maxheight.html delete mode 100644 demos/autocomplete/multiple-remote.html delete mode 100644 demos/autocomplete/multiple.html delete mode 100644 demos/autocomplete/remote-jsonp.html delete mode 100644 demos/autocomplete/remote-with-cache.html delete mode 100644 demos/autocomplete/remote.html delete mode 100644 demos/autocomplete/search.php delete mode 100644 demos/autocomplete/xml.html delete mode 100644 demos/button/checkbox.html delete mode 100644 demos/button/default.html delete mode 100644 demos/button/icons.html delete mode 100644 demos/button/index.html delete mode 100644 demos/button/radio.html delete mode 100644 demos/button/splitbutton.html delete mode 100644 demos/button/toolbar.html delete mode 100644 demos/datepicker/alt-field.html delete mode 100644 demos/datepicker/animation.html delete mode 100644 demos/datepicker/buttonbar.html delete mode 100644 demos/datepicker/date-formats.html delete mode 100644 demos/datepicker/date-range.html delete mode 100644 demos/datepicker/default.html delete mode 100644 demos/datepicker/dropdown-month-year.html delete mode 100644 demos/datepicker/icon-trigger.html delete mode 100644 demos/datepicker/index.html delete mode 100644 demos/datepicker/inline.html delete mode 100644 demos/datepicker/localization.html delete mode 100644 demos/datepicker/min-max.html delete mode 100644 demos/datepicker/multiple-calendars.html delete mode 100644 demos/datepicker/other-months.html delete mode 100644 demos/datepicker/show-week.html delete mode 100644 demos/demos.css delete mode 100644 demos/dialog/animated.html delete mode 100644 demos/dialog/default.html delete mode 100644 demos/dialog/index.html delete mode 100644 demos/dialog/modal-confirmation.html delete mode 100644 demos/dialog/modal-form.html delete mode 100644 demos/dialog/modal-message.html delete mode 100644 demos/dialog/modal.html delete mode 100644 demos/draggable/constrain-movement.html delete mode 100644 demos/draggable/cursor-style.html delete mode 100644 demos/draggable/default.html delete mode 100644 demos/draggable/delay-start.html delete mode 100644 demos/draggable/events.html delete mode 100644 demos/draggable/handle.html delete mode 100644 demos/draggable/index.html delete mode 100644 demos/draggable/revert.html delete mode 100644 demos/draggable/scroll.html delete mode 100644 demos/draggable/snap-to.html delete mode 100644 demos/draggable/sortable.html delete mode 100644 demos/draggable/visual-feedback.html delete mode 100644 demos/droppable/accepted-elements.html delete mode 100644 demos/droppable/default.html delete mode 100644 demos/droppable/index.html delete mode 100644 demos/droppable/photo-manager.html delete mode 100644 demos/droppable/propagation.html delete mode 100644 demos/droppable/revert.html delete mode 100644 demos/droppable/shopping-cart.html delete mode 100644 demos/droppable/visual-feedback.html delete mode 100644 demos/effect/default.html delete mode 100644 demos/effect/easing.html delete mode 100644 demos/effect/index.html delete mode 100644 demos/hide/default.html delete mode 100644 demos/hide/index.html delete mode 100644 demos/index.html delete mode 100644 demos/menu/default.html delete mode 100644 demos/menu/icons.html delete mode 100644 demos/menu/index.html delete mode 100644 demos/position/cycler.html delete mode 100644 demos/position/default.html delete mode 100644 demos/position/index.html delete mode 100644 demos/progressbar/animated.html delete mode 100644 demos/progressbar/default.html delete mode 100644 demos/progressbar/index.html delete mode 100644 demos/progressbar/resize.html delete mode 100644 demos/removeClass/default.html delete mode 100644 demos/removeClass/index.html delete mode 100644 demos/resizable/animate.html delete mode 100644 demos/resizable/aspect-ratio.html delete mode 100644 demos/resizable/constrain-area.html delete mode 100644 demos/resizable/default.html delete mode 100644 demos/resizable/delay-start.html delete mode 100644 demos/resizable/helper.html delete mode 100644 demos/resizable/index.html delete mode 100644 demos/resizable/max-min.html delete mode 100644 demos/resizable/snap-to-grid.html delete mode 100644 demos/resizable/synchronous-resize.html delete mode 100644 demos/resizable/textarea.html delete mode 100644 demos/resizable/visual-feedback.html delete mode 100644 demos/selectable/default.html delete mode 100644 demos/selectable/display-grid.html delete mode 100644 demos/selectable/index.html delete mode 100644 demos/selectable/serialize.html delete mode 100644 demos/show/default.html delete mode 100644 demos/show/index.html delete mode 100644 demos/slider/colorpicker.html delete mode 100644 demos/slider/default.html delete mode 100644 demos/slider/hotelrooms.html delete mode 100644 demos/slider/index.html delete mode 100644 demos/slider/multiple-vertical.html delete mode 100644 demos/slider/range-vertical.html delete mode 100644 demos/slider/range.html delete mode 100644 demos/slider/rangemax.html delete mode 100644 demos/slider/rangemin.html delete mode 100644 demos/slider/side-scroll.html delete mode 100644 demos/slider/slider-vertical.html delete mode 100644 demos/slider/steps.html delete mode 100644 demos/sortable/connect-lists-through-tabs.html delete mode 100644 demos/sortable/connect-lists.html delete mode 100644 demos/sortable/default.html delete mode 100644 demos/sortable/delay-start.html delete mode 100644 demos/sortable/display-grid.html delete mode 100644 demos/sortable/empty-lists.html delete mode 100644 demos/sortable/index.html delete mode 100644 demos/sortable/items.html delete mode 100644 demos/sortable/placeholder.html delete mode 100644 demos/sortable/portlets.html delete mode 100644 demos/spinner/currency.html delete mode 100644 demos/spinner/decimal.html delete mode 100644 demos/spinner/default.html delete mode 100644 demos/spinner/index.html delete mode 100644 demos/spinner/latlong.html delete mode 100644 demos/spinner/overflow.html delete mode 100644 demos/spinner/time.html delete mode 100644 demos/switchClass/default.html delete mode 100644 demos/switchClass/index.html delete mode 100644 demos/tabs/ajax.html delete mode 100644 demos/tabs/bottom.html delete mode 100644 demos/tabs/collapsible.html delete mode 100644 demos/tabs/default.html delete mode 100644 demos/tabs/index.html delete mode 100644 demos/tabs/manipulation.html delete mode 100644 demos/tabs/mouseover.html delete mode 100644 demos/tabs/sortable.html delete mode 100644 demos/tabs/vertical.html delete mode 100644 demos/toggle/default.html delete mode 100644 demos/toggle/index.html delete mode 100644 demos/toggleClass/default.html delete mode 100644 demos/toggleClass/index.html delete mode 100644 demos/tooltip/ajax/content1.html delete mode 100644 demos/tooltip/ajax/content2.html delete mode 100644 demos/tooltip/custom-animation.html delete mode 100644 demos/tooltip/custom-content.html delete mode 100644 demos/tooltip/custom-style.html delete mode 100644 demos/tooltip/default.html delete mode 100644 demos/tooltip/forms.html delete mode 100644 demos/tooltip/images/st-stephens.jpg delete mode 100644 demos/tooltip/images/tower-bridge.jpg delete mode 100644 demos/tooltip/index.html delete mode 100644 demos/tooltip/tracking.html delete mode 100644 demos/tooltip/video-player.html delete mode 100644 demos/widget/default.html delete mode 100644 demos/widget/index.html delete mode 100644 external/globalize.culture.de-DE.js delete mode 100644 external/globalize.culture.ja-JP.js delete mode 100644 external/globalize.js delete mode 100644 external/jquery.bgiframe-2.1.2.js delete mode 100644 external/jquery.cookie.js delete mode 100644 external/jquery.metadata.js delete mode 100644 external/jquery.mousewheel.js delete mode 100644 external/jshint.js delete mode 100644 grunt.js delete mode 100644 jquery-1.8.2.js delete mode 100644 package.json delete mode 100644 tests/.jshintrc delete mode 100644 tests/index.css delete mode 100644 tests/index.js delete mode 100644 tests/jquery-1.6.1.js delete mode 100644 tests/jquery-1.6.2.js delete mode 100644 tests/jquery-1.6.3.js delete mode 100644 tests/jquery-1.6.4.js delete mode 100644 tests/jquery-1.6.js delete mode 100644 tests/jquery-1.7.1.js delete mode 100644 tests/jquery-1.7.2.js delete mode 100644 tests/jquery-1.7.js delete mode 100644 tests/unit/accordion/accordion.html delete mode 100644 tests/unit/accordion/accordion_common.js delete mode 100644 tests/unit/accordion/accordion_common_deprecated.js delete mode 100644 tests/unit/accordion/accordion_core.js delete mode 100644 tests/unit/accordion/accordion_deprecated.html delete mode 100644 tests/unit/accordion/accordion_deprecated.js delete mode 100644 tests/unit/accordion/accordion_events.js delete mode 100644 tests/unit/accordion/accordion_methods.js delete mode 100644 tests/unit/accordion/accordion_options.js delete mode 100644 tests/unit/accordion/accordion_test_helpers.js delete mode 100644 tests/unit/accordion/all.html delete mode 100644 tests/unit/all-active.html delete mode 100644 tests/unit/autocomplete/all.html delete mode 100644 tests/unit/autocomplete/autocomplete.html delete mode 100644 tests/unit/autocomplete/autocomplete_common.js delete mode 100644 tests/unit/autocomplete/autocomplete_core.js delete mode 100644 tests/unit/autocomplete/autocomplete_events.js delete mode 100644 tests/unit/autocomplete/autocomplete_methods.js delete mode 100644 tests/unit/autocomplete/autocomplete_options.js delete mode 100644 tests/unit/button/all.html delete mode 100644 tests/unit/button/button.html delete mode 100644 tests/unit/button/button_common.js delete mode 100644 tests/unit/button/button_core.js delete mode 100644 tests/unit/button/button_events.js delete mode 100644 tests/unit/button/button_methods.js delete mode 100644 tests/unit/button/button_options.js delete mode 100644 tests/unit/button/button_tickets.js delete mode 100644 tests/unit/core/all.html delete mode 100644 tests/unit/core/core.html delete mode 100644 tests/unit/core/core.js delete mode 100644 tests/unit/core/selector.js delete mode 100644 tests/unit/datepicker/all.html delete mode 100644 tests/unit/datepicker/datepicker.html delete mode 100644 tests/unit/datepicker/datepicker_core.js delete mode 100644 tests/unit/datepicker/datepicker_defaults.js delete mode 100644 tests/unit/datepicker/datepicker_events.js delete mode 100644 tests/unit/datepicker/datepicker_methods.js delete mode 100644 tests/unit/datepicker/datepicker_options.js delete mode 100644 tests/unit/datepicker/datepicker_tickets.js delete mode 100644 tests/unit/defaults.html delete mode 100644 tests/unit/dialog/all.html delete mode 100644 tests/unit/dialog/dialog.html delete mode 100644 tests/unit/dialog/dialog_common.js delete mode 100644 tests/unit/dialog/dialog_core.js delete mode 100644 tests/unit/dialog/dialog_events.js delete mode 100644 tests/unit/dialog/dialog_methods.js delete mode 100644 tests/unit/dialog/dialog_options.js delete mode 100644 tests/unit/dialog/dialog_tickets.js delete mode 100644 tests/unit/draggable/all.html delete mode 100644 tests/unit/draggable/draggable.html delete mode 100644 tests/unit/draggable/draggable_common.js delete mode 100644 tests/unit/draggable/draggable_core.js delete mode 100644 tests/unit/draggable/draggable_events.js delete mode 100644 tests/unit/draggable/draggable_methods.js delete mode 100644 tests/unit/draggable/draggable_options.js delete mode 100644 tests/unit/droppable/all.html delete mode 100644 tests/unit/droppable/droppable.html delete mode 100644 tests/unit/droppable/droppable_common.js delete mode 100644 tests/unit/droppable/droppable_core.js delete mode 100644 tests/unit/droppable/droppable_events.js delete mode 100644 tests/unit/droppable/droppable_methods.js delete mode 100644 tests/unit/droppable/droppable_options.js delete mode 100644 tests/unit/effects/all.html delete mode 100644 tests/unit/effects/effects.html delete mode 100644 tests/unit/effects/effects_core.js delete mode 100644 tests/unit/effects/effects_scale.js delete mode 100644 tests/unit/menu/all.html delete mode 100644 tests/unit/menu/menu.html delete mode 100644 tests/unit/menu/menu_common.js delete mode 100644 tests/unit/menu/menu_core.js delete mode 100644 tests/unit/menu/menu_events.js delete mode 100644 tests/unit/menu/menu_methods.js delete mode 100644 tests/unit/menu/menu_options.js delete mode 100644 tests/unit/menu/menu_test_helpers.js delete mode 100644 tests/unit/position/all.html delete mode 100644 tests/unit/position/position.html delete mode 100644 tests/unit/position/position_core.js delete mode 100644 tests/unit/position/position_deprecated.html delete mode 100644 tests/unit/position/position_deprecated.js delete mode 100644 tests/unit/progressbar/all.html delete mode 100644 tests/unit/progressbar/progressbar.html delete mode 100644 tests/unit/progressbar/progressbar_common.js delete mode 100644 tests/unit/progressbar/progressbar_core.js delete mode 100644 tests/unit/progressbar/progressbar_events.js delete mode 100644 tests/unit/progressbar/progressbar_methods.js delete mode 100644 tests/unit/progressbar/progressbar_options.js delete mode 100644 tests/unit/resizable/all.html delete mode 100644 tests/unit/resizable/resizable.html delete mode 100644 tests/unit/resizable/resizable_common.js delete mode 100644 tests/unit/resizable/resizable_core.js delete mode 100644 tests/unit/resizable/resizable_events.js delete mode 100644 tests/unit/resizable/resizable_methods.js delete mode 100644 tests/unit/resizable/resizable_options.js delete mode 100644 tests/unit/selectable/all.html delete mode 100644 tests/unit/selectable/selectable.html delete mode 100644 tests/unit/selectable/selectable_common.js delete mode 100644 tests/unit/selectable/selectable_core.js delete mode 100644 tests/unit/selectable/selectable_events.js delete mode 100644 tests/unit/selectable/selectable_methods.js delete mode 100644 tests/unit/selectable/selectable_options.js delete mode 100644 tests/unit/slider/all.html delete mode 100644 tests/unit/slider/slider.html delete mode 100644 tests/unit/slider/slider_common.js delete mode 100644 tests/unit/slider/slider_core.js delete mode 100644 tests/unit/slider/slider_events.js delete mode 100644 tests/unit/slider/slider_methods.js delete mode 100644 tests/unit/slider/slider_options.js delete mode 100644 tests/unit/sortable/all.html delete mode 100644 tests/unit/sortable/sortable.html delete mode 100644 tests/unit/sortable/sortable_common.js delete mode 100644 tests/unit/sortable/sortable_core.js delete mode 100644 tests/unit/sortable/sortable_events.js delete mode 100644 tests/unit/sortable/sortable_methods.js delete mode 100644 tests/unit/sortable/sortable_options.js delete mode 100644 tests/unit/sortable/sortable_tickets.js delete mode 100644 tests/unit/spinner/all.html delete mode 100644 tests/unit/spinner/spinner.html delete mode 100644 tests/unit/spinner/spinner_common.js delete mode 100644 tests/unit/spinner/spinner_core.js delete mode 100644 tests/unit/spinner/spinner_events.js delete mode 100644 tests/unit/spinner/spinner_methods.js delete mode 100644 tests/unit/spinner/spinner_options.js delete mode 100644 tests/unit/spinner/spinner_test_helpers.js delete mode 100644 tests/unit/tabs/all.html delete mode 100644 tests/unit/tabs/tabs.html delete mode 100644 tests/unit/tabs/tabs_common.js delete mode 100644 tests/unit/tabs/tabs_common_deprecated.js delete mode 100644 tests/unit/tabs/tabs_core.js delete mode 100644 tests/unit/tabs/tabs_deprecated.html delete mode 100644 tests/unit/tabs/tabs_deprecated.js delete mode 100644 tests/unit/tabs/tabs_events.js delete mode 100644 tests/unit/tabs/tabs_methods.js delete mode 100644 tests/unit/tabs/tabs_options.js delete mode 100644 tests/unit/tabs/tabs_test_helpers.js delete mode 100644 tests/unit/testsuites.js delete mode 100644 tests/unit/tooltip/all.html delete mode 100644 tests/unit/tooltip/tooltip.html delete mode 100644 tests/unit/tooltip/tooltip_common.js delete mode 100644 tests/unit/tooltip/tooltip_core.js delete mode 100644 tests/unit/tooltip/tooltip_events.js delete mode 100644 tests/unit/tooltip/tooltip_methods.js delete mode 100644 tests/unit/tooltip/tooltip_options.js delete mode 100644 tests/unit/widget/all.html delete mode 100644 tests/unit/widget/widget.html delete mode 100644 tests/unit/widget/widget_animation.js delete mode 100644 tests/unit/widget/widget_core.js delete mode 100644 tests/unit/widget/widget_extend.js delete mode 100644 tests/visual/accordion/icons.html delete mode 100644 tests/visual/addClass/queue.html delete mode 100644 tests/visual/button/button.html delete mode 100644 tests/visual/button/performance.html delete mode 100644 tests/visual/compound/accordion_tabs.html delete mode 100644 tests/visual/compound/datepicker_dialog.html delete mode 100644 tests/visual/compound/dialog_widgets.html delete mode 100644 tests/visual/compound/draggable_accordion.html delete mode 100644 tests/visual/compound/draggable_accordion_accordion_tabs_draggable.html delete mode 100644 tests/visual/compound/sortable_accordion_sortable_tabs.html delete mode 100644 tests/visual/compound/tabs_tabs.html delete mode 100644 tests/visual/compound/tabs_tooltips.html delete mode 100644 tests/visual/dialog/performance.html delete mode 100644 tests/visual/effects/all.html delete mode 100644 tests/visual/effects/effects.css delete mode 100644 tests/visual/effects/effects.js delete mode 100644 tests/visual/effects/scale.html delete mode 100644 tests/visual/index.html delete mode 100644 tests/visual/menu/menu.html delete mode 100644 tests/visual/position/position.html delete mode 100644 tests/visual/position/position_feedback.html delete mode 100644 tests/visual/theme.html delete mode 100644 tests/visual/tooltip/animations.html delete mode 100644 tests/visual/tooltip/tooltip.html create mode 100644 themes/base/images/animated-overlay.gif delete mode 100644 themes/base/jquery.ui.accordion.css delete mode 100644 themes/base/jquery.ui.all.css delete mode 100644 themes/base/jquery.ui.autocomplete.css delete mode 100644 themes/base/jquery.ui.base.css delete mode 100644 themes/base/jquery.ui.button.css delete mode 100644 themes/base/jquery.ui.datepicker.css delete mode 100644 themes/base/jquery.ui.dialog.css delete mode 100644 themes/base/jquery.ui.menu.css delete mode 100644 themes/base/jquery.ui.progressbar.css delete mode 100644 themes/base/jquery.ui.resizable.css delete mode 100644 themes/base/jquery.ui.selectable.css delete mode 100644 themes/base/jquery.ui.slider.css delete mode 100644 themes/base/jquery.ui.spinner.css delete mode 100644 themes/base/jquery.ui.tabs.css delete mode 100644 themes/base/jquery.ui.tooltip.css delete mode 100644 ui.accordion.jquery.json delete mode 100644 ui.autocomplete.jquery.json delete mode 100644 ui.button.jquery.json delete mode 100644 ui.core.jquery.json delete mode 100644 ui.datepicker.jquery.json delete mode 100644 ui.dialog.jquery.json delete mode 100644 ui.draggable.jquery.json delete mode 100644 ui.droppable.jquery.json delete mode 100644 ui.effect-blind.jquery.json delete mode 100644 ui.effect-bounce.jquery.json delete mode 100644 ui.effect-clip.jquery.json delete mode 100644 ui.effect-drop.jquery.json delete mode 100644 ui.effect-explode.jquery.json delete mode 100644 ui.effect-fade.jquery.json delete mode 100644 ui.effect-fold.jquery.json delete mode 100644 ui.effect-highlight.jquery.json delete mode 100644 ui.effect-pulsate.jquery.json delete mode 100644 ui.effect-scale.jquery.json delete mode 100644 ui.effect-shake.jquery.json delete mode 100644 ui.effect-slide.jquery.json delete mode 100644 ui.effect-transfer.jquery.json delete mode 100644 ui.effect.jquery.json delete mode 100644 ui.menu.jquery.json delete mode 100644 ui.mouse.jquery.json delete mode 100644 ui.position.jquery.json delete mode 100644 ui.progressbar.jquery.json delete mode 100644 ui.resizable.jquery.json delete mode 100644 ui.selectable.jquery.json delete mode 100644 ui.slider.jquery.json delete mode 100644 ui.sortable.jquery.json delete mode 100644 ui.spinner.jquery.json delete mode 100644 ui.tabs.jquery.json delete mode 100644 ui.tooltip.jquery.json delete mode 100644 ui.widget.jquery.json delete mode 100644 ui/.jshintrc delete mode 100644 ui/i18n/jquery.ui.datepicker-af.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ar-DZ.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ar.js delete mode 100644 ui/i18n/jquery.ui.datepicker-az.js delete mode 100644 ui/i18n/jquery.ui.datepicker-bg.js delete mode 100644 ui/i18n/jquery.ui.datepicker-bs.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ca.js delete mode 100644 ui/i18n/jquery.ui.datepicker-cs.js delete mode 100644 ui/i18n/jquery.ui.datepicker-cy-GB.js delete mode 100644 ui/i18n/jquery.ui.datepicker-da.js delete mode 100644 ui/i18n/jquery.ui.datepicker-de.js delete mode 100644 ui/i18n/jquery.ui.datepicker-el.js delete mode 100644 ui/i18n/jquery.ui.datepicker-en-AU.js delete mode 100644 ui/i18n/jquery.ui.datepicker-en-GB.js delete mode 100644 ui/i18n/jquery.ui.datepicker-en-NZ.js delete mode 100644 ui/i18n/jquery.ui.datepicker-eo.js delete mode 100644 ui/i18n/jquery.ui.datepicker-es.js delete mode 100644 ui/i18n/jquery.ui.datepicker-et.js delete mode 100644 ui/i18n/jquery.ui.datepicker-eu.js delete mode 100644 ui/i18n/jquery.ui.datepicker-fa.js delete mode 100644 ui/i18n/jquery.ui.datepicker-fi.js delete mode 100644 ui/i18n/jquery.ui.datepicker-fo.js delete mode 100644 ui/i18n/jquery.ui.datepicker-fr-CH.js delete mode 100644 ui/i18n/jquery.ui.datepicker-fr.js delete mode 100644 ui/i18n/jquery.ui.datepicker-gl.js delete mode 100644 ui/i18n/jquery.ui.datepicker-he.js delete mode 100644 ui/i18n/jquery.ui.datepicker-hi.js delete mode 100644 ui/i18n/jquery.ui.datepicker-hr.js delete mode 100644 ui/i18n/jquery.ui.datepicker-hu.js delete mode 100644 ui/i18n/jquery.ui.datepicker-hy.js delete mode 100644 ui/i18n/jquery.ui.datepicker-id.js delete mode 100644 ui/i18n/jquery.ui.datepicker-is.js delete mode 100644 ui/i18n/jquery.ui.datepicker-it.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ja.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ka.js delete mode 100644 ui/i18n/jquery.ui.datepicker-kk.js delete mode 100644 ui/i18n/jquery.ui.datepicker-km.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ko.js delete mode 100644 ui/i18n/jquery.ui.datepicker-lb.js delete mode 100644 ui/i18n/jquery.ui.datepicker-lt.js delete mode 100644 ui/i18n/jquery.ui.datepicker-lv.js delete mode 100644 ui/i18n/jquery.ui.datepicker-mk.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ml.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ms.js delete mode 100644 ui/i18n/jquery.ui.datepicker-nl-BE.js delete mode 100644 ui/i18n/jquery.ui.datepicker-nl.js delete mode 100644 ui/i18n/jquery.ui.datepicker-no.js delete mode 100644 ui/i18n/jquery.ui.datepicker-pl.js delete mode 100644 ui/i18n/jquery.ui.datepicker-pt-BR.js delete mode 100644 ui/i18n/jquery.ui.datepicker-pt.js delete mode 100644 ui/i18n/jquery.ui.datepicker-rm.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ro.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ru.js delete mode 100644 ui/i18n/jquery.ui.datepicker-sk.js delete mode 100644 ui/i18n/jquery.ui.datepicker-sl.js delete mode 100644 ui/i18n/jquery.ui.datepicker-sq.js delete mode 100644 ui/i18n/jquery.ui.datepicker-sr-SR.js delete mode 100644 ui/i18n/jquery.ui.datepicker-sr.js delete mode 100644 ui/i18n/jquery.ui.datepicker-sv.js delete mode 100644 ui/i18n/jquery.ui.datepicker-ta.js delete mode 100644 ui/i18n/jquery.ui.datepicker-th.js delete mode 100644 ui/i18n/jquery.ui.datepicker-tj.js delete mode 100644 ui/i18n/jquery.ui.datepicker-tr.js delete mode 100644 ui/i18n/jquery.ui.datepicker-uk.js delete mode 100644 ui/i18n/jquery.ui.datepicker-vi.js delete mode 100644 ui/i18n/jquery.ui.datepicker-zh-CN.js delete mode 100644 ui/i18n/jquery.ui.datepicker-zh-HK.js delete mode 100644 ui/i18n/jquery.ui.datepicker-zh-TW.js delete mode 100644 ui/jquery.ui.accordion.js delete mode 100644 ui/jquery.ui.autocomplete.js delete mode 100644 ui/jquery.ui.button.js delete mode 100644 ui/jquery.ui.datepicker.js delete mode 100644 ui/jquery.ui.dialog.js delete mode 100644 ui/jquery.ui.draggable.js delete mode 100644 ui/jquery.ui.droppable.js delete mode 100644 ui/jquery.ui.effect-blind.js delete mode 100644 ui/jquery.ui.effect-bounce.js delete mode 100644 ui/jquery.ui.effect-clip.js delete mode 100644 ui/jquery.ui.effect-drop.js delete mode 100644 ui/jquery.ui.effect-explode.js delete mode 100644 ui/jquery.ui.effect-fade.js delete mode 100644 ui/jquery.ui.effect-fold.js delete mode 100644 ui/jquery.ui.effect-highlight.js delete mode 100644 ui/jquery.ui.effect-pulsate.js delete mode 100644 ui/jquery.ui.effect-scale.js delete mode 100644 ui/jquery.ui.effect-shake.js delete mode 100644 ui/jquery.ui.effect-slide.js delete mode 100644 ui/jquery.ui.effect-transfer.js delete mode 100644 ui/jquery.ui.effect.js delete mode 100644 ui/jquery.ui.menu.js delete mode 100644 ui/jquery.ui.mouse.js delete mode 100644 ui/jquery.ui.progressbar.js delete mode 100644 ui/jquery.ui.resizable.js delete mode 100644 ui/jquery.ui.selectable.js delete mode 100644 ui/jquery.ui.slider.js delete mode 100644 ui/jquery.ui.sortable.js delete mode 100644 ui/jquery.ui.spinner.js delete mode 100644 ui/jquery.ui.tabs.js delete mode 100644 ui/jquery.ui.tooltip.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 1ba4f5faa..000000000 --- a/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org - -root = true - -[*] -indent_style = tab -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[external/**] -trim_trailing_whitespace = false -insert_final_newline = varies -end_of_line = varies diff --git a/.gitignore b/.gitignore index 23d9dd000..3759f9b42 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,150 @@ docs *.diff *.patch .DS_Store -.settings +*.db +*.session + +/demos/draggable +/demos/droppable +/demos/effect +/demos/hide +/demos/accordion +/demos/addClass +/demos/animate +/demos/autocomplete +/demos/button +/demos/datepicker +/demos/dialog +/demos/show +/demos/images +/demos/position +/demos/progressbar +/demos/removeClass +/demos/resizable +/demos/selectable +/demos/toggleClass +/demos/widget +/demos/demos.css +/demos/index.html +/demos/slider +/demos/sortable +/demos/switchClass +/demos/tabs +/demos/toggle +/build +/package.json +/tests/jquery-1.6.1.js +/tests/jquery-1.6.2.js +/tests/jquery-1.6.3.js +/tests/jquery-1.6.4.js +/tests/jquery-1.6.js +/tests/jquery-1.7.1.js +/tests/jquery-1.7.js +/tests/jquery-1.4.3.js +/tests/jquery-1.4.4.js +/tests/jquery-1.4.js +/tests/jquery-1.5.1.js +/tests/jquery-1.5.2.js +/tests/jquery-1.5.js +/tests/jquery-1.4.1.js +/tests/jquery-1.4.2.js +/tests/static +/tests/index.html +/tests/jquery-1.3.2.js +/tests/jquery-1.7.2.js +/tests/unit/selectable +/tests/unit/accordion +/tests/unit/autocomplete +/tests/unit/button +/tests/unit/core +/tests/unit/datepicker +/tests/unit/dialog +/tests/unit/draggable +/tests/unit/droppable +/tests/unit/images +/tests/unit/position +/tests/unit/progressbar +/tests/unit/resizable +/tests/unit/defaults.html +/tests/unit/index.html +/tests/unit/slider +/tests/unit/sortable +/tests/unit/tabs +/tests/unit/widget +/tests/unit/all.html +/tests/visual +/tests\visual/resizable +/tests\visual/selectable +/tests\visual/slider +/tests\visual/sortable +/tests\visual/tabs +/tests\visual/all.html +/tests\visual/effects.all.html +/tests\visual/theme.html +/tests\visual/dialog +/tests\visual/draggable +/tests\visual/droppable +/tests\visual/menu +/tests\visual/mouse +/tests\visual/position +/tests\visual/progressbar +/tests\visual/accordion +/tests\visual/animate +/tests\visual/autocomplete +/tests\visual/button +/tests\visual/compound +/tests\visual/datepicker +/themes/base/jquery.ui.dialog.css +/themes/base/jquery.ui.accordion.css +/themes/base/jquery.ui.all.css +/themes/base/jquery.ui.autocomplete.css +/themes/base/jquery.ui.base.css +/themes/base/jquery.ui.button.css +/themes/base/jquery.ui.datepicker.css +/themes/base/jquery.ui.progressbar.css +/themes/base/jquery.ui.resizable.css +/themes/base/jquery.ui.selectable.css +/themes/base/jquery.ui.slider.css +/themes/base/jquery.ui.tabs.css +/themes\base/jquery.ui.datepicker.css +/ui/jquery.effects.transfer.js +/ui/i18n +/ui/jquery.effects.blind.js +/ui/jquery.effects.bounce.js +/ui/jquery.effects.clip.js +/ui/jquery.effects.core.js +/ui/jquery.effects.drop.js +/ui/jquery.effects.explode.js +/ui/jquery.effects.fade.js +/ui/jquery.effects.fold.js +/ui/jquery.effects.highlight.js +/ui/jquery.effects.pulsate.js +/ui/jquery.effects.scale.js +/ui/jquery.effects.shake.js +/ui/jquery.effects.slide.js +/ui/jquery.ui.resizable.js +/ui/jquery.ui.selectable.js +/ui/jquery.ui.slider.js +/ui/jquery.ui.sortable.js +/ui/jquery.ui.tabs.js +/ui/jquery.ui.accordion.js +/ui/jquery.ui.autocomplete.js +/ui/jquery.ui.button.js +/ui/jquery.ui.datepicker.js +/ui/jquery.ui.dialog.js +/ui/jquery.ui.draggable.js +/ui/jquery.ui.droppable.js +/ui/jquery.ui.mouse.js +/ui/jquery.ui.progressbar.js +/grunt.js +/ui/jquery.ui.droppable.js +/ui/jquery.ui.mouse.js +/ui/jquery.ui.sortable.js +/ui/i18n +/ui/jquery.effects.bounce.js +/ui/jquery.effects.core.js +/ui/jquery.effects.drop.js +/ui/jquery.effects.slide.js +/ui/jquery.ui.datepicker.js +/ui/jquery.ui.dialog.js +/ui/jquery.ui.draggable.js diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index d6966c51d..000000000 --- a/.jshintrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "curly": true, - "eqnull": true, - "eqeqeq": true, - "expr": true, - "noarg": true, - "node": true, - "onevar": true, - "trailing": true, - "undef": true, - "unused": true -} diff --git a/README.md b/README.md deleted file mode 100644 index e7ae90e8a..000000000 --- a/README.md +++ /dev/null @@ -1,99 +0,0 @@ -[jQuery UI](http://jqueryui.com/) - Interactions and Widgets for the web -================================ - -jQuery UI provides interactions like Drag and Drop and widgets like Autocomplete, Tabs and Slider and makes these as easy to use as jQuery itself. - -If you want to use jQuery UI, go to [jqueryui.com](http://jqueryui.com) to get started. Or visit the [Using jQuery UI Forum](http://forum.jquery.com/using-jquery-ui) for discussions and questions. - -If you are interested in helping develop jQuery UI, you are in the right place. -To discuss development with team members and the community, visit the [Developing jQuery UI Forum](http://forum.jquery.com/developing-jquery-ui) or in #jquery on irc.freednode.net. - - -For contributors ---- - -If you want to help and provide a patch for a bugfix or new feature, please take -a few minutes and look at [our Getting Involved guide](http://wiki.jqueryui.com/w/page/35263114/Getting-Involved). -In particular check out the [Coding standards](http://wiki.jqueryui.com/w/page/12137737/Coding-standards) -and [Commit Message Style Guide](http://wiki.jqueryui.com/w/page/25941597/Commit-Message-Style-Guide). - -In general, fork the project, create a branch for a specific change and send a -pull request for that branch. Don't mix unrelated changes. You can use the commit -message as the description for the pull request. - - -Running the Unit Tests ---- - -Run the unit tests with a local server that supports PHP. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options: - -- Windows: [WAMP download](http://www.wampserver.com/en/) -- Mac: [MAMP download](http://www.mamp.info/en/index.html) -- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation) -- [Mongoose (most platforms)](http://code.google.com/p/mongoose/) - - -Building jQuery UI ---- - -jQuery UI uses the [grunt](http://github.com/cowboy/grunt) build system. Building jQuery UI requires node.js and a command line zip program. - -Install grunt. - -`npm install grunt -g` - -Clone the jQuery UI git repo. - -`git clone git://github.com/jquery/jquery-ui.git` - -`cd jquery-ui` - -Install node modules. - -`npm install` - -Run grunt. - -`grunt build` - -There are many other tasks that can be run through grunt. For a list of all tasks: - -`grunt --help` - - -For committers ---- - -When looking at pull requests, first check for [proper commit messages](http://wiki.jqueryui.com/w/page/12137724/Bug-Fixing-Guide). - -Do not merge pull requests directly through GitHub's interface. -Most pull requests are a single commit; cherry-picking will avoid creating a merge commit. -It's also common for contributors to make minor fixes in an additional one or two commits. -These should be squashed before landing in master. - -**Make sure the author has a valid name and email address associated with the commit.** - -Fetch the remote first: - - git fetch [their-fork.git] [their-branch] - -Then cherry-pick the commit(s): - - git cherry-pick [sha-of-commit] - -If you need to edit the commit message: - - git cherry-pick -e [sha-of-commit] - -If you need to edit the changes: - - git cherry-pick -n [sha-of-commit] - # make changes - git commit --author="[author-name-and-email]" - -If it should go to the stable brach, cherry-pick it to stable: - - git checkout 1-8-stable - git cherry-pick -x [sha-of-commit-from-master] - -*NOTE: Do not cherry-pick into 1-8-stable until you have pushed the commit from master upstream.* diff --git a/build/core.json b/build/core.json deleted file mode 100644 index a9cac173a..000000000 --- a/build/core.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "core": { - "description": "The core of jQuery UI, required for all interactions and widgets.", - "homepage": "http://jqueryui.com/", - "demo": "http://jqueryui.com/", - "docs": "http://api.jqueryui.com/category/ui-core/" - }, - "datepicker": { - "description": "Displays a calendar from an input or inline for selecting dates.", - "dependencies": [ "core" ], - "keywords": [ - "form", - "calendar", - "date", - "i18n" - ], - "category": "widget" - }, - "effect": { - "title": "jQuery UI Effects Core", - "description": "Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.", - "keywords": [ - "animation", - "show", - "hide", - "color", - "class", - "transition", - "easing" - ], - "category": "effect", - "homepage": "http://jqueryui.com/", - "demo": "http://jqueryui.com/effects/", - "docs": "http://api.jqueryui.com/category/effects-core/" - }, - "position": { - "description": "Positions elements relative to other elements.", - "keywords": [ - "offset", - "relative", - "absolute", - "fixed", - "collision" - ] - }, - "transfer": { - "name": "ui.effect-transfer", - "title": "jQuery UI Transfer Effect", - "description": "Displays a transfer effect from one element to another.", - "keywords": [ - "effect" - ], - "homepage": "http://jqueryui.com/transfer-effect/", - "demo": "http://jqueryui.com/transfer-effect/", - "docs": "http://api.jqueryui.com/transfer-effect/", - "dependencies": [ "effect" ], - "category": "effect" - }, - "widget": { - "description": "Provides a factory for creating stateful widgets with a common API.", - "keywords": [ - "abstraction", - "state", - "factory" - ], - "docs": "http://api.jqueryui.com/jQuery.widget/" - } -} diff --git a/build/effect.json b/build/effect.json deleted file mode 100644 index 7119f85bc..000000000 --- a/build/effect.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "blind": { - "description": "Blinds the element." - }, - "bounce": { - "description": "Bounces an element horizontally or vertically n times." - }, - "clip": { - "description": "Clips the element on and off like an old TV." - }, - "drop": { - "description": "Moves an element in one direction and hides it at the same time." - }, - "explode": { - "description": "Explodes an element in all directions into n pieces. Implodes an element to its original wholeness." - }, - "fade": { - "description": "Fades an element." - }, - "fold": { - "description": "Folds an element first horizontally and then vertically." - }, - "highlight": { - "description": "Highlights the background of an element in a defined color for a custom duration." - }, - "pulsate": { - "description": "Pulsates an element n times by changing the opacity to zero and back." - }, - "scale": { - "description": "Grows or shrinks an element and its content. Restores an elemnt to its original size." - }, - "shake": { - "description": "Shakes an element horizontally or vertically n times." - }, - "slide": { - "description": "Slides an element in and out of the viewport." - } -} diff --git a/build/interaction.json b/build/interaction.json deleted file mode 100644 index d964c4ac3..000000000 --- a/build/interaction.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "draggable": { - "description": "Enables dragging functionality for any element.", - "keywords": [ - "drag", - "drop" - ] - }, - "droppable": { - "dependencies": [ "draggable" ], - "description": "Enables drop targets for draggable elements.", - "keywords": [ - "drag", - "drop" - ] - }, - "resizable": { - "description": "Enables resize functionality for any element.", - "keywords": [ - "resize" - ] - }, - "selectable": { - "description": "Allows groups of elements to be selected with the mouse.", - "keywords": [ - "selection" - ] - }, - "sortable": { - "description": "Enables items in a list to be sorted using the mouse.", - "keywords": [ - "sort", - "list" - ] - } -} \ No newline at end of file diff --git a/build/release/changelog-shell b/build/release/changelog-shell deleted file mode 100644 index 9f0f9b436..000000000 --- a/build/release/changelog-shell +++ /dev/null @@ -1,109 +0,0 @@ - -This file contains a shell for the changelog, followed by a list of every commit for this release. - -Choose the appropriate line for the Summary section. - -Move all commit notes to the appropriate section. -- Each line should be in the following format: - [Fixed|Added]: The ticket description. ([Ticket link], [Commit link]) -- If the commit is not related to a bug or feature, e.g., whitepsace cleanup, remove it. -- If there is no ticket number, search Trac for the relevant ticket. - - If there is no ticket, create one (if needed), or leave just the commit link. - -Double check that "TICKETREF" does not appear anywhere in the changelog. - -Add this changelog to jqueryui.com. - - - -DELETE EVERYTHING ABOVE THE FOLLOWING LINE ------------------------------------------- - - -## Build - - -## Core & Utilities - -### UI Core - - -### Mouse - - -### Widget Factory - - -### Position - - -## Interactions - -### Draggable - - -### Droppable - - -### Resizable - - -### Selectable - - -### Sortable - - -## Widgets - -### Accordion - - -### Autocomplete - - -### Button - - -### Datepicker - - -### Dialog - - -### Menu - - -### Progressbar - - -### Slider - - -### Spinner - - -### Tabs - - -### Tooltip - - -## Effects - - -### Individual effects - - -## CSS Framework - - -## Demos - - -## Website - - -### Download Builder diff --git a/build/release/release.js b/build/release/release.js deleted file mode 100644 index 4b7875479..000000000 --- a/build/release/release.js +++ /dev/null @@ -1,409 +0,0 @@ -#!/usr/bin/env node -/*global cat:true cd:true echo:true exec:true exit:true*/ - -"use strict"; - -var baseDir, repoDir, prevVersion, newVersion, nextVersion, tagTime, - fs = require( "fs" ), - path = require( "path" ), - // support: node <0.8 - existsSync = fs.existsSync || path.existsSync, - rnewline = /\r?\n/, - repo = "git@github.com:jquery/jquery-ui.git", - branch = "1-9-stable"; - -walk([ - bootstrap, - - section( "setting up repo" ), - cloneRepo, - checkState, - - section( "calculating versions" ), - getVersions, - confirm, - - section( "building release" ), - buildRelease, - - section( "pushing tag" ), - confirmReview, - pushRelease, - - section( "updating branch version" ), - updateBranchVersion, - - section( "pushing " + branch ), - confirmReview, - pushBranch, - - section( "generating changelog" ), - generateChangelog, - - section( "gathering contributors" ), - gatherContributors, - - section( "updating trac" ), - updateTrac, - confirm - - // TODO: upload release zip to GitHub -]); - - - - - -function cloneRepo() { - echo( "Cloning " + repo.cyan + "..." ); - git( "clone " + repo + " " + repoDir, "Error cloning repo." ); - cd( repoDir ); - - echo( "Checking out " + branch.cyan + " branch..." ); - git( "checkout " + branch, "Error checking out branch." ); - echo(); - - echo( "Installing dependencies..." ); - if ( exec( "npm install" ).code !== 0 ) { - abort( "Error installing dependencies." ); - } - if ( exec( "npm install download.jqueryui.com" ).code !== 0 ) { - abort( "Error installing dependencies." ); - } - echo(); -} - -function checkState() { - echo( "Checking AUTHORS.txt..." ); - var result, lastActualAuthor, - lastListedAuthor = cat( "AUTHORS.txt" ).trim().split( rnewline ).pop(); - - result = exec( "grunt authors", { silent: true }); - if ( result.code !== 0 ) { - abort( "Error getting list of authors." ); - } - lastActualAuthor = result.output.split( rnewline ).splice( -4, 1 )[ 0 ]; - - if ( lastListedAuthor !== lastActualAuthor ) { - echo( "Last listed author is " + lastListedAuthor.red + "." ); - echo( "Last actual author is " + lastActualAuthor.green + "." ); - abort( "Please update AUTHORS.txt." ); - } - - echo( "Last listed author (" + lastListedAuthor.cyan + ") is correct." ); -} - -function getVersions() { - // prevVersion, newVersion, nextVersion are defined in the parent scope - var parts, major, minor, patch, - currentVersion = readPackage().version; - - echo( "Validating current version..." ); - if ( currentVersion.substr( -3, 3 ) !== "pre" ) { - echo( "The current version is " + currentVersion.red + "." ); - abort( "The version must be a pre version." ); - } - - newVersion = currentVersion.substr( 0, currentVersion.length - 3 ); - parts = newVersion.split( "." ); - major = parseInt( parts[ 0 ], 10 ); - minor = parseInt( parts[ 1 ], 10 ); - patch = parseInt( parts[ 2 ], 10 ); - - // TODO: handle 2.0.0 - if ( minor === 0 ) { - abort( "This script is not smart enough to handle the 2.0.0 release." ); - } - - prevVersion = patch === 0 ? - [ major, minor - 1, 0 ].join( "." ) : - [ major, minor, patch - 1 ].join( "." ); - // TODO: Remove version hack after 1.9.0 release - if ( prevVersion === "1.8.0" ) { - prevVersion = "1.8"; - } - nextVersion = [ major, minor, patch + 1 ].join( "." ) + "pre"; - - echo( "We are going from " + prevVersion.cyan + " to " + newVersion.cyan + "." ); - echo( "After the release, the version will be " + nextVersion.cyan + "." ); -} - -function buildRelease() { - var pkg; - - echo( "Creating " + "release".cyan + " branch..." ); - git( "checkout -b release", "Error creating release branch." ); - echo(); - - echo( "Updating package.json..." ); - pkg = readPackage(); - pkg.version = newVersion; - pkg.author.url = pkg.author.url.replace( "master", newVersion ); - pkg.licenses.forEach(function( license ) { - license.url = license.url.replace( "master", newVersion ); - }); - writePackage( pkg ); - - echo( "Generating manifest files..." ); - if ( exec( "grunt manifest" ).code !== 0 ) { - abort( "Error generating manifest files." ); - } - echo(); - - echo( "Building release..." ); - if ( exec( "grunt release_cdn" ).code !== 0 ) { - abort( "Error building release." ); - } - echo(); - - echo( "Committing release artifacts..." ); - git( "add *.jquery.json", "Error adding manifest files to git." ); - git( "commit -am 'Tagging the " + newVersion + " release.'", - "Error committing release changes." ); - echo(); - - echo( "Tagging release..." ); - git( "tag " + newVersion, "Error tagging " + newVersion + "." ); - tagTime = git( "log -1 --format='%ad'", "Error getting tag timestamp." ).trim(); -} - -function pushRelease() { - echo( "Pushing release to GitHub..." ); - git( "push --tags", "Error pushing tags to GitHub." ); -} - -function updateBranchVersion() { - var pkg; - - echo( "Checking out " + branch.cyan + " branch..." ); - git( "checkout " + branch, "Error checking out " + branch + " branch." ); - - echo( "Updating package.json..." ); - pkg = readPackage(); - pkg.version = nextVersion; - writePackage( pkg ); - - echo( "Committing version update..." ); - git( "commit -am 'Updating the " + branch + " version to " + nextVersion + ".'", - "Error committing package.json." ); -} - -function pushBranch() { - echo( "Pushing " + branch.cyan + " to GitHub..." ); - git( "push", "Error pushing to GitHub." ); -} - -function generateChangelog() { - var commits, - changelogPath = baseDir + "/changelog", - changelog = cat( "build/release/changelog-shell" ) + "\n", - fullFormat = "* %s (TICKETREF, [%h](http://github.com/jquery/jquery-ui/commit/%H))"; - - changelog = changelog.replace( "{title}", "jQuery UI " + newVersion + " Changelog" ); - - echo ( "Adding commits..." ); - commits = gitLog( fullFormat ); - - echo( "Adding links to tickets..." ); - changelog += commits - // Add ticket references - .map(function( commit ) { - var tickets = []; - commit.replace( /Fixe[sd] #(\d+)/g, function( match, ticket ) { - tickets.push( ticket ); - }); - return tickets.length ? - commit.replace( "TICKETREF", tickets.map(function( ticket ) { - return "[#" + ticket + "](http://bugs.jqueryui.com/ticket/" + ticket + ")"; - }).join( ", " ) ) : - // Leave TICKETREF token in place so it's easy to find commits without tickets - commit; - }) - // Sort commits so that they're grouped by component - .sort() - .join( "\n" ) + "\n"; - - echo( "Adding Trac tickets..." ); - changelog += trac( "/query?milestone=" + newVersion + "&resolution=fixed" + - "&col=id&col=component&col=summary&order=component" ) + "\n"; - - fs.writeFileSync( changelogPath, changelog ); - echo( "Stored changelog in " + changelogPath.cyan + "." ); -} - -function gatherContributors() { - var contributors, - contributorsPath = baseDir + "/contributors"; - - echo( "Adding committers and authors..." ); - contributors = gitLog( "%aN%n%cN" ); - - echo( "Adding reporters and commenters from Trac..." ); - contributors = contributors.concat( - trac( "/report/22?V=" + newVersion + "&max=-1" ) - .split( rnewline ) - // Remove header and trailing newline - .slice( 1, -1 ) ); - - echo( "Sorting contributors..." ); - contributors = unique( contributors ).sort(function( a, b ) { - return a.toLowerCase() < b.toLowerCase() ? -1 : 1; - }); - - echo ( "Adding people thanked in commits..." ); - contributors = contributors.concat( - gitLog( "%b%n%s" ).filter(function( line ) { - return (/thank/i).test( line ); - })); - - fs.writeFileSync( contributorsPath, contributors.join( "\n" ) ); - echo( "Stored contributors in " + contributorsPath.cyan + "." ); -} - -function updateTrac() { - echo( newVersion.cyan + " was tagged at " + tagTime.cyan + "." ); - echo( "Close the " + newVersion.cyan + " Milestone with the above date and time." ); - echo( "Create the " + newVersion.cyan + " Version with the above date and time." ); - echo( "Create a Milestone for the next minor release." ); -} - - - - - -// ===== HELPER FUNCTIONS ====================================================== - -function git( command, errorMessage ) { - var result = exec( "git " + command ); - if ( result.code !== 0 ) { - abort( errorMessage ); - } - - return result.output; -} - -function gitLog( format ) { - var result = exec( "git log " + prevVersion + ".." + newVersion + " " + - "--format='" + format + "'", - { silent: true }); - - if ( result.code !== 0 ) { - abort( "Error getting git log." ); - } - - result = result.output.split( rnewline ); - if ( result[ result.length - 1 ] === "" ) { - result.pop(); - } - - return result; -} - -function trac( path ) { - var result = exec( "curl -s 'http://bugs.jqueryui.com" + path + "&format=tab'", - { silent: true }); - - if ( result.code !== 0 ) { - abort( "Error getting Trac data." ); - } - - return result.output; -} - -function unique( arr ) { - var obj = {}; - arr.forEach(function( item ) { - obj[ item ] = 1; - }); - return Object.keys( obj ); -} - -function readPackage() { - return JSON.parse( fs.readFileSync( repoDir + "/package.json" ) ); -} - -function writePackage( pkg ) { - fs.writeFileSync( repoDir + "/package.json", - JSON.stringify( pkg, null, "\t" ) + "\n" ); -} - -function bootstrap( fn ) { - console.log( "Determining directories..." ); - baseDir = process.cwd() + "/__release"; - repoDir = baseDir + "/repo"; - - if ( existsSync( baseDir ) ) { - console.log( "The directory '" + baseDir + "' already exists." ); - console.log( "Aborting." ); - process.exit( 1 ); - } - - console.log( "Creating directory..." ); - fs.mkdirSync( baseDir ); - - console.log( "Installing dependencies..." ); - require( "child_process" ).exec( "npm install shelljs colors", { - cwd: baseDir - }, function( error ) { - if ( error ) { - console.log( error ); - return process.exit( 1 ); - } - - require( "shelljs/global" ); - require( "colors" ); - - fn(); - }); -} - -function section( name ) { - return function() { - echo(); - echo( "##" ); - echo( "## " + name.toUpperCase().magenta ); - echo( "##" ); - echo(); - }; -} - -function prompt( fn ) { - process.stdin.once( "data", function( chunk ) { - process.stdin.pause(); - fn( chunk.toString().trim() ); - }); - process.stdin.resume(); -} - -function confirm( fn ) { - echo( "Press enter to continue, or ctrl+c to cancel.".yellow ); - prompt( fn ); -} - -function confirmReview( fn ) { - echo( "Please review the output and generated files as a sanity check.".yellow ); - confirm( fn ); -} - -function abort( msg ) { - echo( msg.red ); - echo( "Aborting.".red ); - exit( 1 ); -} - -function walk( methods ) { - var method = methods.shift(); - - function next() { - if ( methods.length ) { - walk( methods ); - } - } - - if ( !method.length ) { - method(); - next(); - } else { - method( next ); - } -} diff --git a/build/tasks/build.js b/build/tasks/build.js deleted file mode 100644 index 18e427a56..000000000 --- a/build/tasks/build.js +++ /dev/null @@ -1,241 +0,0 @@ -module.exports = function( grunt ) { - -"use strict"; - -var path = require( "path" ), - fs = require( "fs" ); - -grunt.registerTask( "manifest", "Generate jquery.json manifest files", function() { - var pkg = grunt.config( "pkg" ), - base = { - core: { - name: "ui.{plugin}", - title: "jQuery UI {Plugin}" - }, - widget: { - name: "ui.{plugin}", - title: "jQuery UI {Plugin}", - dependencies: [ "core", "widget" ] - }, - interaction: { - name: "ui.{plugin}", - title: "jQuery UI {Plugin}", - dependencies: [ "core", "widget", "mouse" ] - }, - effect: { - name: "ui.effect-{plugin}", - title: "jQuery UI {Plugin} Effect", - keywords: [ "effect", "show", "hide" ], - homepage: "http://jqueryui.com/{plugin}-effect/", - demo: "http://jqueryui.com/{plugin}-effect/", - docs: "http://api.jqueryui.com/{plugin}-effect/", - dependencies: [ "effect" ] - } - }; - - Object.keys( base ).forEach(function( type ) { - var baseManifest = base[ type ], - plugins = grunt.file.readJSON( "build/" + type + ".json" ); - - Object.keys( plugins ).forEach(function( plugin ) { - var manifest, - data = plugins[ plugin ], - name = plugin.charAt( 0 ).toUpperCase() + plugin.substr( 1 ); - - function replace( str ) { - return str.replace( "{plugin}", plugin ).replace( "{Plugin}", name ); - } - - manifest = { - name: data.name || replace( baseManifest.name ), - title: data.title || replace( baseManifest.title ), - description: data.description, - keywords: [ "ui", plugin ] - .concat( baseManifest.keywords || [] ) - .concat( data.keywords || [] ), - version: pkg.version, - author: pkg.author, - maintainers: pkg.maintainers, - licenses: pkg.licenses, - bugs: pkg.bugs, - homepage: data.homepage || replace( baseManifest.homepage || - "http://jqueryui.com/{plugin}/" ), - demo: data.demo || replace( baseManifest.demo || - "http://jqueryui.com/{plugin}/" ), - docs: data.docs || replace( baseManifest.docs || - "http://api.jqueryui.com/{plugin}/" ), - download: "http://jqueryui.com/download/", - dependencies: { - jquery: ">=1.6" - }, - // custom - category: data.category || type - }; - - (baseManifest.dependencies || []) - .concat(data.dependencies || []) - .forEach(function( dependency ) { - manifest.dependencies[ "ui." + dependency ] = pkg.version; - }); - - grunt.file.write( manifest.name + ".jquery.json", - JSON.stringify( manifest, null, "\t" ) + "\n" ); - }); - }); -}); - -grunt.registerMultiTask( "copy", "Copy files to destination folder and replace @VERSION with pkg.version", function() { - function replaceVersion( source ) { - return source.replace( /@VERSION/g, grunt.config( "pkg.version" ) ); - } - function copyFile( src, dest ) { - if ( /(js|css)$/.test( src ) ) { - grunt.file.copy( src, dest, { - process: replaceVersion - }); - } else { - grunt.file.copy( src, dest ); - } - } - var files = grunt.file.expandFiles( this.file.src ), - target = this.file.dest + "/", - strip = this.data.strip, - renameCount = 0, - fileName; - if ( typeof strip === "string" ) { - strip = new RegExp( "^" + grunt.template.process( strip, grunt.config() ).replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ) ); - } - files.forEach(function( fileName ) { - var targetFile = strip ? fileName.replace( strip, "" ) : fileName; - copyFile( fileName, target + targetFile ); - }); - grunt.log.writeln( "Copied " + files.length + " files." ); - for ( fileName in this.data.renames ) { - renameCount += 1; - copyFile( fileName, target + grunt.template.process( this.data.renames[ fileName ], grunt.config() ) ); - } - if ( renameCount ) { - grunt.log.writeln( "Renamed " + renameCount + " files." ); - } -}); - - -grunt.registerMultiTask( "zip", "Create a zip file for release", function() { - // TODO switch back to adm-zip for better cross-platform compability once it actually works - // 0.1.3 works, but result can't be unzipped - // its also a lot slower then zip program, probably due to how its used... - // var files = grunt.file.expandFiles( "dist/" + this.file.src + "/**/*" ); - // grunt.log.writeln( "Creating zip file " + this.file.dest ); - - //var AdmZip = require( "adm-zip" ); - //var zip = new AdmZip(); - //files.forEach(function( file ) { - // grunt.verbose.writeln( "Zipping " + file ); - // // rewrite file names from dist folder (created by build), drop the /dist part - // zip.addFile(file.replace(/^dist/, "" ), fs.readFileSync( file ) ); - //}); - //zip.writeZip( "dist/" + this.file.dest ); - //grunt.log.writeln( "Wrote " + files.length + " files to " + this.file.dest ); - - var done = this.async(), - dest = this.file.dest, - src = grunt.template.process( this.file.src, grunt.config() ); - grunt.utils.spawn({ - cmd: "zip", - args: [ "-r", dest, src ], - opts: { - cwd: 'dist' - } - }, function( err ) { - if ( err ) { - grunt.log.error( err ); - done(); - return; - } - grunt.log.writeln( "Zipped " + dest ); - done(); - }); -}); - -grunt.registerMultiTask( "md5", "Create list of md5 hashes for CDN uploads", function() { - // remove dest file before creating it, to make sure itself is not included - if ( path.existsSync( this.file.dest ) ) { - fs.unlinkSync( this.file.dest ); - } - var crypto = require( "crypto" ), - dir = this.file.src + "/", - hashes = []; - grunt.file.expandFiles( dir + "**/*" ).forEach(function( fileName ) { - var hash = crypto.createHash( "md5" ); - hash.update( grunt.file.read( fileName, "ascii" ) ); - hashes.push( fileName.replace( dir, "" ) + " " + hash.digest( "hex" ) ); - }); - grunt.file.write( this.file.dest, hashes.join( "\n" ) + "\n" ); - grunt.log.writeln( "Wrote " + this.file.dest + " with " + hashes.length + " hashes" ); -}); - -grunt.registerTask( "generate_themes", function() { - var download, files, done, - target = "dist/" + grunt.template.process( grunt.config( "files.themes" ), grunt.config() ) + "/", - distFolder = "dist/" + grunt.template.process( grunt.config( "files.dist" ), grunt.config() ); - try { - require.resolve( "download.jqueryui.com" ); - } catch( error ) { - throw new Error( "You need to manually install download.jqueryui.com for this task to work" ); - } - - // copy release files into download builder to avoid cloning again - grunt.file.expandFiles( distFolder + "/**" ).forEach(function( file ) { - grunt.file.copy( file, "node_modules/download.jqueryui.com/release/" + file.replace(/^dist/, "") ); - }); - - download = new ( require( "download.jqueryui.com" ) )(); - - files = grunt.file.expandFiles( distFolder + "/themes/base/**/*" ); - files.forEach(function( fileName ) { - grunt.file.copy( fileName, target + fileName.replace( distFolder, "" ) ); - }); - - done = this.async(); - grunt.utils.async.forEach( download.themeroller.gallery(), function( theme, done ) { - var folderName = theme.folderName(), - concatTarget = "css-" + folderName, - cssContent = theme.css(), - cssFolderName = target + "themes/" + folderName + "/", - cssFileName = cssFolderName + "jquery.ui.theme.css", - cssFiles = grunt.config.get( "concat.css.src" )[ 1 ].slice(); - - grunt.file.write( cssFileName, cssContent ); - - // get css components, replace the last file with the current theme - cssFiles.splice(-1); - cssFiles.push( "" ); - grunt.config.get( "concat" )[ concatTarget ] = { - src: [ "", cssFiles ], - dest: cssFolderName + "jquery-ui.css" - }; - grunt.task.run( "concat:" + concatTarget ); - - theme.fetchImages(function( err, files ) { - if ( err ) { - done( err ); - return; - } - files.forEach(function( file ) { - grunt.file.write( cssFolderName + "images/" + file.path, file.data ); - }); - done(); - }); - }, function( err ) { - if ( err ) { - grunt.log.error( err ); - } - done( !err ); - }); -}); - -grunt.registerTask( "clean", function() { - require( "rimraf" ).sync( "dist" ); -}); - -}; diff --git a/build/tasks/testswarm.js b/build/tasks/testswarm.js deleted file mode 100644 index 5d7425515..000000000 --- a/build/tasks/testswarm.js +++ /dev/null @@ -1,82 +0,0 @@ -module.exports = function( grunt ) { - -"use strict"; - -var versions = { - "git": "git", - "1.8": "1.8.0 1.8.1 1.8.2 1.8.3", - "1.7": "1.7 1.7.1 1.7.2", - "1.6": "1.6 1.6.1 1.6.2 1.6.3 1.6.4" - }, - tests = { - "Accordion": "accordion/accordion.html", - "Accordion_deprecated": "accordion/accordion_deprecated.html", - "Autocomplete": "autocomplete/autocomplete.html", - "Button": "button/button.html", - "Core": "core/core.html", - //"datepicker/datepicker.html", - //"dialog/dialog.html", - //"draggable/draggable.html", - //"droppable/droppable.html", - "Effects": "effects/effects.html", - "Menu": "menu/menu.html", - "Position": "position/position.html", - "Position_deprecated": "position/position_deprecated.html", - "Progressbar": "progressbar/progressbar.html", - //"resizable/resizable.html", - //"selectable/selectable.html", - //"slider/slider.html", - //"sortable/sortable.html", - "Spinner": "spinner/spinner.html", - "Tabs": "tabs/tabs.html", - "Tabs_deprecated": "tabs/tabs_deprecated.html", - "Tooltip": "tooltip/tooltip.html", - "Widget": "widget/widget.html" - }; - -function submit( commit, tests, configFile, version, done ) { - var test, - testswarm = require( "testswarm" ), - config = grunt.file.readJSON( configFile ).jqueryui, - testBase = config.testUrl + commit + "/tests/unit/", - testUrls = []; - for ( test in tests ) { - testUrls.push( testBase + tests[ test ] ); - } - version = version ? ( version + " " ) : ""; - testswarm({ - url: config.swarmUrl, - pollInterval: 10000, - timeout: 1000 * 60 * 45, - done: done - }, { - authUsername: config.authUsername, - authToken: config.authToken, - jobName: 'jQuery UI 1-9 ' + version + '#' + commit.substr( 0, 10 ) + '', - runMax: config.runMax, - "runNames[]": Object.keys(tests), - "runUrls[]": testUrls, - "browserSets[]": ["popular"] - }); -} - -grunt.registerTask( "testswarm", function( commit, configFile ) { - var test, - latestTests = {}; - for ( test in tests ) { - latestTests[ test ] = tests[ test ] + "?nojshint=true"; - } - submit( commit, latestTests, configFile, "", this.async() ); -}); - -grunt.registerTask( "testswarm-multi-jquery", function( commit, configFile, minor ) { - var allTests = {}; - versions[ minor ].split(" ").forEach(function( version ) { - for ( var test in tests ) { - allTests[ test + "-" + version ] = tests[ test ] + "?nojshint=true&jquery=" + version; - } - }); - submit( commit, allTests, configFile, minor + " core", this.async() ); -}); - -}; diff --git a/build/widget.json b/build/widget.json deleted file mode 100644 index 6adddb121..000000000 --- a/build/widget.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "accordion": { - "dependencies": [], - "description": "Displays collapsible content panels for presenting information in a limited amount of space.", - "keywords": [ - "navigation", - "panel", - "collapse", - "expand" - ] - }, - "autocomplete": { - "dependencies": [ "menu", "position" ], - "description": "Lists suggested words as the user is typing.", - "keywords": [ - "form", - "word", - "predict", - "suggest" - ] - }, - "button": { - "dependencies": [], - "description": "Enhances a form with themable buttons.", - "keywords": [ - "form", - "radio", - "checkbox" - ] - }, - "dialog": { - "dependencies": [ "button", "draggable", "position", "resizable" ], - "description": "Displays customizable dialog windows.", - "keywords": [ - "modal", - "alert", - "popup" - ] - }, - "menu": { - "dependencies": [ "position" ], - "description": "Creates nestable menus.", - "keywords": [ - "dropdown", - "flyout" - ] - }, - "mouse": { - "dependencies": [], - "description": "Abstracts mouse-based interactions to assist in creating certain widgets.", - "keywords": [ - "abstraction" - ], - "category": "core" - }, - "progressbar": { - "dependencies": [], - "description": "Displays a status indicator for loading state, standard percentage, and other progress indicators.", - "keywords": [ - "determinate", - "status" - ] - }, - "slider": { - "dependencies": [ "mouse" ], - "description": "Displays a flexible slider with ranges and accessibility via keyboard.", - "keywords": [ - "form", - "number", - "range" - ] - }, - "spinner": { - "dependencies": [ "button" ], - "description": "Displays buttons to easily input numbers via the keyboard or mouse.", - "keywords": [ - "form", - "number", - "spinbutton", - "stepper" - ] - }, - "tabs": { - "dependencies": [], - "description": "Transforms a set of container elements into a tab structure.", - "keywords": [ - "navigation", - "panel", - "collapse", - "expand" - ] - }, - "tooltip": { - "dependencies": [ "position" ], - "description": "Shows additional information for any element on hover or focus.", - "keywords": [] - } -} diff --git a/demos/accordion/collapsible.html b/demos/accordion/collapsible.html deleted file mode 100644 index 358ff618c..000000000 --- a/demos/accordion/collapsible.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - jQuery UI Accordion - Collapse content - - - - - - - - - - -
-

Section 1

-
-

Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.

-
-

Section 2

-
-

Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna.

-
-

Section 3

-
-

Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.

-
    -
  • List item one
  • -
  • List item two
  • -
  • List item three
  • -
-
-

Section 4

-
-

Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est.

Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

-
-
- -
-

By default, accordions always keep one section open. To allow for all sections to be be collapsible, set the collapsible option to true. Click on the currently open section to collapse its content pane.

-
- - diff --git a/demos/accordion/custom-icons.html b/demos/accordion/custom-icons.html deleted file mode 100644 index 56a9d450c..000000000 --- a/demos/accordion/custom-icons.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - jQuery UI Accordion - Customize icons - - - - - - - - - - - -
-

Section 1

-
-

Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.

-
-

Section 2

-
-

Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna.

-
-

Section 3

-
-

Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.

-
    -
  • List item one
  • -
  • List item two
  • -
  • List item three
  • -
-
-

Section 4

-
-

Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est.

Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

-
-
- - - -
-

Customize the header icons with the icons option, which accepts classes for the header's default and active (open) state. Use any class from the UI CSS framework, or create custom classes with background images.

-
- - diff --git a/demos/accordion/default.html b/demos/accordion/default.html deleted file mode 100644 index 311717a40..000000000 --- a/demos/accordion/default.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - jQuery UI Accordion - Default functionality - - - - - - - - - - -
-

Section 1

-
-

- Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer - ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit - amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut - odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. -

-
-

Section 2

-
-

- Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet - purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor - velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In - suscipit faucibus urna. -

-
-

Section 3

-
-

- Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. - Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero - ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis - lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. -

-
    -
  • List item one
  • -
  • List item two
  • -
  • List item three
  • -
-
-

Section 4

-
-

- Cras dictum. Pellentesque habitant morbi tristique senectus et netus - et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in - faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia - mauris vel est. -

-

- Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. - Class aptent taciti sociosqu ad litora torquent per conubia nostra, per - inceptos himenaeos. -

-
-
- -
-

-Click headers to expand/collapse content that is broken into logical sections, much like tabs. -Optionally, toggle sections open/closed on mouseover. -

-

-The underlying HTML markup is a series of headers (H3 tags) and content divs so the content is -usable without JavaScript. -

-
- - diff --git a/demos/accordion/fillspace.html b/demos/accordion/fillspace.html deleted file mode 100644 index 1e7df6596..000000000 --- a/demos/accordion/fillspace.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - jQuery UI Accordion - Fill space - - - - - - - - - - - - - -

Resize the outer container:

- -
-
-

Section 1

-
-

Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.

-
-

Section 2

-
-

Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna.

-
-

Section 3

-
-

Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.

-
    -
  • List item one
  • -
  • List item two
  • -
  • List item three
  • -
-
-

Section 4

-
-

Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est.

Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

-
-
-
- -
-

Because the accordion is comprised of block-level elements, by default its width fills the available horizontal space. To fill the vertical space allocated by its container, set the heightStyle option to "fill", and the script will automatically set the dimensions of the accordion to the height of its parent container.

-
- - diff --git a/demos/accordion/hoverintent.html b/demos/accordion/hoverintent.html deleted file mode 100644 index ce195c05f..000000000 --- a/demos/accordion/hoverintent.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - jQuery UI Accordion - Open on hoverintent - - - - - - - - - - -
-

Section 1

-
-

- Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer - ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit - amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut - odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. -

-
-

Section 2

-
-

- Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet - purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor - velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In - suscipit faucibus urna. -

-
-

Section 3

-
-

- Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. - Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero - ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis - lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. -

-
    -
  • List item one
  • -
  • List item two
  • -
  • List item three
  • -
-
-

Section 4

-
-

- Cras dictum. Pellentesque habitant morbi tristique senectus et netus - et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in - faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia - mauris vel est. -

-

- Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. - Class aptent taciti sociosqu ad litora torquent per conubia nostra, per - inceptos himenaeos. -

-
-
- -
-

-Click headers to expand/collapse content that is broken into logical sections, much like tabs. -Optionally, toggle sections open/closed on mouseover. -

-

-The underlying HTML markup is a series of headers (H3 tags) and content divs so the content is -usable without JavaScript. -

-
- - diff --git a/demos/accordion/index.html b/demos/accordion/index.html deleted file mode 100644 index 92bd33d9b..000000000 --- a/demos/accordion/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - jQuery UI Accordion Demos - - - - - - - diff --git a/demos/accordion/no-auto-height.html b/demos/accordion/no-auto-height.html deleted file mode 100644 index 2edaa10ea..000000000 --- a/demos/accordion/no-auto-height.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - jQuery UI Accordion - No auto height - - - - - - - - - - -
-

Section 1

-
-

Mauris mauris ante, blandit et, ultrices a, susceros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.

-
-

Section 2

-
-

Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna.

-
-

Section 3

-
-

Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.

-
    -
  • List item
  • -
  • List item
  • -
  • List item
  • -
  • List item
  • -
  • List item
  • -
  • List item
  • -
  • List item
  • -
-
-
- -
-

Setting heightStyle: "content" allows the accordion panels to keep their native height.

-
- - diff --git a/demos/accordion/sortable.html b/demos/accordion/sortable.html deleted file mode 100644 index 56020efbe..000000000 --- a/demos/accordion/sortable.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - jQuery UI Accordion - Sortable - - - - - - - - - - - - - -
-
-

Section 1

-
-

Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.

-
-
-
-

Section 2

-
-

Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna.

-
-
-
-

Section 3

-
-

Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.

-
    -
  • List item one
  • -
  • List item two
  • -
  • List item three
  • -
-
-
-
-

Section 4

-
-

Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est.

Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

-
-
-
- -
-

Drag the header to re-order panels.

-
- - diff --git a/demos/addClass/default.html b/demos/addClass/default.html deleted file mode 100644 index a0c1ceb14..000000000 --- a/demos/addClass/default.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - jQuery UI Effects - addClass demo - - - - - - - - - -
-
- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. -
-
- -Run Effect - -
-

This demo adds a class which animates: text-indent, letter-spacing, width, height, padding, margin, and font-size.

-
- - diff --git a/demos/addClass/index.html b/demos/addClass/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/addClass/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/animate/default.html b/demos/animate/default.html deleted file mode 100644 index a5c9ae1a5..000000000 --- a/demos/animate/default.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - jQuery UI Effects - Animate demo - - - - - - - - - -
-
-

Animate

-

- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi. -

-
-
- -Toggle Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/animate/index.html b/demos/animate/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/animate/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/autocomplete/categories.html b/demos/autocomplete/categories.html deleted file mode 100644 index 87dc96f60..000000000 --- a/demos/autocomplete/categories.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - jQuery UI Autocomplete - Categories - - - - - - - - - - - - - - - - - -
-

A categorized search result. Try typing "a" or "n".

-
- - diff --git a/demos/autocomplete/combobox.html b/demos/autocomplete/combobox.html deleted file mode 100644 index d3e19c35c..000000000 --- a/demos/autocomplete/combobox.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - jQuery UI Autocomplete - Combobox - - - - - - - - - - - - - - - -
- - -
- - -
-

A custom widget built by composition of Autocomplete and Button. You can either type something into the field to get filtered suggestions based on your input, or use the button to get the full list of selections.

-

The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.

-

This is not a supported or even complete widget. Its purely for demoing what autocomplete can do with a bit of customization. For a detailed explanation of how the widget works, check out this Learning jQuery article.

-
- - diff --git a/demos/autocomplete/custom-data.html b/demos/autocomplete/custom-data.html deleted file mode 100644 index 31417c3b8..000000000 --- a/demos/autocomplete/custom-data.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - jQuery UI Autocomplete - Custom data and display - - - - - - - - - - - - - -
Select a project (type "j" for a start):
- - - -

- -
-

You can use your own custom data formats and displays by simply overriding the default focus and select actions.

-

Try typing "j" to get a list of projects or just press the down arrow.

-
- - diff --git a/demos/autocomplete/default.html b/demos/autocomplete/default.html deleted file mode 100644 index 3adad7bba..000000000 --- a/demos/autocomplete/default.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - jQuery UI Autocomplete - Default functionality - - - - - - - - - - - - -
- - -
- -
-

The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are tags for programming languages, give "ja" (for Java or JavaScript) a try.

-

The datasource is a simple JavaScript array, provided to the widget using the source-option.

-
- - diff --git a/demos/autocomplete/folding.html b/demos/autocomplete/folding.html deleted file mode 100644 index d0f1b4df3..000000000 --- a/demos/autocomplete/folding.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - jQuery UI Autocomplete - Accent folding - - - - - - - - - - - - -
-
- - -
-
- -
-

The autocomplete field uses a custom source option which will match results that have accented characters even when the text field doesn't contain accented characters. However if the you type in accented characters in the text field it is smart enough not to show results that aren't accented.

-

Try typing "Jo" to see "John" and "Jörn", then type "Jö" to see only "Jörn".

-
- - diff --git a/demos/autocomplete/index.html b/demos/autocomplete/index.html deleted file mode 100644 index faa18d438..000000000 --- a/demos/autocomplete/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - jQuery UI Autocomplete Demos - - - - - - - diff --git a/demos/autocomplete/maxheight.html b/demos/autocomplete/maxheight.html deleted file mode 100644 index 19745b8e2..000000000 --- a/demos/autocomplete/maxheight.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - jQuery UI Autocomplete - Scrollable results - - - - - - - - - - - - - -
- - -
- -
-

When displaying a long list of options, you can simply set the max-height for the autocomplete menu to prevent the menu from growing too large. Try typing "a" or "s" above to get a long list of results that you can scroll through.

-
- - diff --git a/demos/autocomplete/multiple-remote.html b/demos/autocomplete/multiple-remote.html deleted file mode 100644 index 297560385..000000000 --- a/demos/autocomplete/multiple-remote.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - jQuery UI Autocomplete - Multiple, remote - - - - - - - - - - - - - -
- - -
- -
-

Usage: Enter at least two characters to get bird name suggestions. Select a value to continue adding more names.

-

This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.

-
- - diff --git a/demos/autocomplete/multiple.html b/demos/autocomplete/multiple.html deleted file mode 100644 index 45a88d8b7..000000000 --- a/demos/autocomplete/multiple.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - jQuery UI Autocomplete - Multiple values - - - - - - - - - - - - -
- - -
- -
-

Usage: Type something, eg. "j" to see suggestions for tagging with programming languages. Select a value, then continue typing to add more.

-

This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.

-
- - diff --git a/demos/autocomplete/remote-jsonp.html b/demos/autocomplete/remote-jsonp.html deleted file mode 100644 index 625faccf5..000000000 --- a/demos/autocomplete/remote-jsonp.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - jQuery UI Autocomplete - Remote JSONP datasource - - - - - - - - - - - - - -
- - - Powered by geonames.org -
- -
- Result: -
-
- -
-

The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are cities, displayed when at least two characters are entered into the field.

-

In this case, the datasource is the geonames.org webservice. While only the city name itself ends up in the input after selecting an element, more info is displayed in the suggestions to help find the right entry. That data is also available in callbacks, as illustrated by the Result area below the input.

-
- - diff --git a/demos/autocomplete/remote-with-cache.html b/demos/autocomplete/remote-with-cache.html deleted file mode 100644 index 07c9bf0ed..000000000 --- a/demos/autocomplete/remote-with-cache.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - jQuery UI Autocomplete - Remote with caching - - - - - - - - - - - - - -
- - -
- -
-

The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.

-

Similar to the remote datasource demo, though this adds some local caching to improve performance. The cache here saves just one query, and could be extended to cache multiple values, one for each term.

-
- - diff --git a/demos/autocomplete/remote.html b/demos/autocomplete/remote.html deleted file mode 100644 index 66755e3f1..000000000 --- a/demos/autocomplete/remote.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - jQuery UI Autocomplete - Remote datasource - - - - - - - - - - - - - -
- - -
- -
- Result: -
-
- -
-

The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.

-

The datasource is a server-side script which returns JSON data, specified via a simple URL for the source-option. In addition, the minLength-option is set to 2 to avoid queries that would return too many results and the select-event is used to display some feedback.

-
- - diff --git a/demos/autocomplete/search.php b/demos/autocomplete/search.php deleted file mode 100644 index 835772dee..000000000 --- a/demos/autocomplete/search.php +++ /dev/null @@ -1,590 +0,0 @@ -"Botaurus stellaris", -"Little Grebe"=>"Tachybaptus ruficollis", -"Black-necked Grebe"=>"Podiceps nigricollis", -"Little Bittern"=>"Ixobrychus minutus", -"Black-crowned Night Heron"=>"Nycticorax nycticorax", -"Purple Heron"=>"Ardea purpurea", -"White Stork"=>"Ciconia ciconia", -"Spoonbill"=>"Platalea leucorodia", -"Red-crested Pochard"=>"Netta rufina", -"Common Eider"=>"Somateria mollissima", -"Red Kite"=>"Milvus milvus", -"Hen Harrier"=>"Circus cyaneus", -"Montagu`s Harrier"=>"Circus pygargus", -"Black Grouse"=>"Tetrao tetrix", -"Grey Partridge"=>"Perdix perdix", -"Spotted Crake"=>"Porzana porzana", -"Corncrake"=>"Crex crex", -"Common Crane"=>"Grus grus", -"Avocet"=>"Recurvirostra avosetta", -"Stone Curlew"=>"Burhinus oedicnemus", -"Common Ringed Plover"=>"Charadrius hiaticula", -"Kentish Plover"=>"Charadrius alexandrinus", -"Ruff"=>"Philomachus pugnax", -"Common Snipe"=>"Gallinago gallinago", -"Black-tailed Godwit"=>"Limosa limosa", -"Common Redshank"=>"Tringa totanus", -"Sandwich Tern"=>"Sterna sandvicensis", -"Common Tern"=>"Sterna hirundo", -"Arctic Tern"=>"Sterna paradisaea", -"Little Tern"=>"Sternula albifrons", -"Black Tern"=>"Chlidonias niger", -"Barn Owl"=>"Tyto alba", -"Little Owl"=>"Athene noctua", -"Short-eared Owl"=>"Asio flammeus", -"European Nightjar"=>"Caprimulgus europaeus", -"Common Kingfisher"=>"Alcedo atthis", -"Eurasian Hoopoe"=>"Upupa epops", -"Eurasian Wryneck"=>"Jynx torquilla", -"European Green Woodpecker"=>"Picus viridis", -"Crested Lark"=>"Galerida cristata", -"White-headed Duck"=>"Oxyura leucocephala", -"Pale-bellied Brent Goose"=>"Branta hrota", -"Tawny Pipit"=>"Anthus campestris", -"Whinchat"=>"Saxicola rubetra", -"European Stonechat"=>"Saxicola rubicola", -"Northern Wheatear"=>"Oenanthe oenanthe", -"Savi`s Warbler"=>"Locustella luscinioides", -"Sedge Warbler"=>"Acrocephalus schoenobaenus", -"Great Reed Warbler"=>"Acrocephalus arundinaceus", -"Bearded Reedling"=>"Panurus biarmicus", -"Red-backed Shrike"=>"Lanius collurio", -"Great Grey Shrike"=>"Lanius excubitor", -"Woodchat Shrike"=>"Lanius senator", -"Common Raven"=>"Corvus corax", -"Yellowhammer"=>"Emberiza citrinella", -"Ortolan Bunting"=>"Emberiza hortulana", -"Corn Bunting"=>"Emberiza calandra", -"Great Cormorant"=>"Phalacrocorax carbo", -"Hawfinch"=>"Coccothraustes coccothraustes", -"Common Shelduck"=>"Tadorna tadorna", -"Bluethroat"=>"Luscinia svecica", -"Grey Heron"=>"Ardea cinerea", -"Barn Swallow"=>"Hirundo rustica", -"Hooded Crow"=>"Corvus cornix", -"Dunlin"=>"Calidris alpina", -"Eurasian Pied Flycatcher"=>"Ficedula hypoleuca", -"Eurasian Nuthatch"=>"Sitta europaea", -"Short-toed Tree Creeper"=>"Certhia brachydactyla", -"Wood Lark"=>"Lullula arborea", -"Tree Pipit"=>"Anthus trivialis", -"Eurasian Hobby"=>"Falco subbuteo", -"Marsh Warbler"=>"Acrocephalus palustris", -"Wood Sandpiper"=>"Tringa glareola", -"Tawny Owl"=>"Strix aluco", -"Lesser Whitethroat"=>"Sylvia curruca", -"Barnacle Goose"=>"Branta leucopsis", -"Common Goldeneye"=>"Bucephala clangula", -"Western Marsh Harrier"=>"Circus aeruginosus", -"Common Buzzard"=>"Buteo buteo", -"Sanderling"=>"Calidris alba", -"Little Gull"=>"Larus minutus", -"Eurasian Magpie"=>"Pica pica", -"Willow Warbler"=>"Phylloscopus trochilus", -"Wood Warbler"=>"Phylloscopus sibilatrix", -"Great Crested Grebe"=>"Podiceps cristatus", -"Eurasian Jay"=>"Garrulus glandarius", -"Common Redstart"=>"Phoenicurus phoenicurus", -"Blue-headed Wagtail"=>"Motacilla flava", -"Common Swift"=>"Apus apus", -"Marsh Tit"=>"Poecile palustris", -"Goldcrest"=>"Regulus regulus", -"European Golden Plover"=>"Pluvialis apricaria", -"Eurasian Bullfinch"=>"Pyrrhula pyrrhula", -"Common Whitethroat"=>"Sylvia communis", -"Meadow Pipit"=>"Anthus pratensis", -"Greylag Goose"=>"Anser anser", -"Spotted Flycatcher"=>"Muscicapa striata", -"European Greenfinch"=>"Carduelis chloris", -"Common Greenshank"=>"Tringa nebularia", -"Great Spotted Woodpecker"=>"Dendrocopos major", -"Greater Canada Goose"=>"Branta canadensis", -"Mistle Thrush"=>"Turdus viscivorus", -"Great Black-backed Gull"=>"Larus marinus", -"Goosander"=>"Mergus merganser", -"Great Egret"=>"Casmerodius albus", -"Northern Goshawk"=>"Accipiter gentilis", -"Dunnock"=>"Prunella modularis", -"Stock Dove"=>"Columba oenas", -"Common Wood Pigeon"=>"Columba palumbus", -"Eurasian Woodcock"=>"Scolopax rusticola", -"House Sparrow"=>"Passer domesticus", -"Common House Martin"=>"Delichon urbicum", -"Red Knot"=>"Calidris canutus", -"Western Jackdaw"=>"Corvus monedula", -"Brambling"=>"Fringilla montifringilla", -"Northern Lapwing"=>"Vanellus vanellus", -"European Reed Warbler"=>"Acrocephalus scirpaceus", -"Lesser Black-backed Gull"=>"Larus fuscus", -"Little Egret"=>"Egretta garzetta", -"Little Stint"=>"Calidris minuta", -"Common Linnet"=>"Carduelis cannabina", -"Mute Swan"=>"Cygnus olor", -"Common Cuckoo"=>"Cuculus canorus", -"Black-headed Gull"=>"Larus ridibundus", -"Greater White-fronted Goose"=>"Anser albifrons", -"Great Tit"=>"Parus major", -"Redwing"=>"Turdus iliacus", -"Gadwall"=>"Anas strepera", -"Fieldfare"=>"Turdus pilaris", -"Tufted Duck"=>"Aythya fuligula", -"Crested Tit"=>"Lophophanes cristatus", -"Willow Tit"=>"Poecile montanus", -"Eurasian Coot"=>"Fulica atra", -"Common Blackbird"=>"Turdus merula", -"Smew"=>"Mergus albellus", -"Common Sandpiper"=>"Actitis hypoleucos", -"Sand Martin"=>"Riparia riparia", -"Purple Sandpiper"=>"Calidris maritima", -"Northern Pintail"=>"Anas acuta", -"Blue Tit"=>"Cyanistes caeruleus", -"European Goldfinch"=>"Carduelis carduelis", -"Eurasian Whimbrel"=>"Numenius phaeopus", -"Common Reed Bunting"=>"Emberiza schoeniclus", -"Eurasian Tree Sparrow"=>"Passer montanus", -"Rook"=>"Corvus frugilegus", -"European Robin"=>"Erithacus rubecula", -"Bar-tailed Godwit"=>"Limosa lapponica", -"Dark-bellied Brent Goose"=>"Branta bernicla", -"Eurasian Oystercatcher"=>"Haematopus ostralegus", -"Eurasian Siskin"=>"Carduelis spinus", -"Northern Shoveler"=>"Anas clypeata", -"Eurasian Wigeon"=>"Anas penelope", -"Eurasian Sparrow Hawk"=>"Accipiter nisus", -"Icterine Warbler"=>"Hippolais icterina", -"Common Starling"=>"Sturnus vulgaris", -"Long-tailed Tit"=>"Aegithalos caudatus", -"Ruddy Turnstone"=>"Arenaria interpres", -"Mew Gull"=>"Larus canus", -"Common Pochard"=>"Aythya ferina", -"Common Chiffchaff"=>"Phylloscopus collybita", -"Greater Scaup"=>"Aythya marila", -"Common Kestrel"=>"Falco tinnunculus", -"Garden Warbler"=>"Sylvia borin", -"Eurasian Collared Dove"=>"Streptopelia decaocto", -"Eurasian Skylark"=>"Alauda arvensis", -"Common Chaffinch"=>"Fringilla coelebs", -"Common Moorhen"=>"Gallinula chloropus", -"Water Pipit"=>"Anthus spinoletta", -"Mallard"=>"Anas platyrhynchos", -"Winter Wren"=>"Troglodytes troglodytes", -"Common Teal"=>"Anas crecca", -"Green Sandpiper"=>"Tringa ochropus", -"White Wagtail"=>"Motacilla alba", -"Eurasian Curlew"=>"Numenius arquata", -"Song Thrush"=>"Turdus philomelos", -"European Herring Gull"=>"Larus argentatus", -"Grey Plover"=>"Pluvialis squatarola", -"Carrion Crow"=>"Corvus corone", -"Coal Tit"=>"Periparus ater", -"Spotted Redshank"=>"Tringa erythropus", -"Blackcap"=>"Sylvia atricapilla", -"Egyptian Vulture"=>"Neophron percnopterus", -"Razorbill"=>"Alca torda", -"Alpine Swift"=>"Apus melba", -"Long-legged Buzzard"=>"Buteo rufinus", -"Audouin`s Gull"=>"Larus audouinii", -"Balearic Shearwater"=>"Puffinus mauretanicus", -"Upland Sandpiper"=>"Bartramia longicauda", -"Greater Spotted Eagle"=>"Aquila clanga", -"Ring Ouzel"=>"Turdus torquatus", -"Yellow-browed Warbler"=>"Phylloscopus inornatus", -"Blue Rock Thrush"=>"Monticola solitarius", -"Buff-breasted Sandpiper"=>"Tryngites subruficollis", -"Jack Snipe"=>"Lymnocryptes minimus", -"White-rumped Sandpiper"=>"Calidris fuscicollis", -"Ruddy Shelduck"=>"Tadorna ferruginea", -"Cetti's Warbler"=>"Cettia cetti", -"Citrine Wagtail"=>"Motacilla citreola", -"Roseate Tern"=>"Sterna dougallii", -"Black-legged Kittiwake"=>"Rissa tridactyla", -"Pygmy Cormorant"=>"Phalacrocorax pygmeus", -"Booted Eagle"=>"Aquila pennata", -"Lesser White-fronted Goose"=>"Anser erythropus", -"Little Bunting"=>"Emberiza pusilla", -"Eleonora's Falcon"=>"Falco eleonorae", -"European Serin"=>"Serinus serinus", -"Twite"=>"Carduelis flavirostris", -"Yellow-legged Gull"=>"Larus michahellis", -"Gyr Falcon"=>"Falco rusticolus", -"Greenish Warbler"=>"Phylloscopus trochiloides", -"Red-necked Phalarope"=>"Phalaropus lobatus", -"Mealy Redpoll"=>"Carduelis flammea", -"Glaucous Gull"=>"Larus hyperboreus", -"Great Skua"=>"Stercorarius skua", -"Great Bustard"=>"Otis tarda", -"Velvet Scoter"=>"Melanitta fusca", -"Pine Grosbeak"=>"Pinicola enucleator", -"House Crow"=>"Corvus splendens", -"Hume`s Leaf Warbler"=>"Phylloscopus humei", -"Great Northern Loon"=>"Gavia immer", -"Long-tailed Duck"=>"Clangula hyemalis", -"Lapland Longspur"=>"Calcarius lapponicus", -"Northern Gannet"=>"Morus bassanus", -"Eastern Imperial Eagle"=>"Aquila heliaca", -"Little Auk"=>"Alle alle", -"Lesser Spotted Woodpecker"=>"Dendrocopos minor", -"Iceland Gull"=>"Larus glaucoides", -"Parasitic Jaeger"=>"Stercorarius parasiticus", -"Bewick`s Swan"=>"Cygnus bewickii", -"Little Bustard"=>"Tetrax tetrax", -"Little Crake"=>"Porzana parva", -"Baillon`s Crake"=>"Porzana pusilla", -"Long-tailed Jaeger"=>"Stercorarius longicaudus", -"King Eider"=>"Somateria spectabilis", -"Greater Short-toed Lark"=>"Calandrella brachydactyla", -"Houbara Bustard"=>"Chlamydotis undulata", -"Curlew Sandpiper"=>"Calidris ferruginea", -"Common Crossbill"=>"Loxia curvirostra", -"European Shag"=>"Phalacrocorax aristotelis", -"Horned Grebe"=>"Podiceps auritus", -"Common Quail"=>"Coturnix coturnix", -"Bearded Vulture"=>"Gypaetus barbatus", -"Lanner Falcon"=>"Falco biarmicus", -"Middle Spotted Woodpecker"=>"Dendrocopos medius", -"Pomarine Jaeger"=>"Stercorarius pomarinus", -"Red-breasted Merganser"=>"Mergus serrator", -"Eurasian Black Vulture"=>"Aegypius monachus", -"Eurasian Dotterel"=>"Charadrius morinellus", -"Common Nightingale"=>"Luscinia megarhynchos", -"Northern willow warbler"=>"Phylloscopus trochilus acredula", -"Manx Shearwater"=>"Puffinus puffinus", -"Northern Fulmar"=>"Fulmarus glacialis", -"Eurasian Eagle Owl"=>"Bubo bubo", -"Orphean Warbler"=>"Sylvia hortensis", -"Melodious Warbler"=>"Hippolais polyglotta", -"Pallas's Leaf Warbler"=>"Phylloscopus proregulus", -"Atlantic Puffin"=>"Fratercula arctica", -"Black-throated Loon"=>"Gavia arctica", -"Bohemian Waxwing"=>"Bombycilla garrulus", -"Marsh Sandpiper"=>"Tringa stagnatilis", -"Great Snipe"=>"Gallinago media", -"Squacco Heron"=>"Ardeola ralloides", -"Long-eared Owl"=>"Asio otus", -"Caspian Tern"=>"Hydroprogne caspia", -"Red-breasted Goose"=>"Branta ruficollis", -"Red-throated Loon"=>"Gavia stellata", -"Common Rosefinch"=>"Carpodacus erythrinus", -"Red-footed Falcon"=>"Falco vespertinus", -"Ross's Goose"=>"Anser rossii", -"Red Phalarope"=>"Phalaropus fulicarius", -"Pied Wagtail"=>"Motacilla yarrellii", -"Rose-coloured Starling"=>"Sturnus roseus", -"Rough-legged Buzzard"=>"Buteo lagopus", -"Saker Falcon"=>"Falco cherrug", -"European Roller"=>"Coracias garrulus", -"Short-toed Eagle"=>"Circaetus gallicus", -"Peregrine Falcon"=>"Falco peregrinus", -"Merlin"=>"Falco columbarius", -"Snow Goose"=>"Anser caerulescens", -"Snowy Owl"=>"Bubo scandiacus", -"Snow Bunting"=>"Plectrophenax nivalis", -"Common Grasshopper Warbler"=>"Locustella naevia", -"Golden Eagle"=>"Aquila chrysaetos", -"Black-winged Stilt"=>"Himantopus himantopus", -"Steppe Eagle"=>"Aquila nipalensis", -"Pallid Harrier"=>"Circus macrourus", -"European Storm-petrel"=>"Hydrobates pelagicus", -"Horned Lark"=>"Eremophila alpestris", -"Eurasian Treecreeper"=>"Certhia familiaris", -"Taiga Bean Goose"=>"Anser fabalis", -"Temminck`s Stint"=>"Calidris temminckii", -"Terek Sandpiper"=>"Xenus cinereus", -"Tundra Bean Goose"=>"Anser serrirostris", -"European Turtle Dove"=>"Streptopelia turtur", -"Leach`s Storm-petrel"=>"Oceanodroma leucorhoa", -"Eurasian Griffon Vulture"=>"Gyps fulvus", -"Paddyfield Warbler"=>"Acrocephalus agricola", -"Osprey"=>"Pandion haliaetus", -"Firecrest"=>"Regulus ignicapilla", -"Water Rail"=>"Rallus aquaticus", -"European Honey Buzzard"=>"Pernis apivorus", -"Eurasian Golden Oriole"=>"Oriolus oriolus", -"Whooper Swan"=>"Cygnus cygnus", -"Two-barred Crossbill"=>"Loxia leucoptera", -"White-tailed Eagle"=>"Haliaeetus albicilla", -"Atlantic Murre"=>"Uria aalge", -"Garganey"=>"Anas querquedula", -"Black Redstart"=>"Phoenicurus ochruros", -"Common Scoter"=>"Melanitta nigra", -"Rock Pipit"=>"Anthus petrosus", -"Lesser Spotted Eagle"=>"Aquila pomarina", -"Cattle Egret"=>"Bubulcus ibis", -"White-winged Black Tern"=>"Chlidonias leucopterus", -"Black Stork"=>"Ciconia nigra", -"Mediterranean Gull"=>"Larus melanocephalus", -"Black Kite"=>"Milvus migrans", -"Yellow Wagtail"=>"Motacilla flavissima", -"Red-necked Grebe"=>"Podiceps grisegena", -"Gull-billed Tern"=>"Gelochelidon nilotica", -"Pectoral Sandpiper"=>"Calidris melanotos", -"Barred Warbler"=>"Sylvia nisoria", -"Red-throated Pipit"=>"Anthus cervinus", -"Grey Wagtail"=>"Motacilla cinerea", -"Richard`s Pipit"=>"Anthus richardi", -"Black Woodpecker"=>"Dryocopus martius", -"Little Ringed Plover"=>"Charadrius dubius", -"Whiskered Tern"=>"Chlidonias hybrida", -"Lesser Redpoll"=>"Carduelis cabaret", -"Pallas' Bunting"=>"Emberiza pallasi", -"Ferruginous Duck"=>"Aythya nyroca", -"Whistling Swan"=>"Cygnus columbianus", -"Black Brant"=>"Branta nigricans", -"Marbled Teal"=>"Marmaronetta angustirostris", -"Canvasback"=>"Aythya valisineria", -"Redhead"=>"Aythya americana", -"Lesser Scaup"=>"Aythya affinis", -"Steller`s Eider"=>"Polysticta stelleri", -"Spectacled Eider"=>"Somateria fischeri", -"Harlequin Duck"=>"Histronicus histrionicus", -"Black Scoter"=>"Melanitta americana", -"Surf Scoter"=>"Melanitta perspicillata", -"Barrow`s Goldeneye"=>"Bucephala islandica", -"Falcated Duck"=>"Anas falcata", -"American Wigeon"=>"Anas americana", -"Blue-winged Teal"=>"Anas discors", -"American Black Duck"=>"Anas rubripes", -"Baikal Teal"=>"Anas formosa", -"Green-Winged Teal"=>"Anas carolinensis", -"Hazel Grouse"=>"Bonasa bonasia", -"Rock Partridge"=>"Alectoris graeca", -"Red-legged Partridge"=>"Alectoris rufa", -"Yellow-billed Loon"=>"Gavia adamsii", -"Cory`s Shearwater"=>"Calonectris borealis", -"Madeiran Storm-Petrel"=>"Oceanodroma castro", -"Great White Pelican"=>"Pelecanus onocrotalus", -"Dalmatian Pelican"=>"Pelecanus crispus", -"American Bittern"=>"Botaurus lentiginosus", -"Glossy Ibis"=>"Plegadis falcinellus", -"Spanish Imperial Eagle"=>"Aquila adalberti", -"Lesser Kestrel"=>"Falco naumanni", -"Houbara Bustard"=>"Chlamydotis undulata", -"Crab-Plover"=>"Dromas ardeola", -"Cream-coloured Courser"=>"Cursorius cursor", -"Collared Pratincole"=>"Glareola pratincola", -"Black-winged Pratincole"=>"Glareola nordmanni", -"Killdeer"=>"Charadrius vociferus", -"Lesser Sand Plover"=>"Charadrius mongolus", -"Greater Sand Plover"=>"Charadrius leschenaultii", -"Caspian Plover"=>"Charadrius asiaticus", -"American Golden Plover"=>"Pluvialis dominica", -"Pacific Golden Plover"=>"Pluvialis fulva", -"Sharp-tailed Sandpiper"=>"Calidris acuminata", -"Broad-billed Sandpiper"=>"Limicola falcinellus", -"Spoon-Billed Sandpiper"=>"Eurynorhynchus pygmaeus", -"Short-Billed Dowitcher"=>"Limnodromus griseus", -"Long-billed Dowitcher"=>"Limnodromus scolopaceus", -"Hudsonian Godwit"=>"Limosa haemastica", -"Little Curlew"=>"Numenius minutus", -"Lesser Yellowlegs"=>"Tringa flavipes", -"Wilson`s Phalarope"=>"Phalaropus tricolor", -"Pallas`s Gull"=>"Larus ichthyaetus", -"Laughing Gull"=>"Larus atricilla", -"Franklin`s Gull"=>"Larus pipixcan", -"Bonaparte`s Gull"=>"Larus philadelphia", -"Ring-billed Gull"=>"Larus delawarensis", -"American Herring Gull"=>"Larus smithsonianus", -"Caspian Gull"=>"Larus cachinnans", -"Ivory Gull"=>"Pagophila eburnea", -"Royal Tern"=>"Sterna maxima", -"Brünnich`s Murre"=>"Uria lomvia", -"Crested Auklet"=>"Aethia cristatella", -"Parakeet Auklet"=>"Cyclorrhynchus psittacula", -"Tufted Puffin"=>"Lunda cirrhata", -"Laughing Dove"=>"Streptopelia senegalensis", -"Great Spotted Cuckoo"=>"Clamator glandarius", -"Great Grey Owl"=>"Strix nebulosa", -"Tengmalm`s Owl"=>"Aegolius funereus", -"Red-Necked Nightjar"=>"Caprimulgus ruficollis", -"Chimney Swift"=>"Chaetura pelagica", -"Green Bea-Eater"=>"Merops orientalis", -"Grey-headed Woodpecker"=>"Picus canus", -"Lesser Short-Toed Lark"=>"Calandrella rufescens", -"Eurasian Crag Martin"=>"Hirundo rupestris", -"Red-rumped Swallow"=>"Cecropis daurica", -"Blyth`s Pipit"=>"Anthus godlewskii", -"Pechora Pipit"=>"Anthus gustavi", -"Grey-headed Wagtail"=>"Motacilla thunbergi", -"Yellow-Headed Wagtail"=>"Motacilla lutea", -"White-throated Dipper"=>"Cinclus cinclus", -"Rufous-Tailed Scrub Robin"=>"Cercotrichas galactotes", -"Thrush Nightingale"=>"Luscinia luscinia", -"White-throated Robin"=>"Irania gutturalis", -"Caspian Stonechat"=>"Saxicola maura variegata", -"Western Black-eared Wheatear"=>"Oenanthe hispanica", -"Rufous-tailed Rock Thrush"=>"Monticola saxatilis", -"Red-throated Thrush/Black-throated"=>"Turdus ruficollis", -"American Robin"=>"Turdus migratorius", -"Zitting Cisticola"=>"Cisticola juncidis", -"Lanceolated Warbler"=>"Locustella lanceolata", -"River Warbler"=>"Locustella fluviatilis", -"Blyth`s Reed Warbler"=>"Acrocephalus dumetorum", -"Caspian Reed Warbler"=>"Acrocephalus fuscus", -"Aquatic Warbler"=>"Acrocephalus paludicola", -"Booted Warbler"=>"Acrocephalus caligatus", -"Marmora's Warbler"=>"Sylvia sarda", -"Dartford Warbler"=>"Sylvia undata", -"Subalpine Warbler"=>"Sylvia cantillans", -"Ménétries's Warbler"=>"Sylvia mystacea", -"Rüppel's Warbler"=>"Sylvia rueppelli", -"Asian Desert Warbler"=>"Sylvia nana", -"Western Orphean Warbler"=>"Sylvia hortensis hortensis", -"Arctic Warbler"=>"Phylloscopus borealis", -"Radde`s Warbler"=>"Phylloscopus schwarzi", -"Western Bonelli`s Warbler"=>"Phylloscopus bonelli", -"Red-breasted Flycatcher"=>"Ficedula parva", -"Eurasian Penduline Tit"=>"Remiz pendulinus", -"Daurian Shrike"=>"Lanius isabellinus", -"Long-Tailed Shrike"=>"Lanius schach", -"Lesser Grey Shrike"=>"Lanius minor", -"Southern Grey Shrike"=>"Lanius meridionalis", -"Masked Shrike"=>"Lanius nubicus", -"Spotted Nutcracker"=>"Nucifraga caryocatactes", -"Daurian Jackdaw"=>"Corvus dauuricus", -"Purple-Backed Starling"=>"Sturnus sturninus", -"Red-Fronted Serin"=>"Serinus pusillus", -"Arctic Redpoll"=>"Carduelis hornemanni", -"Scottish Crossbill"=>"Loxia scotica", -"Parrot Crossbill"=>"Loxia pytyopsittacus", -"Black-faced Bunting"=>"Emberiza spodocephala", -"Pink-footed Goose"=>"Anser brachyrhynchus", -"Black-winged Kite"=>"Elanus caeruleus", -"European Bee-eater"=>"Merops apiaster", -"Sabine`s Gull"=>"Larus sabini", -"Sooty Shearwater"=>"Puffinus griseus", -"Lesser Canada Goose"=>"Branta hutchinsii", -"Ring-necked Duck"=>"Aythya collaris", -"Greater Flamingo"=>"Phoenicopterus roseus", -"Iberian Chiffchaff"=>"Phylloscopus ibericus", -"Ashy-headed Wagtail"=>"Motacilla cinereocapilla", -"Stilt Sandpiper"=>"Calidris himantopus", -"Siberian Stonechat"=>"Saxicola maurus", -"Greater Yellowlegs"=>"Tringa melanoleuca", -"Forster`s Tern"=>"Sterna forsteri", -"Dusky Warbler"=>"Phylloscopus fuscatus", -"Cirl Bunting"=>"Emberiza cirlus", -"Olive-backed Pipit"=>"Anthus hodgsoni", -"Sociable Lapwing"=>"Vanellus gregarius", -"Spotted Sandpiper"=>"Actitis macularius", -"Baird`s Sandpiper"=>"Calidris bairdii", -"Rustic Bunting"=>"Emberiza rustica", -"Yellow-browed Bunting"=>"Emberiza chrysophrys", -"Great Shearwater"=>"Puffinus gravis", -"Bonelli`s Eagle"=>"Aquila fasciata", -"Calandra Lark"=>"Melanocorypha calandra", -"Sardinian Warbler"=>"Sylvia melanocephala", -"Ross's Gull"=>"Larus roseus", -"Yellow-Breasted Bunting"=>"Emberiza aureola", -"Pine Bunting"=>"Emberiza leucocephalos", -"Black Guillemot"=>"Cepphus grylle", -"Pied-billed Grebe"=>"Podilymbus podiceps", -"Soft-plumaged Petrel"=>"Pterodroma mollis", -"Bulwer's Petrel"=>"Bulweria bulwerii", -"White-Faced Storm-Petrel"=>"Pelagodroma marina", -"Pallas’s Fish Eagle"=>"Haliaeetus leucoryphus", -"Sandhill Crane"=>"Grus canadensis", -"Macqueen’s Bustard"=>"Chlamydotis macqueenii", -"White-tailed Lapwing"=>"Vanellus leucurus", -"Great Knot"=>"Calidris tenuirostris", -"Semipalmated Sandpiper"=>"Calidris pusilla", -"Red-necked Stint"=>"Calidris ruficollis", -"Slender-billed Curlew"=>"Numenius tenuirostris", -"Bridled Tern"=>"Onychoprion anaethetus", -"Pallas’s Sandgrouse"=>"Syrrhaptes paradoxus", -"European Scops Owl"=>"Otus scops", -"Northern Hawk Owl"=>"Surnia ulula", -"White-Throated Needletail"=>"Hirundapus caudacutus", -"Belted Kingfisher"=>"Ceryle alcyon", -"Blue-cheeked Bee-eater"=>"Merops persicus", -"Black-headed Wagtail"=>"Motacilla feldegg", -"Northern Mockingbird"=>"Mimus polyglottos", -"Alpine Accentor"=>"Prunella collaris", -"Red-flanked Bluetail"=>"Tarsiger cyanurus", -"Isabelline Wheatear"=>"Oenanthe isabellina", -"Pied Wheatear"=>"Oenanthe pleschanka", -"Eastern Black-eared Wheatear"=>"Oenanthe melanoleuca", -"Desert Wheatear"=>"Oenanthe deserti", -"White`s Thrush"=>"Zoothera aurea", -"Siberian Thrush"=>"Zoothera sibirica", -"Eyebrowed Thrush"=>"Turdus obscurus", -"Dusky Thrush"=>"Turdus eunomus", -"Black-throated Thrush"=>"Turdus atrogularis", -"Pallas`s Grasshopper Warbler"=>"Locustella certhiola", -"Spectacled Warbler"=>"Sylvia conspicillata", -"Two-barred Warbler"=>"Phylloscopus plumbeitarsus", -"Eastern Bonelli’s Warbler"=>"Phylloscopus orientalis", -"Collared Flycatcher"=>"Ficedula albicollis", -"Wallcreeper"=>"Tichodroma muraria", -"Turkestan Shrike"=>"Lanius phoenicuroides", -"Steppe Grey Shrike"=>"Lanius pallidirostris", -"Spanish Sparrow"=>"Passer hispaniolensis", -"Red-eyed Vireo"=>"Vireo olivaceus", -"Myrtle Warbler"=>"Dendroica coronata", -"White-crowned Sparrow"=>"Zonotrichia leucophrys", -"White-throated Sparrow"=>"Zonotrichia albicollis", -"Cretzschmar`s Bunting"=>"Emberiza caesia", -"Chestnut Bunting"=>"Emberiza rutila", -"Red-headed Bunting"=>"Emberiza bruniceps", -"Black-headed Bunting"=>"Emberiza melanocephala", -"Indigo Bunting"=>"Passerina cyanea", -"Balearic Woodchat Shrike"=>"Lanius senator badius", -"Demoiselle Crane"=>"Grus virgo", -"Chough"=>"Pyrrhocorax pyrrhocorax", -"Red-Billed Chough"=>"Pyrrhocorax graculus", -"Elegant Tern"=>"Sterna elegans", -"Chukar"=>"Alectoris chukar", -"Yellow-Billed Cuckoo"=>"Coccyzus americanus", -"American Sandwich Tern"=>"Sterna sandvicensis acuflavida", -"Olive-Tree Warbler"=>"Hippolais olivetorum", -"Eastern Olivaceous Warbler"=>"Acrocephalus pallidus", -"Indian Cormorant"=>"Phalacrocorax fuscicollis", -"Spur-Winged Lapwing"=>"Vanellus spinosus", -"Yelkouan Shearwater"=>"Puffinus yelkouan", -"Trumpeter Finch"=>"Bucanetes githagineus", -"Red Grouse"=>"Lagopus scoticus", -"Rock Ptarmigan"=>"Lagopus mutus", -"Long-Tailed Cormorant"=>"Phalacrocorax africanus", -"Double-crested Cormorant"=>"Phalacrocorax auritus", -"Magnificent Frigatebird"=>"Fregata magnificens", -"Naumann's Thrush"=>"Turdus naumanni", -"Oriental Pratincole"=>"Glareola maldivarum", -"Bufflehead"=>"Bucephala albeola", -"Snowfinch"=>"Montifrigilla nivalis", -"Ural owl"=>"Strix uralensis", -"Spanish Wagtail"=>"Motacilla iberiae", -"Song Sparrow"=>"Melospiza melodia", -"Rock Bunting"=>"Emberiza cia", -"Siberian Rubythroat"=>"Luscinia calliope", -"Pallid Swift"=>"Apus pallidus", -"Eurasian Pygmy Owl"=>"Glaucidium passerinum", -"Madeira Little Shearwater"=>"Puffinus baroli", -"House Finch"=>"Carpodacus mexicanus", -"Green Heron"=>"Butorides virescens", -"Solitary Sandpiper"=>"Tringa solitaria", -"Heuglin's Gull"=>"Larus heuglini" -); - - -$result = array(); -foreach ($items as $key=>$value) { - if (strpos(strtolower($key), $q) !== false) { - array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key))); - } - if (count($result) > 11) - break; -} - -// json_encode is available in PHP 5.2 and above, or you can install a PECL module in earlier versions -echo json_encode($result); - -?> \ No newline at end of file diff --git a/demos/autocomplete/xml.html b/demos/autocomplete/xml.html deleted file mode 100644 index 2f273a544..000000000 --- a/demos/autocomplete/xml.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - jQuery UI Autocomplete - XML data parsed once - - - - - - - - - - - - - -
- - -
- -
- Result: -
-
- -
-

This demo shows how to retrieve some XML data, parse it using jQuery's methods, then provide it to the autocomplete as the datasource.

-

This should also serve as a reference on how to parse a remote XML datasource - the parsing would just happen for each request within the source-callback.

-
- - diff --git a/demos/button/checkbox.html b/demos/button/checkbox.html deleted file mode 100644 index 9d0aa4cf0..000000000 --- a/demos/button/checkbox.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - jQuery UI Button - Checkboxes - - - - - - - - - - - - - -
- - - -
- -
-

A checkbox is styled as a toggle button with the button widget. The label element associated with the checkbox is used for the button text.

-

This demo also demonstrates three checkboxes styled as a button set by calling .buttonset() on a common container.

-
- - diff --git a/demos/button/default.html b/demos/button/default.html deleted file mode 100644 index bc9dc1010..000000000 --- a/demos/button/default.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - jQuery UI Button - Default functionality - - - - - - - - - - - - - - -An anchor - -
-

Examples of the markup that can be used for buttons: A button element, an input of type submit and an anchor.

-
- - diff --git a/demos/button/icons.html b/demos/button/icons.html deleted file mode 100644 index db3499246..000000000 --- a/demos/button/icons.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - jQuery UI Button - Icons - - - - - - - - - - - - - - - -
-

Some buttons with various combinations of text and icons, here specified via metadata.

-
- - diff --git a/demos/button/index.html b/demos/button/index.html deleted file mode 100644 index 79560595b..000000000 --- a/demos/button/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - jQuery UI Button Demos - - - - - - - diff --git a/demos/button/radio.html b/demos/button/radio.html deleted file mode 100644 index 11970838b..000000000 --- a/demos/button/radio.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - jQuery UI Button - Radios - - - - - - - - - - -
-
- - - -
-
- -
-

A set of three radio buttons transformed into a button set.

-
- - diff --git a/demos/button/splitbutton.html b/demos/button/splitbutton.html deleted file mode 100644 index 7826975c7..000000000 --- a/demos/button/splitbutton.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - jQuery UI Button - Split button - - - - - - - - - - - - - -
-
- - -
- -
- -
-

An example of a split button built with two buttons: A plain button with just text, one with only a primary icon -and no text. Both are grouped together in a set.

-
- - diff --git a/demos/button/toolbar.html b/demos/button/toolbar.html deleted file mode 100644 index eb1d2c3ea..000000000 --- a/demos/button/toolbar.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - jQuery UI Button - Toolbar - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- A mediaplayer toolbar. Take a look at the underlying markup: A few button elements, - an input of type checkbox for the Shuffle button, and three inputs of type radio for the Repeat options. -

-
- - diff --git a/demos/datepicker/alt-field.html b/demos/datepicker/alt-field.html deleted file mode 100644 index e783b93ea..000000000 --- a/demos/datepicker/alt-field.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - jQuery UI Datepicker - Populate alternate field - - - - - - - - - - -

Date:  

- -
-

Populate an alternate field with its own date format whenever a date is selected using the altField and altFormat options. This feature could be used to present a human-friendly date for user selection, while passing a more computer-friendly date through for further processing.

-
- - diff --git a/demos/datepicker/animation.html b/demos/datepicker/animation.html deleted file mode 100644 index 4a3ddd0c0..000000000 --- a/demos/datepicker/animation.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - jQuery UI Datepicker - Animations - - - - - - - - - - - - - - - - - -

Date:

- -

Animations:
- -

- -
-

Use different animations when opening or closing the datepicker. Choose an animation from the dropdown, then click on the input to see its effect. You can use one of the three standard animations or any of the UI Effects.

-
- - diff --git a/demos/datepicker/buttonbar.html b/demos/datepicker/buttonbar.html deleted file mode 100644 index b22ecb3f1..000000000 --- a/demos/datepicker/buttonbar.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - jQuery UI Datepicker - Display button bar - - - - - - - - - - -

Date:

- -
-

Display a button for selecting Today's date and a Done button for closing the calendar with the boolean showButtonPanel option. Each button is enabled by default when the bar is displayed, but can be turned off with additional options. Button text is customizable.

-
- - diff --git a/demos/datepicker/date-formats.html b/demos/datepicker/date-formats.html deleted file mode 100644 index a6d8daf71..000000000 --- a/demos/datepicker/date-formats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - jQuery UI Datepicker - Format date - - - - - - - - - - -

Date:

- -

Format options:
- -

- -
-

Display date feedback in a variety of ways. Choose a date format from the dropdown, then click on the input and select a date to see it in that format.

-
- - diff --git a/demos/datepicker/date-range.html b/demos/datepicker/date-range.html deleted file mode 100644 index b4e59e272..000000000 --- a/demos/datepicker/date-range.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - jQuery UI Datepicker - Select a Date Range - - - - - - - - - - - - - - - -
-

Select the date range to search for.

-
- - diff --git a/demos/datepicker/default.html b/demos/datepicker/default.html deleted file mode 100644 index 60753c8b3..000000000 --- a/demos/datepicker/default.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - jQuery UI Datepicker - Default functionality - - - - - - - - - - -

Date:

- -
-

The datepicker is tied to a standard form input field. Focus on the input (click, or use the tab key) to open an interactive calendar in a small overlay. Choose a date, click elsewhere on the page (blur the input), or hit the Esc key to close. If a date is chosen, feedback is shown as the input's value.

-
- - diff --git a/demos/datepicker/dropdown-month-year.html b/demos/datepicker/dropdown-month-year.html deleted file mode 100644 index 6ab86fc6e..000000000 --- a/demos/datepicker/dropdown-month-year.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - jQuery UI Datepicker - Display month & year menus - - - - - - - - - - -

Date:

- -
-

Show month and year dropdowns in place of the static month/year header to facilitate navigation through large timeframes. Add the boolean changeMonth and changeYear options.

-
- - diff --git a/demos/datepicker/icon-trigger.html b/demos/datepicker/icon-trigger.html deleted file mode 100644 index f6692f13a..000000000 --- a/demos/datepicker/icon-trigger.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - jQuery UI Datepicker - Icon trigger - - - - - - - - - - -

Date:

- -
-

Click the icon next to the input field to show the datepicker. Set the datepicker to open on focus (default behavior), on icon click, or both.

-
- - diff --git a/demos/datepicker/index.html b/demos/datepicker/index.html deleted file mode 100644 index eb903a220..000000000 --- a/demos/datepicker/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - jQuery UI Datepicker Demos - - - - - - - diff --git a/demos/datepicker/inline.html b/demos/datepicker/inline.html deleted file mode 100644 index 8c5ccb06d..000000000 --- a/demos/datepicker/inline.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - jQuery UI Datepicker - Display inline - - - - - - - - - - -Date:
- -
-

Display the datepicker embedded in the page instead of in an overlay. Simply call .datepicker() on a div instead of an input.

-
- - diff --git a/demos/datepicker/localization.html b/demos/datepicker/localization.html deleted file mode 100644 index 082313dbe..000000000 --- a/demos/datepicker/localization.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - jQuery UI Datepicker - Localize calendar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Date:   -

- -
-

Localize the datepicker calendar language and format (English / Western formatting is the default). The datepicker includes built-in support for languages that read right-to-left, such as Arabic and Hebrew.

-
- - diff --git a/demos/datepicker/min-max.html b/demos/datepicker/min-max.html deleted file mode 100644 index 847be9bb7..000000000 --- a/demos/datepicker/min-max.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - jQuery UI Datepicker - Restrict date range - - - - - - - - - - -

Date:

- -
-

Restrict the range of selectable dates with the minDate and maxDate options. Set the beginning and end dates as actual dates (new Date(2009, 1 - 1, 26)), as a numeric offset from today (-20), or as a string of periods and units ('+1M +10D'). For the last, use 'D' for days, 'W' for weeks, 'M' for months, or 'Y' for years.

-
- - diff --git a/demos/datepicker/multiple-calendars.html b/demos/datepicker/multiple-calendars.html deleted file mode 100644 index eedc9d001..000000000 --- a/demos/datepicker/multiple-calendars.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - jQuery UI Datepicker - Display multiple months - - - - - - - - - - -

Date:

- -
-

Set the numberOfMonths option to an integer of 2 or more to show multiple months in a single datepicker.

-
- - diff --git a/demos/datepicker/other-months.html b/demos/datepicker/other-months.html deleted file mode 100644 index e63d50b3b..000000000 --- a/demos/datepicker/other-months.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - jQuery UI Datepicker - Dates in other months - - - - - - - - - - -

Date:

- -
-

The datepicker can show dates that come from other than the main month - being displayed. These other dates can also be made selectable.

-
- - diff --git a/demos/datepicker/show-week.html b/demos/datepicker/show-week.html deleted file mode 100644 index baa5fe94d..000000000 --- a/demos/datepicker/show-week.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - jQuery UI Datepicker - Show week of the year - - - - - - - - - - -

Date:

- -
-

The datepicker can show the week of the year. The default calculation follows - the ISO 8601 definition: the week starts on Monday, the first week of the year - contains the first Thursday of the year. This means that some days from one - year may be placed into weeks 'belonging' to another year.

-
- - diff --git a/demos/demos.css b/demos/demos.css deleted file mode 100644 index da9ad833a..000000000 --- a/demos/demos.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - font-size: 62.5%; - font-family: "Trebuchet MS", "Arial", "Helvetica", "Verdana", "sans-serif"; -} - -table { - font-size: 1em; -} - -.demo-description { - clear: both; - padding: 12px; - font-size: 1.3em; - line-height: 1.4em; -} - -.ui-draggable, .ui-droppable { - background-position: top; -} diff --git a/demos/dialog/animated.html b/demos/dialog/animated.html deleted file mode 100644 index e79133ad7..000000000 --- a/demos/dialog/animated.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - jQuery UI Dialog - Animation - - - - - - - - - - - - - - - - - - -
-

This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.

-
- - - -
-

Dialogs may be animated by specifying an effect for the show and/or hide properties. You must include the individual effects file for any effects you would like to use.

-
- - diff --git a/demos/dialog/default.html b/demos/dialog/default.html deleted file mode 100644 index 050221425..000000000 --- a/demos/dialog/default.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - jQuery UI Dialog - Default functionality - - - - - - - - - - - - - - - -
-

This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.

-
- -
-

The basic dialog window is an overlay positioned within the viewport and is protected from page content (like select elements) shining through with an iframe. It has a title bar and a content area, and can be moved, resized and closed with the 'x' icon by default.

-
- - diff --git a/demos/dialog/index.html b/demos/dialog/index.html deleted file mode 100644 index 6aaa3ecb5..000000000 --- a/demos/dialog/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - jQuery UI Dialog Demos - - - - - - - diff --git a/demos/dialog/modal-confirmation.html b/demos/dialog/modal-confirmation.html deleted file mode 100644 index 359b8e7b7..000000000 --- a/demos/dialog/modal-confirmation.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - jQuery UI Dialog - Modal confirmation - - - - - - - - - - - - - - - -
-

These items will be permanently deleted and cannot be recovered. Are you sure?

-
- -

Sed vel diam id libero rutrum convallis. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.

- -
-

Confirm an action that may be destructive or important. Set the modal option to true, and specify primary and secondary user actions with the buttons option.

-
- - diff --git a/demos/dialog/modal-form.html b/demos/dialog/modal-form.html deleted file mode 100644 index 10251714a..000000000 --- a/demos/dialog/modal-form.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - jQuery UI Dialog - Modal form - - - - - - - - - - - - - - - - - - -
-

All form fields are required.

- -
-
- - - - - - -
-
-
- - -
-

Existing Users:

- - - - - - - - - - - - - - - -
NameEmailPassword
John Doejohn.doe@example.comjohndoe1
-
- - -
-

Use a modal dialog to require that the user enter data during a multi-step process. Embed form markup in the content area, set the modal option to true, and specify primary and secondary user actions with the buttons option.

-
- - diff --git a/demos/dialog/modal-message.html b/demos/dialog/modal-message.html deleted file mode 100644 index 496762d72..000000000 --- a/demos/dialog/modal-message.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - jQuery UI Dialog - Modal message - - - - - - - - - - - - - - - - -
-

- - Your files have downloaded successfully into the My Downloads folder. -

-

- Currently using 36% of your storage space. -

-
- -

Sed vel diam id libero rutrum convallis. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.

- -
-

Use a modal dialog to explicitly acknowledge information or an action before continuing their work. Set the modal option to true, and specify a primary action (Ok) with the buttons option.

-
- - diff --git a/demos/dialog/modal.html b/demos/dialog/modal.html deleted file mode 100644 index e62238d64..000000000 --- a/demos/dialog/modal.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - jQuery UI Dialog - Basic modal - - - - - - - - - - - - - - - -
-

Adding the modal overlay screen makes the dialog look more prominent because it dims out the page content.

-
- -

Sed vel diam id libero rutrum convallis. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.

- -
-

A modal dialog prevents the user from interacting with the rest of the page until it is closed.

-
- - diff --git a/demos/draggable/constrain-movement.html b/demos/draggable/constrain-movement.html deleted file mode 100644 index ddc833688..000000000 --- a/demos/draggable/constrain-movement.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - jQuery UI Draggable - Constrain movement - - - - - - - - - - - - -

Constrain movement along an axis:

- -
-

I can be dragged only vertically

-
- -
-

I can be dragged only horizontally

-
- -

Or to within another DOM element:

-
-
-

I'm contained within the box

-
- -
-

I'm contained within my parent

-
-
- -
-

Constrain the movement of each draggable by defining the boundaries of the draggable area. Set the axis option to limit the draggable's path to the x- or y-axis, or use the containment option to specify a parent DOM element or a jQuery selector, like 'document.'

-
- - diff --git a/demos/draggable/cursor-style.html b/demos/draggable/cursor-style.html deleted file mode 100644 index bf35721f8..000000000 --- a/demos/draggable/cursor-style.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - jQuery UI Draggable - Cursor style - - - - - - - - - - - - -
-

I will always stick to the center (relative to the mouse)

-
- -
-

My cursor is at left -5 and top -5

-
- -
-

My cursor position is only controlled for the 'bottom' value

-
- -
-

Position the cursor while dragging the object. By default the cursor appears in the center of the dragged object; use the cursorAt option to specify another location relative to the draggable (specify a pixel value from the top, right, bottom, and/or left). Customize the cursor's appearance by supplying the cursor option with a valid CSS cursor value: default, move, pointer, crosshair, etc.

-
- - diff --git a/demos/draggable/default.html b/demos/draggable/default.html deleted file mode 100644 index 32ed8bfde..000000000 --- a/demos/draggable/default.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - jQuery UI Draggable - Default functionality - - - - - - - - - - - - -
-

Drag me around

-
- -
-

Enable draggable functionality on any DOM element. Move the draggable object by clicking on it with the mouse and dragging it anywhere within the viewport.

-
- - diff --git a/demos/draggable/delay-start.html b/demos/draggable/delay-start.html deleted file mode 100644 index 0e0ee9f58..000000000 --- a/demos/draggable/delay-start.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - jQuery UI Draggable - Delay start - - - - - - - - - - - - -
-

Only if you drag me by 20 pixels, the dragging will start

-
- -
-

Regardless of the distance, you have to drag and wait for 1000ms before dragging starts

-
- -
-

Delay the start of dragging for a number of milliseconds with the delay option; prevent dragging until the cursor is held down and dragged a specifed number of pixels with the distance option.

-
- - diff --git a/demos/draggable/events.html b/demos/draggable/events.html deleted file mode 100644 index 4146cd6a8..000000000 --- a/demos/draggable/events.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - jQuery UI Draggable - Events - - - - - - - - - - - - -
- -

Drag me to trigger the chain of events.

- -
    -
  • "start" invoked 0x
  • -
  • "drag" invoked 0x
  • -
  • "stop" invoked 0x
  • -
-
- -
-

Layer functionality onto the draggable using the start, drag, and stop events. Start is fired at the start of the drag; drag during the drag; and stop when dragging stops.

-
- - diff --git a/demos/draggable/handle.html b/demos/draggable/handle.html deleted file mode 100644 index 0dc540a80..000000000 --- a/demos/draggable/handle.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - jQuery UI Draggable - Handles - - - - - - - - - - - - -
-

I can be dragged only by this handle

-
- -
-

You can drag me around…

-

…but you can't drag me by this handle.

-
- -
-

Allow dragging only when the cursor is over a specific part of the draggable. Use the handle option to specify the jQuery selector of an element (or group of elements) used to drag the object.

-

Or prevent dragging when the cursor is over a specific element (or group of elements) within the draggable. Use the cancel option to specify a jQuery selector over which to "cancel" draggable functionality.

-
- - diff --git a/demos/draggable/index.html b/demos/draggable/index.html deleted file mode 100644 index 93850684d..000000000 --- a/demos/draggable/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - jQuery UI Draggable Demos - - - - - - - diff --git a/demos/draggable/revert.html b/demos/draggable/revert.html deleted file mode 100644 index 742fc1d4f..000000000 --- a/demos/draggable/revert.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - jQuery UI Draggable - Revert position - - - - - - - - - - - - -
-

Revert the original

-
- -
-

Revert the helper

-
- -
-

Return the draggable (or it's helper) to its original location when dragging stops with the boolean revert option.

-
- - diff --git a/demos/draggable/scroll.html b/demos/draggable/scroll.html deleted file mode 100644 index 5b64d6cad..000000000 --- a/demos/draggable/scroll.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - jQuery UI Draggable - Auto-scroll - - - - - - - - - - - - -
-

Scroll set to true, default settings

-
- -
-

scrollSensitivity set to 100

-
- -
-

scrollSpeed set to 100

-
- -
- -
-

Automatically scroll the document when the draggable is moved beyond the viewport. Set the scroll option to true to enable auto-scrolling, and fine-tune when scrolling is triggered and its speed with the scrollSensitivity and scrollSpeed options.

-
- - diff --git a/demos/draggable/snap-to.html b/demos/draggable/snap-to.html deleted file mode 100644 index c7bc5f48e..000000000 --- a/demos/draggable/snap-to.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - jQuery UI Draggable - Snap to element or grid - - - - - - - - - - - - -
-

I'm a snap target

-
- -
- -
-

Default (snap: true), snaps to all other draggable elements

-
- -
-

I only snap to the big box

-
- -
-

I only snap to the outer edges of the big box

-
- -
-

I snap to a 20 x 20 grid

-
- -
-

I snap to a 80 x 80 grid

-
- -
-

Snap the draggable to the inner or outer boundaries of a DOM element. Use the snap, snapMode (inner, outer, both), and snapTolerance (distance in pixels the draggable must be from the element when snapping is invoked) options.

-

Or snap the draggable to a grid. Set the dimensions of grid cells (height and width in pixels) with the grid option.

-
- - diff --git a/demos/draggable/sortable.html b/demos/draggable/sortable.html deleted file mode 100644 index 77f7053cd..000000000 --- a/demos/draggable/sortable.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - jQuery UI Draggable + Sortable - - - - - - - - - - - - - -
    -
  • Drag me down
  • -
- -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
- -
-

Draggables are built to interact seamlessly with sortables.

-
- - diff --git a/demos/draggable/visual-feedback.html b/demos/draggable/visual-feedback.html deleted file mode 100644 index 80e230c65..000000000 --- a/demos/draggable/visual-feedback.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - jQuery UI Draggable - Visual feedback - - - - - - - - - - - - -

With helpers:

- -
-

Original

-
- -
-

Semi-transparent clone

-
- -
-

Custom helper (in combination with cursorAt)

-
- -

Stacked:

-
-
-

We are draggables..

-
- -
-

..whose z-indexes are controlled automatically..

-
- -
-

..with the stack option.

-
-
- -
-

Provide feedback to users as they drag an object in the form of a helper. The helper option accepts the values 'original' (the draggable object moves with the cursor), 'clone' (a duplicate of the draggable moves with the cursor), or a function that returns a DOM element (that element is shown near the cursor during drag). Control the helper's transparency with the opacity option.

-

To clarify which draggable is in play, bring the draggable in motion to front. Use the zIndex option to set a higher z-index for the helper, if in play, or use the stack option to ensure that the last item dragged will appear on top of others in the same group on drag stop.

-
- - diff --git a/demos/droppable/accepted-elements.html b/demos/droppable/accepted-elements.html deleted file mode 100644 index 6e2f76432..000000000 --- a/demos/droppable/accepted-elements.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - jQuery UI Droppable - Accept - - - - - - - - - - - - - -
-

I'm draggable but can't be dropped

-
- -
-

Drag me to my target

-
- -
-

accept: '#draggable'

-
- -
-

Specify using the accept option which element (or group of elements) is accepted by the target droppable.

-
- - diff --git a/demos/droppable/default.html b/demos/droppable/default.html deleted file mode 100644 index 88699dc74..000000000 --- a/demos/droppable/default.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - jQuery UI Droppable - Default functionality - - - - - - - - - - - - - -
-

Drag me to my target

-
- -
-

Drop here

-
- -
-

Enable any DOM element to be droppable, a target for draggable elements.

-
- - diff --git a/demos/droppable/index.html b/demos/droppable/index.html deleted file mode 100644 index deca6e4bc..000000000 --- a/demos/droppable/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - jQuery UI Droppable Demos - - - - - - - diff --git a/demos/droppable/photo-manager.html b/demos/droppable/photo-manager.html deleted file mode 100644 index 5c3e52007..000000000 --- a/demos/droppable/photo-manager.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - jQuery UI Droppable - Simple photo manager - - - - - - - - - - - - - - - - -
- - - -
-

Trash Trash

-
- -
- -
-

You can delete an image either by dragging it to the Trash or by clicking the trash icon.

-

You can "recycle" an image by dragging it back to the gallery or by clicking the recycle icon.

-

You can view larger image by clicking the zoom icon. jQuery UI dialog widget is used for the modal window.

-
- - diff --git a/demos/droppable/propagation.html b/demos/droppable/propagation.html deleted file mode 100644 index 2b7e16849..000000000 --- a/demos/droppable/propagation.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - jQuery UI Droppable - Prevent propagation - - - - - - - - - - - - - -
-

Drag me to my target

-
- -
-

Outer droppable

-
-

Inner droppable (not greedy)

-
-
- -
-

Outer droppable

-
-

Inner droppable (greedy)

-
-
- -
-

When working with nested droppables — for example, you may have an editable directory structure displayed as a tree, with folder and document nodes — the greedy option set to true prevents event propagation when a draggable is dropped on a child node (droppable).

-
- - diff --git a/demos/droppable/revert.html b/demos/droppable/revert.html deleted file mode 100644 index eed45c56c..000000000 --- a/demos/droppable/revert.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - jQuery UI Droppable - Revert draggable position - - - - - - - - - - - - - -
-

I revert when I'm dropped

-
- -
-

I revert when I'm not dropped

-
- -
-

Drop me here

-
- -
-

Return the draggable (or it's helper) to its original location when dragging stops with the boolean revert option set on the draggable.

-
- - diff --git a/demos/droppable/shopping-cart.html b/demos/droppable/shopping-cart.html deleted file mode 100644 index 9909f4f04..000000000 --- a/demos/droppable/shopping-cart.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - jQuery UI Droppable - Shopping Cart Demo - - - - - - - - - - - - - - - -
-

Products

-
-

T-Shirts

-
-
    -
  • Lolcat Shirt
  • -
  • Cheezeburger Shirt
  • -
  • Buckit Shirt
  • -
-
-

Bags

-
-
    -
  • Zebra Striped
  • -
  • Black Leather
  • -
  • Alligator Leather
  • -
-
-

Gadgets

-
-
    -
  • iPhone
  • -
  • iPod
  • -
  • iPad
  • -
-
-
-
- -
-

Shopping Cart

-
-
    -
  1. Add your items here
  2. -
-
-
- -
-

Demonstrate how to use an accordion to structure products into a catalog and make use of drag and drop for adding them to a shopping cart, where they are sortable.

-
- - diff --git a/demos/droppable/visual-feedback.html b/demos/droppable/visual-feedback.html deleted file mode 100644 index 3af911f9d..000000000 --- a/demos/droppable/visual-feedback.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - jQuery UI Droppable - Visual feedback - - - - - - - - - - - - - -

Feedback on hover:

- -
-

Drag me to my target

-
- -
-

Drop here

-
- -

Feedback on activating draggable:

- -
-

Drag me to my target

-
- -
-

Drop here

-
- -
-

Change the droppable's appearance on hover, or when the droppable is active (an acceptable draggable is dropped on it). Use the hoverClass or activeClass options to specify respective classes.

-
- - diff --git a/demos/effect/default.html b/demos/effect/default.html deleted file mode 100644 index af8bdd136..000000000 --- a/demos/effect/default.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - jQuery UI Effects - Effect demo - - - - - - - - - - - - - - - - - - - - - - -
-
-

Effect

-

- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi. -

-
-
- - - -Run Effect - -
-

Click the button above to show the effect.

-
- - diff --git a/demos/effect/easing.html b/demos/effect/easing.html deleted file mode 100644 index eb0835d21..000000000 --- a/demos/effect/easing.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - jQuery UI Effects - Easing demo - - - - - - - - - -
- -
-

All easings provided by jQuery UI are drawn above, using a HTML canvas element. Click a diagram to see the easing in action.

-
- - diff --git a/demos/effect/index.html b/demos/effect/index.html deleted file mode 100644 index 5da6bc612..000000000 --- a/demos/effect/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/hide/default.html b/demos/hide/default.html deleted file mode 100644 index aeac40852..000000000 --- a/demos/hide/default.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - jQuery UI Effects - Hide Demo - - - - - - - - - - - - - - - - - - - - -
-
-

Hide

-

- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi. -

-
-
- - - -Run Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/hide/index.html b/demos/hide/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/hide/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/index.html b/demos/index.html deleted file mode 100644 index 4739d76cd..000000000 --- a/demos/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - jQuery UI Demos - - - - - - - diff --git a/demos/menu/default.html b/demos/menu/default.html deleted file mode 100644 index c12ac11d3..000000000 --- a/demos/menu/default.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - jQuery UI Menu - Default functionality - - - - - - - - - - - - - - -
-

A menu with the default configuration, disabled items and nested menus. A list is transformed, adding theming, mouse and keyboard navigation support. Try to tab to the menu then use the cursor keys to navigate.

-
- - diff --git a/demos/menu/icons.html b/demos/menu/icons.html deleted file mode 100644 index d613115c0..000000000 --- a/demos/menu/icons.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - jQuery UI Menu - Icons - - - - - - - - - - - - - - -
-

A menu with the default configuration, showing how to use a menu with icons.

-
- - diff --git a/demos/menu/index.html b/demos/menu/index.html deleted file mode 100644 index 40e9e0b54..000000000 --- a/demos/menu/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - jQuery UI Menu Demos - - - - - - - diff --git a/demos/position/cycler.html b/demos/position/cycler.html deleted file mode 100644 index 2a6373c0e..000000000 --- a/demos/position/cycler.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - jQuery UI Position - Image Cycler - - - - - - - - - - - -
- earth - flight - rocket - - - -
- -
-

A photoviewer prototype using Position to place images at the center, left and right and cycle them. -
Use the links at the top to cycle, or click on the images on the left and right. -
Note how the images are repositioned when resizing the window. -

- - diff --git a/demos/position/default.html b/demos/position/default.html deleted file mode 100644 index f91bbaa5f..000000000 --- a/demos/position/default.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - jQuery UI Position - Default functionality - - - - - - - - - - - - - -
-

- This is the position parent element. -

-
- -
-

- to position -

-
- -
-

- to position 2 -

-
- -
- position... -
- my: - - -
-
- at: - - -
-
- offset: - -
-
- collision: - - -
-
- -
-

Use the form controls to configure the positioning, or drag the positioned element to modify its offset. -
Drag around the parent element to see collision detection in action.

-
- - diff --git a/demos/position/index.html b/demos/position/index.html deleted file mode 100644 index a7b754876..000000000 --- a/demos/position/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - jQuery UI Position Demo - - - - - - - diff --git a/demos/progressbar/animated.html b/demos/progressbar/animated.html deleted file mode 100644 index f03070571..000000000 --- a/demos/progressbar/animated.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - jQuery UI Progressbar - Animated - - - - - - - - - - - -
- -
-

-This progressbar has an animated fill by setting the -background-image -on the -.ui-progressbar-value -element, using css. -

-
- - diff --git a/demos/progressbar/default.html b/demos/progressbar/default.html deleted file mode 100644 index b478c9c49..000000000 --- a/demos/progressbar/default.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - jQuery UI Progressbar - Default functionality - - - - - - - - - - -
- -
-

Default determinate progress bar.

-
- - diff --git a/demos/progressbar/index.html b/demos/progressbar/index.html deleted file mode 100644 index 5080520c2..000000000 --- a/demos/progressbar/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - jQuery UI Progressbar Demos - - - - - - - diff --git a/demos/progressbar/resize.html b/demos/progressbar/resize.html deleted file mode 100644 index eac40c0c0..000000000 --- a/demos/progressbar/resize.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - jQuery UI Progressbar - Resizable - - - - - - - - - - - - -
-
-
- -
-

The progress bar's widths are specified in percentages for flexible sizing so it will resize to fit its container. Try resizing the height and width of this bar to see how it maintains the correct proportions. (This is not necessarily a real-world example, but it's a good illustration of how flexibly all the plugins are coded.)

-
- - diff --git a/demos/removeClass/default.html b/demos/removeClass/default.html deleted file mode 100644 index 8564b95d4..000000000 --- a/demos/removeClass/default.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - jQuery UI Effects - removeClass Demo - - - - - - - - - -
-
- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. -
-
- -Run Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/removeClass/index.html b/demos/removeClass/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/removeClass/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/resizable/animate.html b/demos/resizable/animate.html deleted file mode 100644 index 31db5dbf2..000000000 --- a/demos/resizable/animate.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - jQuery UI Resizable - Animate - - - - - - - - - - - - -
-

Animate

-
- -
-

Animate the resize action using the animate option (boolean). When this option is set to true, drag the outline to the desired location; the element animates to that size on drag stop.

-
- - diff --git a/demos/resizable/aspect-ratio.html b/demos/resizable/aspect-ratio.html deleted file mode 100644 index 0f4fc5d02..000000000 --- a/demos/resizable/aspect-ratio.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - jQuery UI Resizable - Preserve aspect ratio - - - - - - - - - - - - -
-

Preserve aspect ratio

-
- -
-

Maintain the existing aspect ratio or set a new one to constrain the proportions on resize. Set the aspectRatio option to true, and optionally pass in a new ratio (i.e., 4/3)

-
- - diff --git a/demos/resizable/constrain-area.html b/demos/resizable/constrain-area.html deleted file mode 100644 index fdfdbd2d7..000000000 --- a/demos/resizable/constrain-area.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - jQuery UI Resizable - Constrain resize area - - - - - - - - - - - - -
-

Containment

-
-

Resizable

-
-
- -
-

Define the boundaries of the resizable area. Use the containment option to specify a parent DOM element or a jQuery selector, like 'document.'

-
- - diff --git a/demos/resizable/default.html b/demos/resizable/default.html deleted file mode 100644 index 09e675e63..000000000 --- a/demos/resizable/default.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - jQuery UI Resizable - Default functionality - - - - - - - - - - - - -
-

Resizable

-
- -
-

Enable any DOM element to be resizable. With the cursor grab the right or bottom border and drag to the desired width or height.

-
- - diff --git a/demos/resizable/delay-start.html b/demos/resizable/delay-start.html deleted file mode 100644 index eecb7acae..000000000 --- a/demos/resizable/delay-start.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - jQuery UI Resizable - Delay start - - - - - - - - - - - - -

Time delay (ms):

-
-

Time

-
- -

Distance delay (px):

-
-

Distance

-
- -
-

Delay the start of resizng for a number of milliseconds with the delay option; prevent resizing until the cursor is held down and dragged a specifed number of pixels with the distance option.

-
- - diff --git a/demos/resizable/helper.html b/demos/resizable/helper.html deleted file mode 100644 index baafb4453..000000000 --- a/demos/resizable/helper.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - jQuery UI Resizable - Helper - - - - - - - - - - - - -
-

Helper

-
- -
-

Display only an outline of the element while resizing by setting the helper option to a CSS class.

-
- - diff --git a/demos/resizable/index.html b/demos/resizable/index.html deleted file mode 100644 index 7c626e253..000000000 --- a/demos/resizable/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - jQuery UI Resizable Demos - - - - - - - diff --git a/demos/resizable/max-min.html b/demos/resizable/max-min.html deleted file mode 100644 index 3025b2823..000000000 --- a/demos/resizable/max-min.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - jQuery UI Resizable - Maximum / minimum size - - - - - - - - - - - - -
-

Resize larger / smaller

-
- -
-

Limit the resizable element to a maximum or minimum height or width using the maxHeight, maxWidth, minHeight, and minWidth options.

-
- - diff --git a/demos/resizable/snap-to-grid.html b/demos/resizable/snap-to-grid.html deleted file mode 100644 index 84e374daa..000000000 --- a/demos/resizable/snap-to-grid.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - jQuery UI Resizable - Snap to grid - - - - - - - - - - - - -
-

Grid

-
- -
-

Snap the resizable element to a grid. Set the dimensions of grid cells (height and width in pixels) with the grid option.

-
- - diff --git a/demos/resizable/synchronous-resize.html b/demos/resizable/synchronous-resize.html deleted file mode 100644 index e654560e6..000000000 --- a/demos/resizable/synchronous-resize.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - jQuery UI Resizable - Synchronous resize - - - - - - - - - - - - -
-

Resize

-
- -
-

will also resize

-
- -
-

Resize multiple elements simultaneously by clicking and dragging the sides of one. Pass a shared selector into the alsoResize option.

-
- - diff --git a/demos/resizable/textarea.html b/demos/resizable/textarea.html deleted file mode 100644 index 3c7c3a46d..000000000 --- a/demos/resizable/textarea.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - jQuery UI Resizable - Textarea - - - - - - - - - - - - - - -
-

Display only an outline of the element while resizing by setting the helper option to a CSS class.

-
- - diff --git a/demos/resizable/visual-feedback.html b/demos/resizable/visual-feedback.html deleted file mode 100644 index 211a3aebf..000000000 --- a/demos/resizable/visual-feedback.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - jQuery UI Resizable - Visual feedback - - - - - - - - - - - - -
-

Ghost

-
- -
-

Instead of showing the actual element during resize, set the ghost option to true to show a semi-transparent part of the element.

-
- - diff --git a/demos/selectable/default.html b/demos/selectable/default.html deleted file mode 100644 index 4e49b284c..000000000 --- a/demos/selectable/default.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - jQuery UI Selectable - Default functionality - - - - - - - - - - - - - -
    -
  1. Item 1
  2. -
  3. Item 2
  4. -
  5. Item 3
  6. -
  7. Item 4
  8. -
  9. Item 5
  10. -
  11. Item 6
  12. -
  13. Item 7
  14. -
- -
-

Enable a DOM element (or group of elements) to be selectable. Draw a box with your cursor to select items. Hold down the Ctrl key to make multiple non-adjacent selections.

-
- - diff --git a/demos/selectable/display-grid.html b/demos/selectable/display-grid.html deleted file mode 100644 index 7924c57fa..000000000 --- a/demos/selectable/display-grid.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - jQuery UI Selectable - Display as grid - - - - - - - - - - - - - -
    -
  1. 1
  2. -
  3. 2
  4. -
  5. 3
  6. -
  7. 4
  8. -
  9. 5
  10. -
  11. 6
  12. -
  13. 7
  14. -
  15. 8
  16. -
  17. 9
  18. -
  19. 10
  20. -
  21. 11
  22. -
  23. 12
  24. -
- -
-

To arrange selectable items as a grid, give them identical dimensions and float them using CSS.

-
- - diff --git a/demos/selectable/index.html b/demos/selectable/index.html deleted file mode 100644 index a82830c60..000000000 --- a/demos/selectable/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - jQuery UI Selectable Demos - - - - - - - diff --git a/demos/selectable/serialize.html b/demos/selectable/serialize.html deleted file mode 100644 index cca6cddb9..000000000 --- a/demos/selectable/serialize.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - jQuery UI Selectable - Serialize - - - - - - - - - - - - - -

-You've selected: none. -

- -
    -
  1. Item 1
  2. -
  3. Item 2
  4. -
  5. Item 3
  6. -
  7. Item 4
  8. -
  9. Item 5
  10. -
  11. Item 6
  12. -
- -
-

Write a function that fires on the stop event to collect the index values of selected items. Present values as feedback, or pass as a data string.

-
- - diff --git a/demos/show/default.html b/demos/show/default.html deleted file mode 100644 index 0938ed018..000000000 --- a/demos/show/default.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - jQuery UI Effects - Show Demo - - - - - - - - - - - - - - - - - - - - -
-
-

Show

-

- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi. -

-
-
- - - -Run Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/show/index.html b/demos/show/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/show/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/slider/colorpicker.html b/demos/slider/colorpicker.html deleted file mode 100644 index f453a7c81..000000000 --- a/demos/slider/colorpicker.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - jQuery UI Slider - Colorpicker - - - - - - - - - - - - -

- - Simple Colorpicker -

- -
-
-
- -
- -
-

Combine three sliders to create a simple RGB colorpicker.

-
- - diff --git a/demos/slider/default.html b/demos/slider/default.html deleted file mode 100644 index 5092c6697..000000000 --- a/demos/slider/default.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - jQuery UI Slider - Default functionality - - - - - - - - - - - -
- -
-

The basic slider is horizontal and has a single handle that can be moved with the mouse or by using the arrow keys.

-
- - diff --git a/demos/slider/hotelrooms.html b/demos/slider/hotelrooms.html deleted file mode 100644 index 24b6672a1..000000000 --- a/demos/slider/hotelrooms.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - jQuery UI Slider - Slider bound to select - - - - - - - - - - - -
- - -
- -
-

How to bind a slider to an existing select element. The select stays visible to display the change. When the select is changed, the slider is updated, too.

-
- - diff --git a/demos/slider/index.html b/demos/slider/index.html deleted file mode 100644 index 2d05bb58b..000000000 --- a/demos/slider/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - jQuery UI Slider Demos - - - - - - - diff --git a/demos/slider/multiple-vertical.html b/demos/slider/multiple-vertical.html deleted file mode 100644 index 0ce36d50f..000000000 --- a/demos/slider/multiple-vertical.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - jQuery UI Slider - Multiple sliders - - - - - - - - - - - - -

- - Master volume -

- -
- -

- - Graphic EQ -

- -
- 88 - 77 - 55 - 33 - 40 - 45 - 70 -
- -
-

Combine horizontal and vertical sliders, each with their own options, to create the UI for a music player.

-
- - diff --git a/demos/slider/range-vertical.html b/demos/slider/range-vertical.html deleted file mode 100644 index d024aee2c..000000000 --- a/demos/slider/range-vertical.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - jQuery UI Slider - Vertical range slider - - - - - - - - - - - -

- - -

- -
- -
-

Change the orientation of the range slider to vertical. Assign a height value via .height() or by setting the height through CSS, and set the orientation option to "vertical."

-
- - diff --git a/demos/slider/range.html b/demos/slider/range.html deleted file mode 100644 index fce03e3fe..000000000 --- a/demos/slider/range.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - jQuery UI Slider - Range slider - - - - - - - - - - - -

- - -

- -
- -
-

Set the range option to true to capture a range of values with two drag handles. The space between the handles is filled with a different background color to indicate those values are selected.

-
- - diff --git a/demos/slider/rangemax.html b/demos/slider/rangemax.html deleted file mode 100644 index 85385a232..000000000 --- a/demos/slider/rangemax.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - jQuery UI Slider - Range with fixed maximum - - - - - - - - - - - -

- - -

-
- -
-

Fix the maximum value of the range slider so that the user can only select a minimum. Set the range option to "max."

-
- - diff --git a/demos/slider/rangemin.html b/demos/slider/rangemin.html deleted file mode 100644 index 8aec589f0..000000000 --- a/demos/slider/rangemin.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - jQuery UI Slider - Range with fixed minimum - - - - - - - - - - - -

- - -

- -
- -
-

Fix the minimum value of the range slider so that the user can only select a maximum. Set the range option to "min."

-
- - diff --git a/demos/slider/side-scroll.html b/demos/slider/side-scroll.html deleted file mode 100644 index e84c5b0b0..000000000 --- a/demos/slider/side-scroll.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - jQuery UI Slider - Slider scrollbar - - - - - - - - - - - - -
-
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
-
-
-
-
- -
-

Use a slider to manipulate the positioning of content on the page. In this case, it acts as a scrollbar with the potential to capture values if needed.

-
- - diff --git a/demos/slider/slider-vertical.html b/demos/slider/slider-vertical.html deleted file mode 100644 index 264ef2a2c..000000000 --- a/demos/slider/slider-vertical.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - jQuery UI Slider - Vertical slider - - - - - - - - - - - -

- - -

- -
- -
-

Change the orientation of the slider to vertical. Assign a height value via .height() or by setting the height through CSS, and set the orientation option to "vertical."

-
- - diff --git a/demos/slider/steps.html b/demos/slider/steps.html deleted file mode 100644 index bd5e8906a..000000000 --- a/demos/slider/steps.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - jQuery UI Slider - Snap to increments - - - - - - - - - - - -

- - -

- -
- -
-

Increment slider values with the step option set to an integer, commonly a dividend of the slider's maximum value. The default increment is 1.

-
- - diff --git a/demos/sortable/connect-lists-through-tabs.html b/demos/sortable/connect-lists-through-tabs.html deleted file mode 100644 index 2ef6fdc1f..000000000 --- a/demos/sortable/connect-lists-through-tabs.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - jQuery UI Sortable - Connect lists with Tabs - - - - - - - - - - - - - - -
- -
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
-
-
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
-
-
- -
-

Sort items from one list into another and vice versa, by dropping the list item on the appropriate tab above.

-
- - diff --git a/demos/sortable/connect-lists.html b/demos/sortable/connect-lists.html deleted file mode 100644 index dd845add7..000000000 --- a/demos/sortable/connect-lists.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - jQuery UI Sortable - Connect lists - - - - - - - - - - - - -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
- -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
- -
-

- Sort items from one list into another and vice versa, by passing a selector into - the connectWith option. The simplest way to do this is to - group all related lists with a CSS class, and then pass that class into the - sortable function (i.e., connectWith: '.myclass'). -

-
- - diff --git a/demos/sortable/default.html b/demos/sortable/default.html deleted file mode 100644 index 843be3246..000000000 --- a/demos/sortable/default.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - jQuery UI Sortable - Default functionality - - - - - - - - - - - - -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
  • Item 6
  • -
  • Item 7
  • -
- -
-

- Enable a group of DOM elements to be sortable. Click on and drag an - element to a new spot within the list, and the other items will adjust to - fit. By default, sortable items share draggable properties. -

-
- - diff --git a/demos/sortable/delay-start.html b/demos/sortable/delay-start.html deleted file mode 100644 index 5c2cd367a..000000000 --- a/demos/sortable/delay-start.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - jQuery UI Sortable - Delay start - - - - - - - - - - - - -

Time delay of 300ms:

- -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
- -

Distance delay of 15px:

- -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
- -
-

- Prevent accidental sorting either by delay (time) or distance. Set a number of - milliseconds the element needs to be dragged before sorting starts - with the delay option. Set a distance in pixels the element - needs to be dragged before sorting starts with the distance - option. -

-
- - diff --git a/demos/sortable/display-grid.html b/demos/sortable/display-grid.html deleted file mode 100644 index af02a4507..000000000 --- a/demos/sortable/display-grid.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - jQuery UI Sortable - Display as grid - - - - - - - - - - - - -
    -
  • 1
  • -
  • 2
  • -
  • 3
  • -
  • 4
  • -
  • 5
  • -
  • 6
  • -
  • 7
  • -
  • 8
  • -
  • 9
  • -
  • 10
  • -
  • 11
  • -
  • 12
  • -
- -
-

- To arrange sortable items as a grid, give them identical dimensions and - float them using CSS. -

-
- - diff --git a/demos/sortable/empty-lists.html b/demos/sortable/empty-lists.html deleted file mode 100644 index cd8fa31a1..000000000 --- a/demos/sortable/empty-lists.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - jQuery UI Sortable - Handle empty lists - - - - - - - - - - - - -
    -
  • Can be dropped..
  • -
  • ..on an empty list
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
- -
    -
  • Cannot be dropped..
  • -
  • ..on an empty list
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
- -
    -
- -
- -
-

- Prevent all items in a list from being dropped into a separate, empty list - using the dropOnEmpty option set to false. By default, - sortable items can be dropped on empty lists. -

-
- - diff --git a/demos/sortable/index.html b/demos/sortable/index.html deleted file mode 100644 index 66b0b5ced..000000000 --- a/demos/sortable/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - jQuery UI Sortable Demos - - - - - - - diff --git a/demos/sortable/items.html b/demos/sortable/items.html deleted file mode 100644 index bbdcba0a7..000000000 --- a/demos/sortable/items.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - jQuery UI Sortable - Include / exclude items - - - - - - - - - - - - -

Specify which items are sortable:

- -
    -
  • Item 1
  • -
  • (I'm not sortable or a drop target)
  • -
  • (I'm not sortable or a drop target)
  • -
  • Item 4
  • -
- -

Cancel sorting (but keep as drop targets):

- -
    -
  • Item 1
  • -
  • (I'm not sortable)
  • -
  • (I'm not sortable)
  • -
  • Item 4
  • -
- -
-

- Specify which items are eligible to sort by passing a jQuery selector into - the items option. Items excluded from this option are not - sortable, nor are they valid targets for sortable items. -

-

- To only prevent sorting on certain items, pass a jQuery selector into the - cancel option. Cancelled items remain valid sort targets for - others. -

-
- - diff --git a/demos/sortable/placeholder.html b/demos/sortable/placeholder.html deleted file mode 100644 index 609324f99..000000000 --- a/demos/sortable/placeholder.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - jQuery UI Sortable - Drop placeholder - - - - - - - - - - - - -
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
  • Item 4
  • -
  • Item 5
  • -
  • Item 6
  • -
  • Item 7
  • -
- -
-

- When dragging a sortable item to a new location, other items will make room - for the that item by shifting to allow white space between them. Pass a - class into the placeholder option to style that space to - be visible. Use the boolean forcePlaceholderSize option - to set dimensions on the placeholder. -

-
- - diff --git a/demos/sortable/portlets.html b/demos/sortable/portlets.html deleted file mode 100644 index 68c668c7b..000000000 --- a/demos/sortable/portlets.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - jQuery UI Sortable - Portlets - - - - - - - - - - - - -
- -
-
Feeds
-
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
-
- -
-
News
-
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
-
- -
- -
- -
-
Shopping
-
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
-
- -
- -
- -
-
Links
-
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
-
- -
-
Images
-
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
-
- -
- -
-

- Enable portlets (styled divs) as sortables and use the connectWith - option to allow sorting between columns. -

-
- - diff --git a/demos/spinner/currency.html b/demos/spinner/currency.html deleted file mode 100644 index 98ff5f660..000000000 --- a/demos/spinner/currency.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - jQuery UI Spinner - Currency - - - - - - - - - - - - - - - -

- - -

-

- - -

- -
-

Example of a donation form, with currency selection and amount spinner.

-
- - diff --git a/demos/spinner/decimal.html b/demos/spinner/decimal.html deleted file mode 100644 index a6dfb9847..000000000 --- a/demos/spinner/decimal.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - jQuery UI Spinner - Decimal - - - - - - - - - - - - - - - -

- - -

-

- - -

- -
-

- Example of a decimal spinner. Step is set to 0.01. -
The code handling the culture change reads the current spinner value, - then changes the culture, then sets the value again, resulting in an updated - formatting, based on the new culture. -

-
- - diff --git a/demos/spinner/default.html b/demos/spinner/default.html deleted file mode 100644 index 4739c8980..000000000 --- a/demos/spinner/default.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - jQuery UI Spinner - Default functionality - - - - - - - - - - - - -

- - -

- -

- - -

- -

- - -

- -
-

Default spinner.

-
- - diff --git a/demos/spinner/index.html b/demos/spinner/index.html deleted file mode 100644 index f3c74d0b1..000000000 --- a/demos/spinner/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - jQuery UI Spinner Demos - - - - - - - diff --git a/demos/spinner/latlong.html b/demos/spinner/latlong.html deleted file mode 100644 index a982cffb9..000000000 --- a/demos/spinner/latlong.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - jQuery UI Spinner - Map - - - - - - - - - - - - - - - - -
- - - -
- -
-

Google Maps integration, using spinners to change latidude and longitude.

-
- - diff --git a/demos/spinner/overflow.html b/demos/spinner/overflow.html deleted file mode 100644 index f26aeb950..000000000 --- a/demos/spinner/overflow.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - jQuery UI Spinner - Overflow - - - - - - - - - - - - -

- - -

- -
-

-Overflowing spinner restricted to a range of -10 to 10. -For anything above 10, it'll overflow to -10, and the other way round. -

-
- - diff --git a/demos/spinner/time.html b/demos/spinner/time.html deleted file mode 100644 index ee1963a3f..000000000 --- a/demos/spinner/time.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - jQuery UI Spinner - Time - - - - - - - - - - - - - - -

- - -

-

- - -

- -
-

- A custom widget extending spinner. Use the Globalization plugin to parse and output - a timestamp, with custom step and page options. Cursor up/down spins minutes, page up/down - spins hours. -

-
- - diff --git a/demos/switchClass/default.html b/demos/switchClass/default.html deleted file mode 100644 index dbb28cf02..000000000 --- a/demos/switchClass/default.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - jQuery UI Effects - switchClass Demo - - - - - - - - - -
-
- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. -
-
-Run Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/switchClass/index.html b/demos/switchClass/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/switchClass/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/tabs/ajax.html b/demos/tabs/ajax.html deleted file mode 100644 index 6adbc6d61..000000000 --- a/demos/tabs/ajax.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - jQuery UI Tabs - Content via Ajax - - - - - - - - - - -
- -
-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
- -
-

Fetch external content via Ajax for the tabs by setting an href value in the tab links. While the Ajax request is waiting for a response, the tab label changes to say "Loading...", then returns to the normal label once loaded.

-

Tabs 3 and 4 demonstrate slow-loading and broken AJAX tabs, and how to handle serverside errors in those cases. Note: These two require a webserver to interpret PHP. They won't work from the filesystem.

-
- - diff --git a/demos/tabs/bottom.html b/demos/tabs/bottom.html deleted file mode 100644 index 96a67bef4..000000000 --- a/demos/tabs/bottom.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - jQuery UI Tabs - Tabs at bottom - - - - - - - - - - - -
- -
-
-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
-

Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.

-
-
-

Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.

-

Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.

-
-
- -
-

With some additional CSS (for positioning) and JS (to put the right classes on elements) the tabs can be placed below their content.

-
- - diff --git a/demos/tabs/collapsible.html b/demos/tabs/collapsible.html deleted file mode 100644 index b5a925bc3..000000000 --- a/demos/tabs/collapsible.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - jQuery UI Tabs - Collapse content - - - - - - - - - - -
- -
-

Click this tab again to close the content pane.

-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
-

Click this tab again to close the content pane.

-

Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.

-
-
-

Click this tab again to close the content pane.

-

Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.

-
-
- -
-

Click the selected tab to toggle its content closed/open. To enable this functionality, set the collapsible option to true.

-
collapsible: true
-
-
- - diff --git a/demos/tabs/default.html b/demos/tabs/default.html deleted file mode 100644 index fdcfe6465..000000000 --- a/demos/tabs/default.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - jQuery UI Tabs - Default functionality - - - - - - - - - - -
- -
-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
-

Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.

-
-
-

Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.

-

Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.

-
-
- -
-

Click tabs to swap between content that is broken into logical sections.

-
- - diff --git a/demos/tabs/index.html b/demos/tabs/index.html deleted file mode 100644 index 779dfd2da..000000000 --- a/demos/tabs/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - jQuery UI Tabs Demos - - - - - - - diff --git a/demos/tabs/manipulation.html b/demos/tabs/manipulation.html deleted file mode 100644 index 78859e5c0..000000000 --- a/demos/tabs/manipulation.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - jQuery UI Tabs - Simple manipulation - - - - - - - - - - - - - - -
-
-
- - - - -
-
-
- - - -
- -
-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
- -
-

Simple tabs adding and removing.

-
- - diff --git a/demos/tabs/mouseover.html b/demos/tabs/mouseover.html deleted file mode 100644 index 15481cad2..000000000 --- a/demos/tabs/mouseover.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - jQuery UI Tabs - Open on mouseover - - - - - - - - - - -
- -
-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
-

Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.

-
-
-

Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.

-

Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.

-
-
- -
-

Toggle sections open/closed on mouseover with the event option. The default value for event is "click."

-
- - diff --git a/demos/tabs/sortable.html b/demos/tabs/sortable.html deleted file mode 100644 index 19087405a..000000000 --- a/demos/tabs/sortable.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - jQuery UI Tabs - Sortable - - - - - - - - - - - - -
- -
-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
-

Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.

-
-
-

Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.

-

Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.

-
-
- -
-

Drag the tabs above to re-order them.

-

Making tabs sortable is as simple as calling .sortable() on the .ui-tabs-nav element.

-
- - diff --git a/demos/tabs/vertical.html b/demos/tabs/vertical.html deleted file mode 100644 index abf4b5c1f..000000000 --- a/demos/tabs/vertical.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - jQuery UI Tabs - Vertical Tabs functionality - - - - - - - - - - - -
- -
-

Content heading 1

-

Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

-
-
-

Content heading 2

-

Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.

-
-
-

Content heading 3

-

Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.

-

Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.

-
-
- -
-

Click tabs to swap between content that is broken into logical sections.

-
- - diff --git a/demos/toggle/default.html b/demos/toggle/default.html deleted file mode 100644 index 907206adb..000000000 --- a/demos/toggle/default.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - jQuery UI Effects - Toggle Demo - - - - - - - - - - - - - - - - - - - - -
-
-

Toggle

-

- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi. -

-
-
- - - -Run Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/toggle/index.html b/demos/toggle/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/toggle/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/toggleClass/default.html b/demos/toggleClass/default.html deleted file mode 100644 index 3b7455247..000000000 --- a/demos/toggleClass/default.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - jQuery UI Effects - toggleClass Demo - - - - - - - - - -
-
- Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. -
-
- -Run Effect - -
-

Click the button above to preview the effect.

-
- - diff --git a/demos/toggleClass/index.html b/demos/toggleClass/index.html deleted file mode 100644 index 3620fd7c5..000000000 --- a/demos/toggleClass/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Effects Demos - - - - - - - diff --git a/demos/tooltip/ajax/content1.html b/demos/tooltip/ajax/content1.html deleted file mode 100644 index a1401b26d..000000000 --- a/demos/tooltip/ajax/content1.html +++ /dev/null @@ -1 +0,0 @@ -

This content was loaded via ajax.

\ No newline at end of file diff --git a/demos/tooltip/ajax/content2.html b/demos/tooltip/ajax/content2.html deleted file mode 100644 index f4132d731..000000000 --- a/demos/tooltip/ajax/content2.html +++ /dev/null @@ -1 +0,0 @@ -

This other content was loaded via ajax.

\ No newline at end of file diff --git a/demos/tooltip/custom-animation.html b/demos/tooltip/custom-animation.html deleted file mode 100644 index 3505a6d2c..000000000 --- a/demos/tooltip/custom-animation.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - jQuery UI Tooltip - Custom animation demo - - - - - - - - - - - - - -

There are various ways to customize the animation of a tooltip.

-

You can use the show and -hide options.

-

You can also use the open event.

- -
-

This demo shows how to customize animations using the show and hide options, -as well as the open event.

-
- - diff --git a/demos/tooltip/custom-content.html b/demos/tooltip/custom-content.html deleted file mode 100644 index 181ca011d..000000000 --- a/demos/tooltip/custom-content.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - jQuery UI Tooltip - Custom content - - - - - - - - - - - - -
-
-

St. Stephen's Cathedral

-

Vienna, Austria

-
- - St. Stephen's Cathedral - -
- -
-
-

Tower Bridge

-

London, England

-
- - Tower Bridge - -
- -

All images are part of Wikimedia Commons -and are licensed under CC BY-SA 3.0 by the copyright holder.

- -
-

Shows how to combine different event delegated tooltips into a single instance, by customizing the items and content options.

-

We realize you may want to interact with the map tooltips. This is a planned feature for a future version.

-
- - diff --git a/demos/tooltip/custom-style.html b/demos/tooltip/custom-style.html deleted file mode 100644 index dc904cdec..000000000 --- a/demos/tooltip/custom-style.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - jQuery UI Tooltip - Custom Styling - - - - - - - - - - - - -

Tooltips can be attached to any element. When you hover -the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.

-

But as it's not a native tooltip, it can be styled. Any themes built with -ThemeRoller -will also style tooltips accordingly.

-

Tooltips are also useful for form elements, to show some additional information in the context of each field.

-

-

Hover the field to see the tooltip.

- -
-

Hover the links above or use the tab key to cycle the focus on each element.

-
- - diff --git a/demos/tooltip/default.html b/demos/tooltip/default.html deleted file mode 100644 index f61fa0391..000000000 --- a/demos/tooltip/default.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - jQuery UI Tooltip - Default functionality - - - - - - - - - - - - -

Tooltips can be attached to any element. When you hover -the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.

-

But as it's not a native tooltip, it can be styled. Any themes built with -ThemeRoller -will also style tooltips accordingly.

-

Tooltips are also useful for form elements, to show some additional information in the context of each field.

-

-

Hover the field to see the tooltip.

- -
-

Hover the links above or use the tab key to cycle the focus on each element.

-
- - diff --git a/demos/tooltip/forms.html b/demos/tooltip/forms.html deleted file mode 100644 index d6b3a4130..000000000 --- a/demos/tooltip/forms.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - jQuery UI Tooltip - Forms - - - - - - - - - - - - - -
-
-
- - -
-
- - -
-
- - -
-
-
- -
-

Use the button below to display the help texts, or just focus or mouseover the indivdual inputs.

-

A fixed width is defined in CSS to make the tooltips look consistent when displayed all at once.

-
- - diff --git a/demos/tooltip/images/st-stephens.jpg b/demos/tooltip/images/st-stephens.jpg deleted file mode 100644 index 30fc36d674153794f979bb148ed44d8d82b7d429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17724 zcma&N1yCH{(>A)ey99R#?(XjHZi~aRxCWQtWN~-5;BLX)A;9961eX8_3E`68U*7Ll zeebP%s&?i`_j9`YJUwS-r{-n-WgkE!=jUh#04OOj1CRm#Q(n#iII`YAXMX?;0RFXG z6aaYHhhuT@@^TaA;BfV1x3U3S+p+_}APzq(Hx4d#P7Z*mgrA!g(An0D%G%c6(N&D* zs%L`I1G#~0y{xGGKrXJH z!hT{j|9}g>*8g^M&`|v&;^izxBlUMyDnm6*DjBecEfpU-CmWEHpOcE8i=B&yS3p33 zm5Q5_i<5(sn}ds+jY~k7hg+DFlj`4v=5;m?8#`fbS^0m@_1Y4n`L|QPzP{|fJnUc( zdk!ukA)&t*+}v!h5^SFSu3lDtY_6WP|3Q$o^#po2x_LQ*U8(*eT3Lg=y~Jo<;?980J~Ai=@-xxLOTYwO|YV{0St0R~b1i7T*6=m*dqKj=u~0 ze=PKWx?b7yxB6e&zBc|#d|TI7wtKwN`sEUU`43qEHiNI}1M>m}L;?`u;o%YB5fKm& zQ4n8$Xvm0&$Y|)OsA#CD=-BB06l`=%ENm=HbUZwKd^|idQc_Yf%KsJ^BqSsZbPOVF zY$6f@90HR64*dVEybJM4L81(J5Ly-Seljq zsp-?AwzUTxFJX9!4Bz#BN%PRs8y#S3=`j6`XGDuEKk}<7urTm2aIkPl@Noaw0D}Wd z%_W5k2d`yC${ByV{^xkN7n*`5;Q#YlQt2^XM#u>uIdk*2 z@!k4+n;i3Ux=rvxL&cSZI6KN;p?_ig)hN&H{r$rYSIX{n3>k%4#ka5!9zOkl=J^M; z<1cDi`0Ug8m*H0x=za2hI07A^>)qX6cv&)G(%aeH^Pz-vK`eo+UpI`Z)uXub*f`Pf zmav>KuZK#&)G~me0zeoL@3(cqUa&(9JcMswjG61sU_QOgsbO)et`H4jUo)$f_!?l& zhj;b|NL3Ahlr8gJimgB3oHR3q%93$X?ZILKSX2SJf6vTr$O!-gbmR)`$;yovfb*S| ztNy2xJIY{sI2KiIML|FUK#p@TA{1E=QTJ~ZMw=5L;2*vx&7h|PqAu$@8q-e4KmQDU z0gR8_f&Sb+h-nanw1bI514rF2N~i5t25FE75fq1E{~ib7aY9k^00w}V;=_$_&Am9Q zm^dp8JdKt=pHGIi>Lcnz6?S7Kry$Wvug+ouXtDrLS%7LHL@6RmDWca3z~Gd0qjc*e zBF9>{6?c4J%c4zl19EV{lwBe2JJtFyP)9K@2dqcpA5T&1-ah&f1qeVzO-RxudJF*Z zYOLP|Iukl9syf-dx`F>{OZ2}jdNm3XilJYQQNJnTNF(N6rK!T5lQ#(?X`JFdex${s zf1%1_?89eZp+nBKZX?Hu-X=c(%OV%e{hZwDK>W8dqJEam2YCQh0zf|tF(_142Y~ZW zbeW>LG=iMHw?CF8hIwy(9q+nlEugO8=0-|%zawvOeE~d(?X+E6NUlvyxJVbn(>5PT zT~zH~jrZ&u2P_`_WM-dT8P}S7HP+Y?mMQvg>>#0Xii6y(gS0zSpFXmeM7dM2!^b7a2&NO?~S4AD0KP

hunt7tXI4aSfESj!{>JX@_5duboi8al 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 p_> diff --git a/demos/tooltip/images/tower-bridge.jpg b/demos/tooltip/images/tower-bridge.jpg deleted file mode 100644 index d1e14d6d28d5bea35debaa01cc3abaf834668050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15764 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 diff --git a/demos/tooltip/index.html b/demos/tooltip/index.html deleted file mode 100644 index cebedd0c3..000000000 --- a/demos/tooltip/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - jQuery UI Tooltip Demos - - - -

- - - diff --git a/demos/tooltip/tracking.html b/demos/tooltip/tracking.html deleted file mode 100644 index 10a81b9be..000000000 --- a/demos/tooltip/tracking.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - jQuery UI Tooltip - Track the mouse - - - - - - - - - - - - -

Tooltips can be attached to any element. When you hover -the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.

-

But as it's not a native tooltip, it can be styled. Any themes built with -ThemeRoller -will also style tooltips accordingly.

-

Tooltips are also useful for form elements, to show some additional information in the context of each field.

-

-

Hover the field to see the tooltip.

- -
-

Here the tooltips are positioned relative to the mouse, and follow the mouse while it moves above the element.

-
- - diff --git a/demos/tooltip/video-player.html b/demos/tooltip/video-player.html deleted file mode 100644 index 8d0bf9cad..000000000 --- a/demos/tooltip/video-player.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - jQuery UI Tooltip - Video Player demo - - - - - - - - - - - - - - - - -
Here Be Video (HTML5?)
-
- - - - -
- - -
- - -
- -
-

A fake video player with like/share/stats button, each with a custom-styled tooltip.

-
- - diff --git a/demos/widget/default.html b/demos/widget/default.html deleted file mode 100644 index 60797b214..000000000 --- a/demos/widget/default.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - jQuery UI Widget - Default functionality - - - - - - - - - - - - -
-
color me
-
color me
-
color me
- - -
- -
-

This demo shows a simple custom widget built using the widget factory (jquery.ui.widget.js).

-

The three boxes are initialized in different ways. Clicking them changes their background color. View source to see how it works, its heavily commented

-
- - diff --git a/demos/widget/index.html b/demos/widget/index.html deleted file mode 100644 index d518b070d..000000000 --- a/demos/widget/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - jQuery UI Widget Demo - - - - - - - diff --git a/external/globalize.culture.de-DE.js b/external/globalize.culture.de-DE.js deleted file mode 100644 index 5466bd75e..000000000 --- a/external/globalize.culture.de-DE.js +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Globalize Culture de-DE - * - * http://github.com/jquery/globalize - * - * Copyright Software Freedom Conservancy, Inc. - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * This file was generated by the Globalize Culture Generator - * Translation: bugs found in this file need to be fixed in the generator - */ - -(function( window, undefined ) { - -var Globalize; - -if ( typeof require !== "undefined" - && typeof exports !== "undefined" - && typeof module !== "undefined" ) { - // Assume CommonJS - Globalize = require( "globalize" ); -} else { - // Global variable - Globalize = window.Globalize; -} - -Globalize.addCultureInfo( "de-DE", "default", { - name: "de-DE", - englishName: "German (Germany)", - nativeName: "Deutsch (Deutschland)", - language: "de", - numberFormat: { - ",": ".", - ".": ",", - NaN: "n. def.", - negativeInfinity: "-unendlich", - positiveInfinity: "+unendlich", - percent: { - pattern: ["-n%","n%"], - ",": ".", - ".": "," - }, - currency: { - pattern: ["-n $","n $"], - ",": ".", - ".": ",", - symbol: "€" - } - }, - calendars: { - standard: { - "/": ".", - firstDay: 1, - days: { - names: ["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"], - namesAbbr: ["So","Mo","Di","Mi","Do","Fr","Sa"], - namesShort: ["So","Mo","Di","Mi","Do","Fr","Sa"] - }, - months: { - names: ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember",""], - namesAbbr: ["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez",""] - }, - AM: null, - PM: null, - eras: [{"name":"n. Chr.","start":null,"offset":0}], - patterns: { - d: "dd.MM.yyyy", - D: "dddd, d. MMMM yyyy", - t: "HH:mm", - T: "HH:mm:ss", - f: "dddd, d. MMMM yyyy HH:mm", - F: "dddd, d. MMMM yyyy HH:mm:ss", - M: "dd MMMM", - Y: "MMMM yyyy" - } - } - } -}); - -}( this )); diff --git a/external/globalize.culture.ja-JP.js b/external/globalize.culture.ja-JP.js deleted file mode 100644 index a9469d709..000000000 --- a/external/globalize.culture.ja-JP.js +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Globalize Culture ja-JP - * - * http://github.com/jquery/globalize - * - * Copyright Software Freedom Conservancy, Inc. - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * This file was generated by the Globalize Culture Generator - * Translation: bugs found in this file need to be fixed in the generator - */ - -(function( window, undefined ) { - -var Globalize; - -if ( typeof require !== "undefined" - && typeof exports !== "undefined" - && typeof module !== "undefined" ) { - // Assume CommonJS - Globalize = require( "globalize" ); -} else { - // Global variable - Globalize = window.Globalize; -} - -Globalize.addCultureInfo( "ja-JP", "default", { - name: "ja-JP", - englishName: "Japanese (Japan)", - nativeName: "日本語 (日本)", - language: "ja", - numberFormat: { - NaN: "NaN (非数値)", - negativeInfinity: "-∞", - positiveInfinity: "+∞", - percent: { - pattern: ["-n%","n%"] - }, - currency: { - pattern: ["-$n","$n"], - decimals: 0, - symbol: "¥" - } - }, - calendars: { - standard: { - days: { - names: ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"], - namesAbbr: ["日","月","火","水","木","金","土"], - namesShort: ["日","月","火","水","木","金","土"] - }, - months: { - names: ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",""], - namesAbbr: ["1","2","3","4","5","6","7","8","9","10","11","12",""] - }, - AM: ["午前","午前","午前"], - PM: ["午後","午後","午後"], - eras: [{"name":"西暦","start":null,"offset":0}], - patterns: { - d: "yyyy/MM/dd", - D: "yyyy'年'M'月'd'日'", - t: "H:mm", - T: "H:mm:ss", - f: "yyyy'年'M'月'd'日' H:mm", - F: "yyyy'年'M'月'd'日' H:mm:ss", - M: "M'月'd'日'", - Y: "yyyy'年'M'月'" - } - }, - Japanese: { - name: "Japanese", - days: { - names: ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"], - namesAbbr: ["日","月","火","水","木","金","土"], - namesShort: ["日","月","火","水","木","金","土"] - }, - months: { - names: ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",""], - namesAbbr: ["1","2","3","4","5","6","7","8","9","10","11","12",""] - }, - AM: ["午前","午前","午前"], - PM: ["午後","午後","午後"], - eras: [{"name":"平成","start":null,"offset":1867},{"name":"昭和","start":-1812153600000,"offset":1911},{"name":"大正","start":-1357603200000,"offset":1925},{"name":"明治","start":60022080000,"offset":1988}], - twoDigitYearMax: 99, - patterns: { - d: "gg y/M/d", - D: "gg y'年'M'月'd'日'", - t: "H:mm", - T: "H:mm:ss", - f: "gg y'年'M'月'd'日' H:mm", - F: "gg y'年'M'月'd'日' H:mm:ss", - M: "M'月'd'日'", - Y: "gg y'年'M'月'" - } - } - } -}); - -}( this )); diff --git a/external/globalize.js b/external/globalize.js deleted file mode 100644 index ebaca1748..000000000 --- a/external/globalize.js +++ /dev/null @@ -1,1573 +0,0 @@ -/*! - * Globalize - * - * http://github.com/jquery/globalize - * - * Copyright Software Freedom Conservancy, Inc. - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - */ - -(function( window, undefined ) { - -var Globalize, - // private variables - regexHex, - regexInfinity, - regexParseFloat, - regexTrim, - // private JavaScript utility functions - arrayIndexOf, - endsWith, - extend, - isArray, - isFunction, - isObject, - startsWith, - trim, - truncate, - zeroPad, - // private Globalization utility functions - appendPreOrPostMatch, - expandFormat, - formatDate, - formatNumber, - getTokenRegExp, - getEra, - getEraYear, - parseExact, - parseNegativePattern; - -// Global variable (Globalize) or CommonJS module (globalize) -Globalize = function( cultureSelector ) { - return new Globalize.prototype.init( cultureSelector ); -}; - -if ( typeof require !== "undefined" - && typeof exports !== "undefined" - && typeof module !== "undefined" ) { - // Assume CommonJS - module.exports = Globalize; -} else { - // Export as global variable - window.Globalize = Globalize; -} - -Globalize.cultures = {}; - -Globalize.prototype = { - constructor: Globalize, - init: function( cultureSelector ) { - this.cultures = Globalize.cultures; - this.cultureSelector = cultureSelector; - - return this; - } -}; -Globalize.prototype.init.prototype = Globalize.prototype; - -// 1. When defining a culture, all fields are required except the ones stated as optional. -// 2. Each culture should have a ".calendars" object with at least one calendar named "standard" -// which serves as the default calendar in use by that culture. -// 3. Each culture should have a ".calendar" object which is the current calendar being used, -// it may be dynamically changed at any time to one of the calendars in ".calendars". -Globalize.cultures[ "default" ] = { - // A unique name for the culture in the form - - name: "en", - // the name of the culture in the english language - englishName: "English", - // the name of the culture in its own language - nativeName: "English", - // whether the culture uses right-to-left text - isRTL: false, - // "language" is used for so-called "specific" cultures. - // For example, the culture "es-CL" means "Spanish, in Chili". - // It represents the Spanish-speaking culture as it is in Chili, - // which might have different formatting rules or even translations - // than Spanish in Spain. A "neutral" culture is one that is not - // specific to a region. For example, the culture "es" is the generic - // Spanish culture, which may be a more generalized version of the language - // that may or may not be what a specific culture expects. - // For a specific culture like "es-CL", the "language" field refers to the - // neutral, generic culture information for the language it is using. - // This is not always a simple matter of the string before the dash. - // For example, the "zh-Hans" culture is netural (Simplified Chinese). - // And the "zh-SG" culture is Simplified Chinese in Singapore, whose lanugage - // field is "zh-CHS", not "zh". - // This field should be used to navigate from a specific culture to it's - // more general, neutral culture. If a culture is already as general as it - // can get, the language may refer to itself. - language: "en", - // numberFormat defines general number formatting rules, like the digits in - // each grouping, the group separator, and how negative numbers are displayed. - numberFormat: { - // [negativePattern] - // Note, numberFormat.pattern has no "positivePattern" unlike percent and currency, - // but is still defined as an array for consistency with them. - // negativePattern: one of "(n)|-n|- n|n-|n -" - pattern: [ "-n" ], - // number of decimal places normally shown - decimals: 2, - // string that separates number groups, as in 1,000,000 - ",": ",", - // string that separates a number from the fractional portion, as in 1.99 - ".": ".", - // array of numbers indicating the size of each number group. - // TODO: more detailed description and example - groupSizes: [ 3 ], - // symbol used for positive numbers - "+": "+", - // symbol used for negative numbers - "-": "-", - // symbol used for NaN (Not-A-Number) - NaN: "NaN", - // symbol used for Negative Infinity - negativeInfinity: "-Infinity", - // symbol used for Positive Infinity - positiveInfinity: "Infinity", - percent: { - // [negativePattern, positivePattern] - // negativePattern: one of "-n %|-n%|-%n|%-n|%n-|n-%|n%-|-% n|n %-|% n-|% -n|n- %" - // positivePattern: one of "n %|n%|%n|% n" - pattern: [ "-n %", "n %" ], - // number of decimal places normally shown - decimals: 2, - // array of numbers indicating the size of each number group. - // TODO: more detailed description and example - groupSizes: [ 3 ], - // string that separates number groups, as in 1,000,000 - ",": ",", - // string that separates a number from the fractional portion, as in 1.99 - ".": ".", - // symbol used to represent a percentage - symbol: "%" - }, - currency: { - // [negativePattern, positivePattern] - // negativePattern: one of "($n)|-$n|$-n|$n-|(n$)|-n$|n-$|n$-|-n $|-$ n|n $-|$ n-|$ -n|n- $|($ n)|(n $)" - // positivePattern: one of "$n|n$|$ n|n $" - pattern: [ "($n)", "$n" ], - // number of decimal places normally shown - decimals: 2, - // array of numbers indicating the size of each number group. - // TODO: more detailed description and example - groupSizes: [ 3 ], - // string that separates number groups, as in 1,000,000 - ",": ",", - // string that separates a number from the fractional portion, as in 1.99 - ".": ".", - // symbol used to represent currency - symbol: "$" - } - }, - // calendars defines all the possible calendars used by this culture. - // There should be at least one defined with name "standard", and is the default - // calendar used by the culture. - // A calendar contains information about how dates are formatted, information about - // the calendar's eras, a standard set of the date formats, - // translations for day and month names, and if the calendar is not based on the Gregorian - // calendar, conversion functions to and from the Gregorian calendar. - calendars: { - standard: { - // name that identifies the type of calendar this is - name: "Gregorian_USEnglish", - // separator of parts of a date (e.g. "/" in 11/05/1955) - "/": "/", - // separator of parts of a time (e.g. ":" in 05:44 PM) - ":": ":", - // the first day of the week (0 = Sunday, 1 = Monday, etc) - firstDay: 0, - days: { - // full day names - names: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], - // abbreviated day names - namesAbbr: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], - // shortest day names - namesShort: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ] - }, - months: { - // full month names (13 months for lunar calendards -- 13th month should be "" if not lunar) - names: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "" ], - // abbreviated month names - namesAbbr: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" ] - }, - // AM and PM designators in one of these forms: - // The usual view, and the upper and lower case versions - // [ standard, lowercase, uppercase ] - // The culture does not use AM or PM (likely all standard date formats use 24 hour time) - // null - AM: [ "AM", "am", "AM" ], - PM: [ "PM", "pm", "PM" ], - eras: [ - // eras in reverse chronological order. - // name: the name of the era in this culture (e.g. A.D., C.E.) - // start: when the era starts in ticks (gregorian, gmt), null if it is the earliest supported era. - // offset: offset in years from gregorian calendar - { - "name": "A.D.", - "start": null, - "offset": 0 - } - ], - // when a two digit year is given, it will never be parsed as a four digit - // year greater than this year (in the appropriate era for the culture) - // Set it as a full year (e.g. 2029) or use an offset format starting from - // the current year: "+19" would correspond to 2029 if the current year 2010. - twoDigitYearMax: 2029, - // set of predefined date and time patterns used by the culture - // these represent the format someone in this culture would expect - // to see given the portions of the date that are shown. - patterns: { - // short date pattern - d: "M/d/yyyy", - // long date pattern - D: "dddd, MMMM dd, yyyy", - // short time pattern - t: "h:mm tt", - // long time pattern - T: "h:mm:ss tt", - // long date, short time pattern - f: "dddd, MMMM dd, yyyy h:mm tt", - // long date, long time pattern - F: "dddd, MMMM dd, yyyy h:mm:ss tt", - // month/day pattern - M: "MMMM dd", - // month/year pattern - Y: "yyyy MMMM", - // S is a sortable format that does not vary by culture - S: "yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss" - } - // optional fields for each calendar: - /* - monthsGenitive: - Same as months but used when the day preceeds the month. - Omit if the culture has no genitive distinction in month names. - For an explaination of genitive months, see http://blogs.msdn.com/michkap/archive/2004/12/25/332259.aspx - convert: - Allows for the support of non-gregorian based calendars. This convert object is used to - to convert a date to and from a gregorian calendar date to handle parsing and formatting. - The two functions: - fromGregorian( date ) - Given the date as a parameter, return an array with parts [ year, month, day ] - corresponding to the non-gregorian based year, month, and day for the calendar. - toGregorian( year, month, day ) - Given the non-gregorian year, month, and day, return a new Date() object - set to the corresponding date in the gregorian calendar. - */ - } - }, - // For localized strings - messages: {} -}; - -Globalize.cultures[ "default" ].calendar = Globalize.cultures[ "default" ].calendars.standard; - -Globalize.cultures[ "en" ] = Globalize.cultures[ "default" ]; - -Globalize.cultureSelector = "en"; - -// -// private variables -// - -regexHex = /^0x[a-f0-9]+$/i; -regexInfinity = /^[+-]?infinity$/i; -regexParseFloat = /^[+-]?\d*\.?\d*(e[+-]?\d+)?$/; -regexTrim = /^\s+|\s+$/g; - -// -// private JavaScript utility functions -// - -arrayIndexOf = function( array, item ) { - if ( array.indexOf ) { - return array.indexOf( item ); - } - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[i] === item ) { - return i; - } - } - return -1; -}; - -endsWith = function( value, pattern ) { - return value.substr( value.length - pattern.length ) === pattern; -}; - -extend = function( deep ) { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction(target) ) { - target = {}; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( isObject(copy) || (copyIsArray = isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - - } else { - clone = src && isObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -isArray = Array.isArray || function( obj ) { - return Object.prototype.toString.call( obj ) === "[object Array]"; -}; - -isFunction = function( obj ) { - return Object.prototype.toString.call( obj ) === "[object Function]" -} - -isObject = function( obj ) { - return Object.prototype.toString.call( obj ) === "[object Object]"; -}; - -startsWith = function( value, pattern ) { - return value.indexOf( pattern ) === 0; -}; - -trim = function( value ) { - return ( value + "" ).replace( regexTrim, "" ); -}; - -truncate = function( value ) { - return value | 0; -}; - -zeroPad = function( str, count, left ) { - var l; - for ( l = str.length; l < count; l += 1 ) { - str = ( left ? ("0" + str) : (str + "0") ); - } - return str; -}; - -// -// private Globalization utility functions -// - -appendPreOrPostMatch = function( preMatch, strings ) { - // appends pre- and post- token match strings while removing escaped characters. - // Returns a single quote count which is used to determine if the token occurs - // in a string literal. - var quoteCount = 0, - escaped = false; - for ( var i = 0, il = preMatch.length; i < il; i++ ) { - var c = preMatch.charAt( i ); - switch ( c ) { - case "\'": - if ( escaped ) { - strings.push( "\'" ); - } - else { - quoteCount++; - } - escaped = false; - break; - case "\\": - if ( escaped ) { - strings.push( "\\" ); - } - escaped = !escaped; - break; - default: - strings.push( c ); - escaped = false; - break; - } - } - return quoteCount; -}; - -expandFormat = function( cal, format ) { - // expands unspecified or single character date formats into the full pattern. - format = format || "F"; - var pattern, - patterns = cal.patterns, - len = format.length; - if ( len === 1 ) { - pattern = patterns[ format ]; - if ( !pattern ) { - throw "Invalid date format string \'" + format + "\'."; - } - format = pattern; - } - else if ( len === 2 && format.charAt(0) === "%" ) { - // %X escape format -- intended as a custom format string that is only one character, not a built-in format. - format = format.charAt( 1 ); - } - return format; -}; - -formatDate = function( value, format, culture ) { - var cal = culture.calendar, - convert = cal.convert; - - if ( !format || !format.length || format === "i" ) { - var ret; - if ( culture && culture.name.length ) { - if ( convert ) { - // non-gregorian calendar, so we cannot use built-in toLocaleString() - ret = formatDate( value, cal.patterns.F, culture ); - } - else { - var eraDate = new Date( value.getTime() ), - era = getEra( value, cal.eras ); - eraDate.setFullYear( getEraYear(value, cal, era) ); - ret = eraDate.toLocaleString(); - } - } - else { - ret = value.toString(); - } - return ret; - } - - var eras = cal.eras, - sortable = format === "s"; - format = expandFormat( cal, format ); - - // Start with an empty string - ret = []; - var hour, - zeros = [ "0", "00", "000" ], - foundDay, - checkedDay, - dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g, - quoteCount = 0, - tokenRegExp = getTokenRegExp(), - converted; - - function padZeros( num, c ) { - var r, s = num + ""; - if ( c > 1 && s.length < c ) { - r = ( zeros[c - 2] + s); - return r.substr( r.length - c, c ); - } - else { - r = s; - } - return r; - } - - function hasDay() { - if ( foundDay || checkedDay ) { - return foundDay; - } - foundDay = dayPartRegExp.test( format ); - checkedDay = true; - return foundDay; - } - - function getPart( date, part ) { - if ( converted ) { - return converted[ part ]; - } - switch ( part ) { - case 0: return date.getFullYear(); - case 1: return date.getMonth(); - case 2: return date.getDate(); - } - } - - if ( !sortable && convert ) { - converted = convert.fromGregorian( value ); - } - - for ( ; ; ) { - // Save the current index - var index = tokenRegExp.lastIndex, - // Look for the next pattern - ar = tokenRegExp.exec( format ); - - // Append the text before the pattern (or the end of the string if not found) - var preMatch = format.slice( index, ar ? ar.index : format.length ); - quoteCount += appendPreOrPostMatch( preMatch, ret ); - - if ( !ar ) { - break; - } - - // do not replace any matches that occur inside a string literal. - if ( quoteCount % 2 ) { - ret.push( ar[0] ); - continue; - } - - var current = ar[ 0 ], - clength = current.length; - - switch ( current ) { - case "ddd": - //Day of the week, as a three-letter abbreviation - case "dddd": - // Day of the week, using the full name - var names = ( clength === 3 ) ? cal.days.namesAbbr : cal.days.names; - ret.push( names[value.getDay()] ); - break; - case "d": - // Day of month, without leading zero for single-digit days - case "dd": - // Day of month, with leading zero for single-digit days - foundDay = true; - ret.push( - padZeros( getPart(value, 2), clength ) - ); - break; - case "MMM": - // Month, as a three-letter abbreviation - case "MMMM": - // Month, using the full name - var part = getPart( value, 1 ); - ret.push( - ( cal.monthsGenitive && hasDay() ) - ? - cal.monthsGenitive[ clength === 3 ? "namesAbbr" : "names" ][ part ] - : - cal.months[ clength === 3 ? "namesAbbr" : "names" ][ part ] - ); - break; - case "M": - // Month, as digits, with no leading zero for single-digit months - case "MM": - // Month, as digits, with leading zero for single-digit months - ret.push( - padZeros( getPart(value, 1) + 1, clength ) - ); - break; - case "y": - // Year, as two digits, but with no leading zero for years less than 10 - case "yy": - // Year, as two digits, with leading zero for years less than 10 - case "yyyy": - // Year represented by four full digits - part = converted ? converted[ 0 ] : getEraYear( value, cal, getEra(value, eras), sortable ); - if ( clength < 4 ) { - part = part % 100; - } - ret.push( - padZeros( part, clength ) - ); - break; - case "h": - // Hours with no leading zero for single-digit hours, using 12-hour clock - case "hh": - // Hours with leading zero for single-digit hours, using 12-hour clock - hour = value.getHours() % 12; - if ( hour === 0 ) hour = 12; - ret.push( - padZeros( hour, clength ) - ); - break; - case "H": - // Hours with no leading zero for single-digit hours, using 24-hour clock - case "HH": - // Hours with leading zero for single-digit hours, using 24-hour clock - ret.push( - padZeros( value.getHours(), clength ) - ); - break; - case "m": - // Minutes with no leading zero for single-digit minutes - case "mm": - // Minutes with leading zero for single-digit minutes - ret.push( - padZeros( value.getMinutes(), clength ) - ); - break; - case "s": - // Seconds with no leading zero for single-digit seconds - case "ss": - // Seconds with leading zero for single-digit seconds - ret.push( - padZeros( value.getSeconds(), clength ) - ); - break; - case "t": - // One character am/pm indicator ("a" or "p") - case "tt": - // Multicharacter am/pm indicator - part = value.getHours() < 12 ? ( cal.AM ? cal.AM[0] : " " ) : ( cal.PM ? cal.PM[0] : " " ); - ret.push( clength === 1 ? part.charAt(0) : part ); - break; - case "f": - // Deciseconds - case "ff": - // Centiseconds - case "fff": - // Milliseconds - ret.push( - padZeros( value.getMilliseconds(), 3 ).substr( 0, clength ) - ); - break; - case "z": - // Time zone offset, no leading zero - case "zz": - // Time zone offset with leading zero - hour = value.getTimezoneOffset() / 60; - ret.push( - ( hour <= 0 ? "+" : "-" ) + padZeros( Math.floor(Math.abs(hour)), clength ) - ); - break; - case "zzz": - // Time zone offset with leading zero - hour = value.getTimezoneOffset() / 60; - ret.push( - ( hour <= 0 ? "+" : "-" ) + padZeros( Math.floor(Math.abs(hour)), 2 ) - // Hard coded ":" separator, rather than using cal.TimeSeparator - // Repeated here for consistency, plus ":" was already assumed in date parsing. - + ":" + padZeros( Math.abs(value.getTimezoneOffset() % 60), 2 ) - ); - break; - case "g": - case "gg": - if ( cal.eras ) { - ret.push( - cal.eras[ getEra(value, eras) ].name - ); - } - break; - case "/": - ret.push( cal["/"] ); - break; - default: - throw "Invalid date format pattern \'" + current + "\'."; - break; - } - } - return ret.join( "" ); -}; - -// formatNumber -(function() { - var expandNumber; - - expandNumber = function( number, precision, formatInfo ) { - var groupSizes = formatInfo.groupSizes, - curSize = groupSizes[ 0 ], - curGroupIndex = 1, - factor = Math.pow( 10, precision ), - rounded = Math.round( number * factor ) / factor; - - if ( !isFinite(rounded) ) { - rounded = number; - } - number = rounded; - - var numberString = number+"", - right = "", - split = numberString.split( /e/i ), - exponent = split.length > 1 ? parseInt( split[1], 10 ) : 0; - numberString = split[ 0 ]; - split = numberString.split( "." ); - numberString = split[ 0 ]; - right = split.length > 1 ? split[ 1 ] : ""; - - var l; - if ( exponent > 0 ) { - right = zeroPad( right, exponent, false ); - numberString += right.slice( 0, exponent ); - right = right.substr( exponent ); - } - else if ( exponent < 0 ) { - exponent = -exponent; - numberString = zeroPad( numberString, exponent + 1 ); - right = numberString.slice( -exponent, numberString.length ) + right; - numberString = numberString.slice( 0, -exponent ); - } - - if ( precision > 0 ) { - right = formatInfo[ "." ] + - ( (right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision) ); - } - else { - right = ""; - } - - var stringIndex = numberString.length - 1, - sep = formatInfo[ "," ], - ret = ""; - - while ( stringIndex >= 0 ) { - if ( curSize === 0 || curSize > stringIndex ) { - return numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right ); - } - ret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : "" ); - - stringIndex -= curSize; - - if ( curGroupIndex < groupSizes.length ) { - curSize = groupSizes[ curGroupIndex ]; - curGroupIndex++; - } - } - - return numberString.slice( 0, stringIndex + 1 ) + sep + ret + right; - }; - - formatNumber = function( value, format, culture ) { - if ( !isFinite(value) ) { - if ( value === Infinity ) { - return culture.numberFormat.positiveInfinity; - } - if ( value === -Infinity ) { - return culture.numberFormat.negativeInfinity; - } - return culture.numberFormat.NaN; - } - if ( !format || format === "i" ) { - return culture.name.length ? value.toLocaleString() : value.toString(); - } - format = format || "D"; - - var nf = culture.numberFormat, - number = Math.abs( value ), - precision = -1, - pattern; - if ( format.length > 1 ) precision = parseInt( format.slice(1), 10 ); - - var current = format.charAt( 0 ).toUpperCase(), - formatInfo; - - switch ( current ) { - case "D": - pattern = "n"; - number = truncate( number ); - if ( precision !== -1 ) { - number = zeroPad( "" + number, precision, true ); - } - if ( value < 0 ) number = "-" + number; - break; - case "N": - formatInfo = nf; - // fall through - case "C": - formatInfo = formatInfo || nf.currency; - // fall through - case "P": - formatInfo = formatInfo || nf.percent; - pattern = value < 0 ? formatInfo.pattern[ 0 ] : ( formatInfo.pattern[1] || "n" ); - if ( precision === -1 ) precision = formatInfo.decimals; - number = expandNumber( number * (current === "P" ? 100 : 1), precision, formatInfo ); - break; - default: - throw "Bad number format specifier: " + current; - } - - var patternParts = /n|\$|-|%/g, - ret = ""; - for ( ; ; ) { - var index = patternParts.lastIndex, - ar = patternParts.exec( pattern ); - - ret += pattern.slice( index, ar ? ar.index : pattern.length ); - - if ( !ar ) { - break; - } - - switch ( ar[0] ) { - case "n": - ret += number; - break; - case "$": - ret += nf.currency.symbol; - break; - case "-": - // don't make 0 negative - if ( /[1-9]/.test(number) ) { - ret += nf[ "-" ]; - } - break; - case "%": - ret += nf.percent.symbol; - break; - } - } - - return ret; - }; - -}()); - -getTokenRegExp = function() { - // regular expression for matching date and time tokens in format strings. - return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g; -}; - -getEra = function( date, eras ) { - if ( !eras ) return 0; - var start, ticks = date.getTime(); - for ( var i = 0, l = eras.length; i < l; i++ ) { - start = eras[ i ].start; - if ( start === null || ticks >= start ) { - return i; - } - } - return 0; -}; - -getEraYear = function( date, cal, era, sortable ) { - var year = date.getFullYear(); - if ( !sortable && cal.eras ) { - // convert normal gregorian year to era-shifted gregorian - // year by subtracting the era offset - year -= cal.eras[ era ].offset; - } - return year; -}; - -// parseExact -(function() { - var expandYear, - getDayIndex, - getMonthIndex, - getParseRegExp, - outOfRange, - toUpper, - toUpperArray; - - expandYear = function( cal, year ) { - // expands 2-digit year into 4 digits. - var now = new Date(), - era = getEra( now ); - if ( year < 100 ) { - var twoDigitYearMax = cal.twoDigitYearMax; - twoDigitYearMax = typeof twoDigitYearMax === "string" ? new Date().getFullYear() % 100 + parseInt( twoDigitYearMax, 10 ) : twoDigitYearMax; - var curr = getEraYear( now, cal, era ); - year += curr - ( curr % 100 ); - if ( year > twoDigitYearMax ) { - year -= 100; - } - } - return year; - }; - - getDayIndex = function ( cal, value, abbr ) { - var ret, - days = cal.days, - upperDays = cal._upperDays; - if ( !upperDays ) { - cal._upperDays = upperDays = [ - toUpperArray( days.names ), - toUpperArray( days.namesAbbr ), - toUpperArray( days.namesShort ) - ]; - } - value = toUpper( value ); - if ( abbr ) { - ret = arrayIndexOf( upperDays[1], value ); - if ( ret === -1 ) { - ret = arrayIndexOf( upperDays[2], value ); - } - } - else { - ret = arrayIndexOf( upperDays[0], value ); - } - return ret; - }; - - getMonthIndex = function( cal, value, abbr ) { - var months = cal.months, - monthsGen = cal.monthsGenitive || cal.months, - upperMonths = cal._upperMonths, - upperMonthsGen = cal._upperMonthsGen; - if ( !upperMonths ) { - cal._upperMonths = upperMonths = [ - toUpperArray( months.names ), - toUpperArray( months.namesAbbr ) - ]; - cal._upperMonthsGen = upperMonthsGen = [ - toUpperArray( monthsGen.names ), - toUpperArray( monthsGen.namesAbbr ) - ]; - } - value = toUpper( value ); - var i = arrayIndexOf( abbr ? upperMonths[1] : upperMonths[0], value ); - if ( i < 0 ) { - i = arrayIndexOf( abbr ? upperMonthsGen[1] : upperMonthsGen[0], value ); - } - return i; - }; - - getParseRegExp = function( cal, format ) { - // converts a format string into a regular expression with groups that - // can be used to extract date fields from a date string. - // check for a cached parse regex. - var re = cal._parseRegExp; - if ( !re ) { - cal._parseRegExp = re = {}; - } - else { - var reFormat = re[ format ]; - if ( reFormat ) { - return reFormat; - } - } - - // expand single digit formats, then escape regular expression characters. - var expFormat = expandFormat( cal, format ).replace( /([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1" ), - regexp = [ "^" ], - groups = [], - index = 0, - quoteCount = 0, - tokenRegExp = getTokenRegExp(), - match; - - // iterate through each date token found. - while ( (match = tokenRegExp.exec(expFormat)) !== null ) { - var preMatch = expFormat.slice( index, match.index ); - index = tokenRegExp.lastIndex; - - // don't replace any matches that occur inside a string literal. - quoteCount += appendPreOrPostMatch( preMatch, regexp ); - if ( quoteCount % 2 ) { - regexp.push( match[0] ); - continue; - } - - // add a regex group for the token. - var m = match[ 0 ], - len = m.length, - add; - switch ( m ) { - case "dddd": case "ddd": - case "MMMM": case "MMM": - case "gg": case "g": - add = "(\\D+)"; - break; - case "tt": case "t": - add = "(\\D*)"; - break; - case "yyyy": - case "fff": - case "ff": - case "f": - add = "(\\d{" + len + "})"; - break; - case "dd": case "d": - case "MM": case "M": - case "yy": case "y": - case "HH": case "H": - case "hh": case "h": - case "mm": case "m": - case "ss": case "s": - add = "(\\d\\d?)"; - break; - case "zzz": - add = "([+-]?\\d\\d?:\\d{2})"; - break; - case "zz": case "z": - add = "([+-]?\\d\\d?)"; - break; - case "/": - add = "(\\" + cal[ "/" ] + ")"; - break; - default: - throw "Invalid date format pattern \'" + m + "\'."; - break; - } - if ( add ) { - regexp.push( add ); - } - groups.push( match[0] ); - } - appendPreOrPostMatch( expFormat.slice(index), regexp ); - regexp.push( "$" ); - - // allow whitespace to differ when matching formats. - var regexpStr = regexp.join( "" ).replace( /\s+/g, "\\s+" ), - parseRegExp = { "regExp": regexpStr, "groups": groups }; - - // cache the regex for this format. - return re[ format ] = parseRegExp; - }; - - outOfRange = function( value, low, high ) { - return value < low || value > high; - }; - - toUpper = function( value ) { - // "he-IL" has non-breaking space in weekday names. - return value.split( "\u00A0" ).join( " " ).toUpperCase(); - }; - - toUpperArray = function( arr ) { - var results = []; - for ( var i = 0, l = arr.length; i < l; i++ ) { - results[ i ] = toUpper( arr[i] ); - } - return results; - }; - - parseExact = function( value, format, culture ) { - // try to parse the date string by matching against the format string - // while using the specified culture for date field names. - value = trim( value ); - var cal = culture.calendar, - // convert date formats into regular expressions with groupings. - // use the regexp to determine the input format and extract the date fields. - parseInfo = getParseRegExp( cal, format ), - match = new RegExp( parseInfo.regExp ).exec( value ); - if ( match === null ) { - return null; - } - // found a date format that matches the input. - var groups = parseInfo.groups, - era = null, year = null, month = null, date = null, weekDay = null, - hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null, - pmHour = false; - // iterate the format groups to extract and set the date fields. - for ( var j = 0, jl = groups.length; j < jl; j++ ) { - var matchGroup = match[ j + 1 ]; - if ( matchGroup ) { - var current = groups[ j ], - clength = current.length, - matchInt = parseInt( matchGroup, 10 ); - switch ( current ) { - case "dd": case "d": - // Day of month. - date = matchInt; - // check that date is generally in valid range, also checking overflow below. - if ( outOfRange(date, 1, 31) ) return null; - break; - case "MMM": case "MMMM": - month = getMonthIndex( cal, matchGroup, clength === 3 ); - if ( outOfRange(month, 0, 11) ) return null; - break; - case "M": case "MM": - // Month. - month = matchInt - 1; - if ( outOfRange(month, 0, 11) ) return null; - break; - case "y": case "yy": - case "yyyy": - year = clength < 4 ? expandYear( cal, matchInt ) : matchInt; - if ( outOfRange(year, 0, 9999) ) return null; - break; - case "h": case "hh": - // Hours (12-hour clock). - hour = matchInt; - if ( hour === 12 ) hour = 0; - if ( outOfRange(hour, 0, 11) ) return null; - break; - case "H": case "HH": - // Hours (24-hour clock). - hour = matchInt; - if ( outOfRange(hour, 0, 23) ) return null; - break; - case "m": case "mm": - // Minutes. - min = matchInt; - if ( outOfRange(min, 0, 59) ) return null; - break; - case "s": case "ss": - // Seconds. - sec = matchInt; - if ( outOfRange(sec, 0, 59) ) return null; - break; - case "tt": case "t": - // AM/PM designator. - // see if it is standard, upper, or lower case PM. If not, ensure it is at least one of - // the AM tokens. If not, fail the parse for this format. - pmHour = cal.PM && ( matchGroup === cal.PM[0] || matchGroup === cal.PM[1] || matchGroup === cal.PM[2] ); - if ( - !pmHour && ( - !cal.AM || ( matchGroup !== cal.AM[0] && matchGroup !== cal.AM[1] && matchGroup !== cal.AM[2] ) - ) - ) return null; - break; - case "f": - // Deciseconds. - case "ff": - // Centiseconds. - case "fff": - // Milliseconds. - msec = matchInt * Math.pow( 10, 3 - clength ); - if ( outOfRange(msec, 0, 999) ) return null; - break; - case "ddd": - // Day of week. - case "dddd": - // Day of week. - weekDay = getDayIndex( cal, matchGroup, clength === 3 ); - if ( outOfRange(weekDay, 0, 6) ) return null; - break; - case "zzz": - // Time zone offset in +/- hours:min. - var offsets = matchGroup.split( /:/ ); - if ( offsets.length !== 2 ) return null; - hourOffset = parseInt( offsets[0], 10 ); - if ( outOfRange(hourOffset, -12, 13) ) return null; - var minOffset = parseInt( offsets[1], 10 ); - if ( outOfRange(minOffset, 0, 59) ) return null; - tzMinOffset = ( hourOffset * 60 ) + ( startsWith(matchGroup, "-") ? -minOffset : minOffset ); - break; - case "z": case "zz": - // Time zone offset in +/- hours. - hourOffset = matchInt; - if ( outOfRange(hourOffset, -12, 13) ) return null; - tzMinOffset = hourOffset * 60; - break; - case "g": case "gg": - var eraName = matchGroup; - if ( !eraName || !cal.eras ) return null; - eraName = trim( eraName.toLowerCase() ); - for ( var i = 0, l = cal.eras.length; i < l; i++ ) { - if ( eraName === cal.eras[i].name.toLowerCase() ) { - era = i; - break; - } - } - // could not find an era with that name - if ( era === null ) return null; - break; - } - } - } - var result = new Date(), defaultYear, convert = cal.convert; - defaultYear = convert ? convert.fromGregorian( result )[ 0 ] : result.getFullYear(); - if ( year === null ) { - year = defaultYear; - } - else if ( cal.eras ) { - // year must be shifted to normal gregorian year - // but not if year was not specified, its already normal gregorian - // per the main if clause above. - year += cal.eras[( era || 0 )].offset; - } - // set default day and month to 1 and January, so if unspecified, these are the defaults - // instead of the current day/month. - if ( month === null ) { - month = 0; - } - if ( date === null ) { - date = 1; - } - // now have year, month, and date, but in the culture's calendar. - // convert to gregorian if necessary - if ( convert ) { - result = convert.toGregorian( year, month, date ); - // conversion failed, must be an invalid match - if ( result === null ) return null; - } - else { - // have to set year, month and date together to avoid overflow based on current date. - result.setFullYear( year, month, date ); - // check to see if date overflowed for specified month (only checked 1-31 above). - if ( result.getDate() !== date ) return null; - // invalid day of week. - if ( weekDay !== null && result.getDay() !== weekDay ) { - return null; - } - } - // if pm designator token was found make sure the hours fit the 24-hour clock. - if ( pmHour && hour < 12 ) { - hour += 12; - } - result.setHours( hour, min, sec, msec ); - if ( tzMinOffset !== null ) { - // adjust timezone to utc before applying local offset. - var adjustedMin = result.getMinutes() - ( tzMinOffset + result.getTimezoneOffset() ); - // Safari limits hours and minutes to the range of -127 to 127. We need to use setHours - // to ensure both these fields will not exceed this range. adjustedMin will range - // somewhere between -1440 and 1500, so we only need to split this into hours. - result.setHours( result.getHours() + parseInt(adjustedMin / 60, 10), adjustedMin % 60 ); - } - return result; - }; -}()); - -parseNegativePattern = function( value, nf, negativePattern ) { - var neg = nf[ "-" ], - pos = nf[ "+" ], - ret; - switch ( negativePattern ) { - case "n -": - neg = " " + neg; - pos = " " + pos; - // fall through - case "n-": - if ( endsWith(value, neg) ) { - ret = [ "-", value.substr(0, value.length - neg.length) ]; - } - else if ( endsWith(value, pos) ) { - ret = [ "+", value.substr(0, value.length - pos.length) ]; - } - break; - case "- n": - neg += " "; - pos += " "; - // fall through - case "-n": - if ( startsWith(value, neg) ) { - ret = [ "-", value.substr(neg.length) ]; - } - else if ( startsWith(value, pos) ) { - ret = [ "+", value.substr(pos.length) ]; - } - break; - case "(n)": - if ( startsWith(value, "(") && endsWith(value, ")") ) { - ret = [ "-", value.substr(1, value.length - 2) ]; - } - break; - } - return ret || [ "", value ]; -}; - -// -// public instance functions -// - -Globalize.prototype.findClosestCulture = function( cultureSelector ) { - return Globalize.findClosestCulture.call( this, cultureSelector ); -}; - -Globalize.prototype.format = function( value, format, cultureSelector ) { - return Globalize.format.call( this, value, format, cultureSelector ); -}; - -Globalize.prototype.localize = function( key, cultureSelector ) { - return Globalize.localize.call( this, key, cultureSelector ); -}; - -Globalize.prototype.parseInt = function( value, radix, cultureSelector ) { - return Globalize.parseInt.call( this, value, radix, cultureSelector ); -}; - -Globalize.prototype.parseFloat = function( value, radix, cultureSelector ) { - return Globalize.parseFloat.call( this, value, radix, cultureSelector ); -}; - -Globalize.prototype.culture = function( cultureSelector ) { - return Globalize.culture.call( this, cultureSelector ); -}; - -// -// public singleton functions -// - -Globalize.addCultureInfo = function( cultureName, baseCultureName, info ) { - - var base = {}, - isNew = false; - - if ( typeof cultureName !== "string" ) { - // cultureName argument is optional string. If not specified, assume info is first - // and only argument. Specified info deep-extends current culture. - info = cultureName; - cultureName = this.culture().name; - base = this.cultures[ cultureName ]; - } else if ( typeof baseCultureName !== "string" ) { - // baseCultureName argument is optional string. If not specified, assume info is second - // argument. Specified info deep-extends specified culture. - // If specified culture does not exist, create by deep-extending default - info = baseCultureName; - isNew = ( this.cultures[ cultureName ] == null ); - base = this.cultures[ cultureName ] || this.cultures[ "default" ]; - } else { - // cultureName and baseCultureName specified. Assume a new culture is being created - // by deep-extending an specified base culture - isNew = true; - base = this.cultures[ baseCultureName ]; - } - - this.cultures[ cultureName ] = extend(true, {}, - base, - info - ); - // Make the standard calendar the current culture if it's a new culture - if ( isNew ) { - this.cultures[ cultureName ].calendar = this.cultures[ cultureName ].calendars.standard; - } -}; - -Globalize.findClosestCulture = function( name ) { - var match; - if ( !name ) { - return this.cultures[ this.cultureSelector ] || this.cultures[ "default" ]; - } - if ( typeof name === "string" ) { - name = name.split( "," ); - } - if ( isArray(name) ) { - var lang, - cultures = this.cultures, - list = name, - i, l = list.length, - prioritized = []; - for ( i = 0; i < l; i++ ) { - name = trim( list[i] ); - var pri, parts = name.split( ";" ); - lang = trim( parts[0] ); - if ( parts.length === 1 ) { - pri = 1; - } - else { - name = trim( parts[1] ); - if ( name.indexOf("q=") === 0 ) { - name = name.substr( 2 ); - pri = parseFloat( name ); - pri = isNaN( pri ) ? 0 : pri; - } - else { - pri = 1; - } - } - prioritized.push({ lang: lang, pri: pri }); - } - prioritized.sort(function( a, b ) { - return a.pri < b.pri ? 1 : -1; - }); - - // exact match - for ( i = 0; i < l; i++ ) { - lang = prioritized[ i ].lang; - match = cultures[ lang ]; - if ( match ) { - return match; - } - } - - // neutral language match - for ( i = 0; i < l; i++ ) { - lang = prioritized[ i ].lang; - do { - var index = lang.lastIndexOf( "-" ); - if ( index === -1 ) { - break; - } - // strip off the last part. e.g. en-US => en - lang = lang.substr( 0, index ); - match = cultures[ lang ]; - if ( match ) { - return match; - } - } - while ( 1 ); - } - - // last resort: match first culture using that language - for ( i = 0; i < l; i++ ) { - lang = prioritized[ i ].lang; - for ( var cultureKey in cultures ) { - var culture = cultures[ cultureKey ]; - if ( culture.language == lang ) { - return culture; - } - } - } - } - else if ( typeof name === "object" ) { - return name; - } - return match || null; -}; - -Globalize.format = function( value, format, cultureSelector ) { - culture = this.findClosestCulture( cultureSelector ); - if ( value instanceof Date ) { - value = formatDate( value, format, culture ); - } - else if ( typeof value === "number" ) { - value = formatNumber( value, format, culture ); - } - return value; -}; - -Globalize.localize = function( key, cultureSelector ) { - return this.findClosestCulture( cultureSelector ).messages[ key ] || - this.cultures[ "default" ].messages[ key ]; -}; - -Globalize.parseDate = function( value, formats, culture ) { - culture = this.findClosestCulture( culture ); - - var date, prop, patterns; - if ( formats ) { - if ( typeof formats === "string" ) { - formats = [ formats ]; - } - if ( formats.length ) { - for ( var i = 0, l = formats.length; i < l; i++ ) { - var format = formats[ i ]; - if ( format ) { - date = parseExact( value, format, culture ); - if ( date ) { - break; - } - } - } - } - } else { - patterns = culture.calendar.patterns; - for ( prop in patterns ) { - date = parseExact( value, patterns[prop], culture ); - if ( date ) { - break; - } - } - } - - return date || null; -}; - -Globalize.parseInt = function( value, radix, cultureSelector ) { - return truncate( Globalize.parseFloat(value, radix, cultureSelector) ); -}; - -Globalize.parseFloat = function( value, radix, cultureSelector ) { - // radix argument is optional - if ( typeof radix !== "number" ) { - cultureSelector = radix; - radix = 10; - } - - var culture = this.findClosestCulture( cultureSelector ); - var ret = NaN, - nf = culture.numberFormat; - - if ( value.indexOf(culture.numberFormat.currency.symbol) > -1 ) { - // remove currency symbol - value = value.replace( culture.numberFormat.currency.symbol, "" ); - // replace decimal seperator - value = value.replace( culture.numberFormat.currency["."], culture.numberFormat["."] ); - } - - // trim leading and trailing whitespace - value = trim( value ); - - // allow infinity or hexidecimal - if ( regexInfinity.test(value) ) { - ret = parseFloat( value ); - } - else if ( !radix && regexHex.test(value) ) { - ret = parseInt( value, 16 ); - } - else { - - // determine sign and number - var signInfo = parseNegativePattern( value, nf, nf.pattern[0] ), - sign = signInfo[ 0 ], - num = signInfo[ 1 ]; - - // #44 - try parsing as "(n)" - if ( sign === "" && nf.pattern[0] !== "(n)" ) { - signInfo = parseNegativePattern( value, nf, "(n)" ); - sign = signInfo[ 0 ]; - num = signInfo[ 1 ]; - } - - // try parsing as "-n" - if ( sign === "" && nf.pattern[0] !== "-n" ) { - signInfo = parseNegativePattern( value, nf, "-n" ); - sign = signInfo[ 0 ]; - num = signInfo[ 1 ]; - } - - sign = sign || "+"; - - // determine exponent and number - var exponent, - intAndFraction, - exponentPos = num.indexOf( "e" ); - if ( exponentPos < 0 ) exponentPos = num.indexOf( "E" ); - if ( exponentPos < 0 ) { - intAndFraction = num; - exponent = null; - } - else { - intAndFraction = num.substr( 0, exponentPos ); - exponent = num.substr( exponentPos + 1 ); - } - // determine decimal position - var integer, - fraction, - decSep = nf[ "." ], - decimalPos = intAndFraction.indexOf( decSep ); - if ( decimalPos < 0 ) { - integer = intAndFraction; - fraction = null; - } - else { - integer = intAndFraction.substr( 0, decimalPos ); - fraction = intAndFraction.substr( decimalPos + decSep.length ); - } - // handle groups (e.g. 1,000,000) - var groupSep = nf[ "," ]; - integer = integer.split( groupSep ).join( "" ); - var altGroupSep = groupSep.replace( /\u00A0/g, " " ); - if ( groupSep !== altGroupSep ) { - integer = integer.split( altGroupSep ).join( "" ); - } - // build a natively parsable number string - var p = sign + integer; - if ( fraction !== null ) { - p += "." + fraction; - } - if ( exponent !== null ) { - // exponent itself may have a number patternd - var expSignInfo = parseNegativePattern( exponent, nf, "-n" ); - p += "e" + ( expSignInfo[0] || "+" ) + expSignInfo[ 1 ]; - } - if ( regexParseFloat.test(p) ) { - ret = parseFloat( p ); - } - } - return ret; -}; - -Globalize.culture = function( cultureSelector ) { - // setter - if ( typeof cultureSelector !== "undefined" ) { - this.cultureSelector = cultureSelector; - } - // getter - return this.findClosestCulture( cultureSelector ) || this.culture[ "default" ]; -}; - -}( this )); diff --git a/external/jquery.bgiframe-2.1.2.js b/external/jquery.bgiframe-2.1.2.js deleted file mode 100644 index 5cd38bb1d..000000000 --- a/external/jquery.bgiframe-2.1.2.js +++ /dev/null @@ -1,39 +0,0 @@ -/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) - * Licensed under the MIT License (LICENSE.txt). - * - * Version 2.1.2 - */ - -(function($){ - -$.fn.bgiframe = ($.browser.msie && /msie 6\.0/i.test(navigator.userAgent) ? function(s) { - s = $.extend({ - top : 'auto', // auto == .currentStyle.borderTopWidth - left : 'auto', // auto == .currentStyle.borderLeftWidth - width : 'auto', // auto == offsetWidth - height : 'auto', // auto == offsetHeight - opacity : true, - src : 'javascript:false;' - }, s); - var html = '' : ''); - inst._keyEvent = false; - return html; - }, - - /* Generate the month and year header. */ - _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, - secondary, monthNames, monthNamesShort) { - var changeMonth = this._get(inst, 'changeMonth'); - var changeYear = this._get(inst, 'changeYear'); - var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); - var html = '
'; - var monthHtml = ''; - // month selection - if (secondary || !changeMonth) - monthHtml += '' + monthNames[drawMonth] + ''; - else { - var inMinYear = (minDate && minDate.getFullYear() == drawYear); - var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); - monthHtml += ''; - } - if (!showMonthAfterYear) - html += monthHtml + (secondary || !(changeMonth && changeYear) ? ' ' : ''); - // year selection - if ( !inst.yearshtml ) { - inst.yearshtml = ''; - if (secondary || !changeYear) - html += '' + drawYear + ''; - else { - // determine range of years to display - var years = this._get(inst, 'yearRange').split(':'); - var thisYear = new Date().getFullYear(); - var determineYear = function(value) { - var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : - (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : - parseInt(value, 10))); - return (isNaN(year) ? thisYear : year); - }; - var year = determineYear(years[0]); - var endYear = Math.max(year, determineYear(years[1] || '')); - year = (minDate ? Math.max(year, minDate.getFullYear()) : year); - endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); - inst.yearshtml += ''; - - html += inst.yearshtml; - inst.yearshtml = null; - } - } - html += this._get(inst, 'yearSuffix'); - if (showMonthAfterYear) - html += (secondary || !(changeMonth && changeYear) ? ' ' : '') + monthHtml; - html += '
'; // Close datepicker_header - return html; - }, - - /* Adjust one of the date sub-fields. */ - _adjustInstDate: function(inst, offset, period) { - var year = inst.drawYear + (period == 'Y' ? offset : 0); - var month = inst.drawMonth + (period == 'M' ? offset : 0); - var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + - (period == 'D' ? offset : 0); - var date = this._restrictMinMax(inst, - this._daylightSavingAdjust(new Date(year, month, day))); - inst.selectedDay = date.getDate(); - inst.drawMonth = inst.selectedMonth = date.getMonth(); - inst.drawYear = inst.selectedYear = date.getFullYear(); - if (period == 'M' || period == 'Y') - this._notifyChange(inst); - }, - - /* Ensure a date is within any min/max bounds. */ - _restrictMinMax: function(inst, date) { - var minDate = this._getMinMaxDate(inst, 'min'); - var maxDate = this._getMinMaxDate(inst, 'max'); - var newDate = (minDate && date < minDate ? minDate : date); - newDate = (maxDate && newDate > maxDate ? maxDate : newDate); - return newDate; - }, - - /* Notify change of month/year. */ - _notifyChange: function(inst) { - var onChange = this._get(inst, 'onChangeMonthYear'); - if (onChange) - onChange.apply((inst.input ? inst.input[0] : null), - [inst.selectedYear, inst.selectedMonth + 1, inst]); - }, - - /* Determine the number of months to show. */ - _getNumberOfMonths: function(inst) { - var numMonths = this._get(inst, 'numberOfMonths'); - return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); - }, - - /* Determine the current maximum date - ensure no time components are set. */ - _getMinMaxDate: function(inst, minMax) { - return this._determineDate(inst, this._get(inst, minMax + 'Date'), null); - }, - - /* Find the number of days in a given month. */ - _getDaysInMonth: function(year, month) { - return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); - }, - - /* Find the day of the week of the first of a month. */ - _getFirstDayOfMonth: function(year, month) { - return new Date(year, month, 1).getDay(); - }, - - /* Determines if we should allow a "next/prev" month display change. */ - _canAdjustMonth: function(inst, offset, curYear, curMonth) { - var numMonths = this._getNumberOfMonths(inst); - var date = this._daylightSavingAdjust(new Date(curYear, - curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); - if (offset < 0) - date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); - return this._isInRange(inst, date); - }, - - /* Is the given date in the accepted range? */ - _isInRange: function(inst, date) { - var minDate = this._getMinMaxDate(inst, 'min'); - var maxDate = this._getMinMaxDate(inst, 'max'); - return ((!minDate || date.getTime() >= minDate.getTime()) && - (!maxDate || date.getTime() <= maxDate.getTime())); - }, - - /* Provide the configuration settings for formatting/parsing. */ - _getFormatConfig: function(inst) { - var shortYearCutoff = this._get(inst, 'shortYearCutoff'); - shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : - new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); - return {shortYearCutoff: shortYearCutoff, - dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), - monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; - }, - - /* Format the given date for display. */ - _formatDate: function(inst, day, month, year) { - if (!day) { - inst.currentDay = inst.selectedDay; - inst.currentMonth = inst.selectedMonth; - inst.currentYear = inst.selectedYear; - } - var date = (day ? (typeof day == 'object' ? day : - this._daylightSavingAdjust(new Date(year, month, day))) : - this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); - return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); - } -}); - -/* - * Bind hover events for datepicker elements. - * Done via delegate so the binding only occurs once in the lifetime of the parent div. - * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. - */ -function bindHover(dpDiv) { - var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a'; - return dpDiv.delegate(selector, 'mouseout', function() { - $(this).removeClass('ui-state-hover'); - if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover'); - if (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover'); - }) - .delegate(selector, 'mouseover', function(){ - if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { - $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); - $(this).addClass('ui-state-hover'); - if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover'); - if (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover'); - } - }); -} - -/* jQuery extend now ignores nulls! */ -function extendRemove(target, props) { - $.extend(target, props); - for (var name in props) - if (props[name] == null || props[name] == undefined) - target[name] = props[name]; - return target; -}; - -/* Invoke the datepicker functionality. - @param options string - a command, optionally followed by additional parameters or - Object - settings for attaching new datepicker functionality - @return jQuery object */ -$.fn.datepicker = function(options){ - - /* Verify an empty collection wasn't passed - Fixes #6976 */ - if ( !this.length ) { - return this; - } - - /* Initialise the date picker. */ - if (!$.datepicker.initialized) { - $(document).mousedown($.datepicker._checkExternalClick). - find(document.body).append($.datepicker.dpDiv); - $.datepicker.initialized = true; - } - - var otherArgs = Array.prototype.slice.call(arguments, 1); - if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) - return $.datepicker['_' + options + 'Datepicker']. - apply($.datepicker, [this[0]].concat(otherArgs)); - if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') - return $.datepicker['_' + options + 'Datepicker']. - apply($.datepicker, [this[0]].concat(otherArgs)); - return this.each(function() { - typeof options == 'string' ? - $.datepicker['_' + options + 'Datepicker']. - apply($.datepicker, [this].concat(otherArgs)) : - $.datepicker._attachDatepicker(this, options); - }); -}; - -$.datepicker = new Datepicker(); // singleton instance -$.datepicker.initialized = false; -$.datepicker.uuid = new Date().getTime(); -$.datepicker.version = "@VERSION"; - -// Workaround for #4055 -// Add another global to avoid noConflict issues with inline event handlers -window['DP_jQuery_' + dpuuid] = $; - -})(jQuery); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js deleted file mode 100644 index a031eb5e0..000000000 --- a/ui/jquery.ui.dialog.js +++ /dev/null @@ -1,858 +0,0 @@ -/*! - * jQuery UI Dialog @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/dialog/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function( $, undefined ) { - -var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ", - sizeRelatedOptions = { - buttons: true, - height: true, - maxHeight: true, - maxWidth: true, - minHeight: true, - minWidth: true, - width: true - }, - resizableRelatedOptions = { - maxHeight: true, - maxWidth: true, - minHeight: true, - minWidth: true - }; - -$.widget("ui.dialog", { - version: "@VERSION", - options: { - autoOpen: true, - buttons: {}, - closeOnEscape: true, - closeText: "close", - dialogClass: "", - draggable: true, - hide: null, - height: "auto", - maxHeight: false, - maxWidth: false, - minHeight: 150, - minWidth: 150, - modal: false, - position: { - my: "center", - at: "center", - of: window, - collision: "fit", - // ensure that the titlebar is never outside the document - using: function( pos ) { - var topOffset = $( this ).css( pos ).offset().top; - if ( topOffset < 0 ) { - $( this ).css( "top", pos.top - topOffset ); - } - } - }, - resizable: true, - show: null, - stack: true, - title: "", - width: 300, - zIndex: 1000 - }, - - _create: function() { - this.originalTitle = this.element.attr( "title" ); - // #5742 - .attr() might return a DOMElement - if ( typeof this.originalTitle !== "string" ) { - this.originalTitle = ""; - } - this.oldPosition = { - parent: this.element.parent(), - index: this.element.parent().children().index( this.element ) - }; - this.options.title = this.options.title || this.originalTitle; - var that = this, - options = this.options, - - title = options.title || " ", - uiDialog, - uiDialogTitlebar, - uiDialogTitlebarClose, - uiDialogTitle, - uiDialogButtonPane; - - uiDialog = ( this.uiDialog = $( "
" ) ) - .addClass( uiDialogClasses + options.dialogClass ) - .css({ - display: "none", - outline: 0, // TODO: move to stylesheet - zIndex: options.zIndex - }) - // setting tabIndex makes the div focusable - .attr( "tabIndex", -1) - .keydown(function( event ) { - if ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && - event.keyCode === $.ui.keyCode.ESCAPE ) { - that.close( event ); - event.preventDefault(); - } - }) - .mousedown(function( event ) { - that.moveToTop( false, event ); - }) - .appendTo( "body" ); - - this.element - .show() - .removeAttr( "title" ) - .addClass( "ui-dialog-content ui-widget-content" ) - .appendTo( uiDialog ); - - uiDialogTitlebar = ( this.uiDialogTitlebar = $( "
" ) ) - .addClass( "ui-dialog-titlebar ui-widget-header " + - "ui-corner-all ui-helper-clearfix" ) - .bind( "mousedown", function() { - // Dialog isn't getting focus when dragging (#8063) - uiDialog.focus(); - }) - .prependTo( uiDialog ); - - uiDialogTitlebarClose = $( "" ) - .addClass( "ui-dialog-titlebar-close ui-corner-all" ) - .attr( "role", "button" ) - .click(function( event ) { - event.preventDefault(); - that.close( event ); - }) - .appendTo( uiDialogTitlebar ); - - ( this.uiDialogTitlebarCloseText = $( "" ) ) - .addClass( "ui-icon ui-icon-closethick" ) - .text( options.closeText ) - .appendTo( uiDialogTitlebarClose ); - - uiDialogTitle = $( "" ) - .uniqueId() - .addClass( "ui-dialog-title" ) - .html( title ) - .prependTo( uiDialogTitlebar ); - - uiDialogButtonPane = ( this.uiDialogButtonPane = $( "
" ) ) - .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ); - - ( this.uiButtonSet = $( "
" ) ) - .addClass( "ui-dialog-buttonset" ) - .appendTo( uiDialogButtonPane ); - - uiDialog.attr({ - role: "dialog", - "aria-labelledby": uiDialogTitle.attr( "id" ) - }); - - uiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection(); - this._hoverable( uiDialogTitlebarClose ); - this._focusable( uiDialogTitlebarClose ); - - if ( options.draggable && $.fn.draggable ) { - this._makeDraggable(); - } - if ( options.resizable && $.fn.resizable ) { - this._makeResizable(); - } - - this._createButtons( options.buttons ); - this._isOpen = false; - - if ( $.fn.bgiframe ) { - uiDialog.bgiframe(); - } - - // prevent tabbing out of modal dialogs - this._on( uiDialog, { keydown: function( event ) { - if ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) { - return; - } - - var tabbables = $( ":tabbable", uiDialog ), - first = tabbables.filter( ":first" ), - last = tabbables.filter( ":last" ); - - if ( event.target === last[0] && !event.shiftKey ) { - first.focus( 1 ); - return false; - } else if ( event.target === first[0] && event.shiftKey ) { - last.focus( 1 ); - return false; - } - }}); - }, - - _init: function() { - if ( this.options.autoOpen ) { - this.open(); - } - }, - - _destroy: function() { - var next, - oldPosition = this.oldPosition; - - if ( this.overlay ) { - this.overlay.destroy(); - } - this.uiDialog.hide(); - this.element - .removeClass( "ui-dialog-content ui-widget-content" ) - .hide() - .appendTo( "body" ); - this.uiDialog.remove(); - - if ( this.originalTitle ) { - this.element.attr( "title", this.originalTitle ); - } - - next = oldPosition.parent.children().eq( oldPosition.index ); - // Don't try to place the dialog next to itself (#8613) - if ( next.length && next[ 0 ] !== this.element[ 0 ] ) { - next.before( this.element ); - } else { - oldPosition.parent.append( this.element ); - } - }, - - widget: function() { - return this.uiDialog; - }, - - close: function( event ) { - var that = this, - maxZ, thisZ; - - if ( !this._isOpen ) { - return; - } - - if ( false === this._trigger( "beforeClose", event ) ) { - return; - } - - this._isOpen = false; - - if ( this.overlay ) { - this.overlay.destroy(); - } - - if ( this.options.hide ) { - this._hide( this.uiDialog, this.options.hide, function() { - that._trigger( "close", event ); - }); - } else { - this.uiDialog.hide(); - this._trigger( "close", event ); - } - - $.ui.dialog.overlay.resize(); - - // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) - if ( this.options.modal ) { - maxZ = 0; - $( ".ui-dialog" ).each(function() { - if ( this !== that.uiDialog[0] ) { - thisZ = $( this ).css( "z-index" ); - if ( !isNaN( thisZ ) ) { - maxZ = Math.max( maxZ, thisZ ); - } - } - }); - $.ui.dialog.maxZ = maxZ; - } - - return this; - }, - - isOpen: function() { - return this._isOpen; - }, - - // the force parameter allows us to move modal dialogs to their correct - // position on open - moveToTop: function( force, event ) { - var options = this.options, - saveScroll; - - if ( ( options.modal && !force ) || - ( !options.stack && !options.modal ) ) { - return this._trigger( "focus", event ); - } - - if ( options.zIndex > $.ui.dialog.maxZ ) { - $.ui.dialog.maxZ = options.zIndex; - } - if ( this.overlay ) { - $.ui.dialog.maxZ += 1; - $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; - this.overlay.$el.css( "z-index", $.ui.dialog.overlay.maxZ ); - } - - // Save and then restore scroll - // Opera 9.5+ resets when parent z-index is changed. - // http://bugs.jqueryui.com/ticket/3193 - saveScroll = { - scrollTop: this.element.scrollTop(), - scrollLeft: this.element.scrollLeft() - }; - $.ui.dialog.maxZ += 1; - this.uiDialog.css( "z-index", $.ui.dialog.maxZ ); - this.element.attr( saveScroll ); - this._trigger( "focus", event ); - - return this; - }, - - open: function() { - if ( this._isOpen ) { - return; - } - - var hasFocus, - options = this.options, - uiDialog = this.uiDialog; - - this._size(); - this._position( options.position ); - uiDialog.show( options.show ); - this.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null; - this.moveToTop( true ); - - // set focus to the first tabbable element in the content area or the first button - // if there are no tabbable elements, set focus on the dialog itself - hasFocus = this.element.find( ":tabbable" ); - if ( !hasFocus.length ) { - hasFocus = this.uiDialogButtonPane.find( ":tabbable" ); - if ( !hasFocus.length ) { - hasFocus = uiDialog; - } - } - hasFocus.eq( 0 ).focus(); - - this._isOpen = true; - this._trigger( "open" ); - - return this; - }, - - _createButtons: function( buttons ) { - var that = this, - hasButtons = false; - - // if we already have a button pane, remove it - this.uiDialogButtonPane.remove(); - this.uiButtonSet.empty(); - - if ( typeof buttons === "object" && buttons !== null ) { - $.each( buttons, function() { - return !(hasButtons = true); - }); - } - if ( hasButtons ) { - $.each( buttons, function( name, props ) { - var button, click; - props = $.isFunction( props ) ? - { click: props, text: name } : - props; - // Default to a non-submitting button - props = $.extend( { type: "button" }, props ); - // Change the context for the click callback to be the main element - click = props.click; - props.click = function() { - click.apply( that.element[0], arguments ); - }; - button = $( "", props ) - .appendTo( that.uiButtonSet ); - if ( $.fn.button ) { - button.button(); - } - }); - this.uiDialog.addClass( "ui-dialog-buttons" ); - this.uiDialogButtonPane.appendTo( this.uiDialog ); - } else { - this.uiDialog.removeClass( "ui-dialog-buttons" ); - } - }, - - _makeDraggable: function() { - var that = this, - options = this.options; - - function filteredUi( ui ) { - return { - position: ui.position, - offset: ui.offset - }; - } - - this.uiDialog.draggable({ - cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", - handle: ".ui-dialog-titlebar", - containment: "document", - start: function( event, ui ) { - $( this ) - .addClass( "ui-dialog-dragging" ); - that._trigger( "dragStart", event, filteredUi( ui ) ); - }, - drag: function( event, ui ) { - that._trigger( "drag", event, filteredUi( ui ) ); - }, - stop: function( event, ui ) { - options.position = [ - ui.position.left - that.document.scrollLeft(), - ui.position.top - that.document.scrollTop() - ]; - $( this ) - .removeClass( "ui-dialog-dragging" ); - that._trigger( "dragStop", event, filteredUi( ui ) ); - $.ui.dialog.overlay.resize(); - } - }); - }, - - _makeResizable: function( handles ) { - handles = (handles === undefined ? this.options.resizable : handles); - var that = this, - options = this.options, - // .ui-resizable has position: relative defined in the stylesheet - // but dialogs have to use absolute or fixed positioning - position = this.uiDialog.css( "position" ), - resizeHandles = typeof handles === 'string' ? - handles : - "n,e,s,w,se,sw,ne,nw"; - - function filteredUi( ui ) { - return { - originalPosition: ui.originalPosition, - originalSize: ui.originalSize, - position: ui.position, - size: ui.size - }; - } - - this.uiDialog.resizable({ - cancel: ".ui-dialog-content", - containment: "document", - alsoResize: this.element, - maxWidth: options.maxWidth, - maxHeight: options.maxHeight, - minWidth: options.minWidth, - minHeight: this._minHeight(), - handles: resizeHandles, - start: function( event, ui ) { - $( this ).addClass( "ui-dialog-resizing" ); - that._trigger( "resizeStart", event, filteredUi( ui ) ); - }, - resize: function( event, ui ) { - that._trigger( "resize", event, filteredUi( ui ) ); - }, - stop: function( event, ui ) { - $( this ).removeClass( "ui-dialog-resizing" ); - options.height = $( this ).height(); - options.width = $( this ).width(); - that._trigger( "resizeStop", event, filteredUi( ui ) ); - $.ui.dialog.overlay.resize(); - } - }) - .css( "position", position ) - .find( ".ui-resizable-se" ) - .addClass( "ui-icon ui-icon-grip-diagonal-se" ); - }, - - _minHeight: function() { - var options = this.options; - - if ( options.height === "auto" ) { - return options.minHeight; - } else { - return Math.min( options.minHeight, options.height ); - } - }, - - _position: function( position ) { - var myAt = [], - offset = [ 0, 0 ], - isVisible; - - if ( position ) { - // deep extending converts arrays to objects in jQuery <= 1.3.2 :-( - // if (typeof position == 'string' || $.isArray(position)) { - // myAt = $.isArray(position) ? position : position.split(' '); - - if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) { - myAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ]; - if ( myAt.length === 1 ) { - myAt[ 1 ] = myAt[ 0 ]; - } - - $.each( [ "left", "top" ], function( i, offsetPosition ) { - if ( +myAt[ i ] === myAt[ i ] ) { - offset[ i ] = myAt[ i ]; - myAt[ i ] = offsetPosition; - } - }); - - position = { - my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + - myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), - at: myAt.join( " " ) - }; - } - - position = $.extend( {}, $.ui.dialog.prototype.options.position, position ); - } else { - position = $.ui.dialog.prototype.options.position; - } - - // need to show the dialog to get the actual offset in the position plugin - isVisible = this.uiDialog.is( ":visible" ); - if ( !isVisible ) { - this.uiDialog.show(); - } - this.uiDialog.position( position ); - if ( !isVisible ) { - this.uiDialog.hide(); - } - }, - - _setOptions: function( options ) { - var that = this, - resizableOptions = {}, - resize = false; - - $.each( options, function( key, value ) { - that._setOption( key, value ); - - if ( key in sizeRelatedOptions ) { - resize = true; - } - if ( key in resizableRelatedOptions ) { - resizableOptions[ key ] = value; - } - }); - - if ( resize ) { - this._size(); - } - if ( this.uiDialog.is( ":data(resizable)" ) ) { - this.uiDialog.resizable( "option", resizableOptions ); - } - }, - - _setOption: function( key, value ) { - var isDraggable, isResizable, - uiDialog = this.uiDialog; - - switch ( key ) { - case "buttons": - this._createButtons( value ); - break; - case "closeText": - // ensure that we always pass a string - this.uiDialogTitlebarCloseText.text( "" + value ); - break; - case "dialogClass": - uiDialog - .removeClass( this.options.dialogClass ) - .addClass( uiDialogClasses + value ); - break; - case "disabled": - if ( value ) { - uiDialog.addClass( "ui-dialog-disabled" ); - } else { - uiDialog.removeClass( "ui-dialog-disabled" ); - } - break; - case "draggable": - isDraggable = uiDialog.is( ":data(draggable)" ); - if ( isDraggable && !value ) { - uiDialog.draggable( "destroy" ); - } - - if ( !isDraggable && value ) { - this._makeDraggable(); - } - break; - case "position": - this._position( value ); - break; - case "resizable": - // currently resizable, becoming non-resizable - isResizable = uiDialog.is( ":data(resizable)" ); - if ( isResizable && !value ) { - uiDialog.resizable( "destroy" ); - } - - // currently resizable, changing handles - if ( isResizable && typeof value === "string" ) { - uiDialog.resizable( "option", "handles", value ); - } - - // currently non-resizable, becoming resizable - if ( !isResizable && value !== false ) { - this._makeResizable( value ); - } - break; - case "title": - // convert whatever was passed in o a string, for html() to not throw up - $( ".ui-dialog-title", this.uiDialogTitlebar ) - .html( "" + ( value || " " ) ); - break; - } - - this._super( key, value ); - }, - - _size: function() { - /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content - * divs will both have width and height set, so we need to reset them - */ - var nonContentHeight, minContentHeight, autoHeight, - options = this.options, - isVisible = this.uiDialog.is( ":visible" ); - - // reset content sizing - this.element.show().css({ - width: "auto", - minHeight: 0, - height: 0 - }); - - if ( options.minWidth > options.width ) { - options.width = options.minWidth; - } - - // reset wrapper sizing - // determine the height of all the non-content elements - nonContentHeight = this.uiDialog.css({ - height: "auto", - width: options.width - }) - .outerHeight(); - minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); - - if ( options.height === "auto" ) { - // only needed for IE6 support - if ( $.support.minHeight ) { - this.element.css({ - minHeight: minContentHeight, - height: "auto" - }); - } else { - this.uiDialog.show(); - autoHeight = this.element.css( "height", "auto" ).height(); - if ( !isVisible ) { - this.uiDialog.hide(); - } - this.element.height( Math.max( autoHeight, minContentHeight ) ); - } - } else { - this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); - } - - if (this.uiDialog.is( ":data(resizable)" ) ) { - this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); - } - } -}); - -$.extend($.ui.dialog, { - uuid: 0, - maxZ: 0, - - getTitleId: function($el) { - var id = $el.attr( "id" ); - if ( !id ) { - this.uuid += 1; - id = this.uuid; - } - return "ui-dialog-title-" + id; - }, - - overlay: function( dialog ) { - this.$el = $.ui.dialog.overlay.create( dialog ); - } -}); - -$.extend( $.ui.dialog.overlay, { - instances: [], - // reuse old instances due to IE memory leak with alpha transparency (see #5185) - oldInstances: [], - maxZ: 0, - events: $.map( - "focus,mousedown,mouseup,keydown,keypress,click".split( "," ), - function( event ) { - return event + ".dialog-overlay"; - } - ).join( " " ), - create: function( dialog ) { - if ( this.instances.length === 0 ) { - // prevent use of anchors and inputs - // we use a setTimeout in case the overlay is created from an - // event that we're going to be cancelling (see #2804) - setTimeout(function() { - // handle $(el).dialog().dialog('close') (see #4065) - if ( $.ui.dialog.overlay.instances.length ) { - $( document ).bind( $.ui.dialog.overlay.events, function( event ) { - // stop events if the z-index of the target is < the z-index of the overlay - // we cannot return true when we don't want to cancel the event (#3523) - if ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) { - return false; - } - }); - } - }, 1 ); - - // handle window resize - $( window ).bind( "resize.dialog-overlay", $.ui.dialog.overlay.resize ); - } - - var $el = ( this.oldInstances.pop() || $( "
" ).addClass( "ui-widget-overlay" ) ); - - // allow closing by pressing the escape key - $( document ).bind( "keydown.dialog-overlay", function( event ) { - var instances = $.ui.dialog.overlay.instances; - // only react to the event if we're the top overlay - if ( instances.length !== 0 && instances[ instances.length - 1 ] === $el && - dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && - event.keyCode === $.ui.keyCode.ESCAPE ) { - - dialog.close( event ); - event.preventDefault(); - } - }); - - $el.appendTo( document.body ).css({ - width: this.width(), - height: this.height() - }); - - if ( $.fn.bgiframe ) { - $el.bgiframe(); - } - - this.instances.push( $el ); - return $el; - }, - - destroy: function( $el ) { - var indexOf = $.inArray( $el, this.instances ), - maxZ = 0; - - if ( indexOf !== -1 ) { - this.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] ); - } - - if ( this.instances.length === 0 ) { - $( [ document, window ] ).unbind( ".dialog-overlay" ); - } - - $el.height( 0 ).width( 0 ).remove(); - - // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) - $.each( this.instances, function() { - maxZ = Math.max( maxZ, this.css( "z-index" ) ); - }); - this.maxZ = maxZ; - }, - - height: function() { - var scrollHeight, - offsetHeight; - // handle IE - if ( $.ui.ie ) { - scrollHeight = Math.max( - document.documentElement.scrollHeight, - document.body.scrollHeight - ); - offsetHeight = Math.max( - document.documentElement.offsetHeight, - document.body.offsetHeight - ); - - if ( scrollHeight < offsetHeight ) { - return $( window ).height() + "px"; - } else { - return scrollHeight + "px"; - } - // handle "good" browsers - } else { - return $( document ).height() + "px"; - } - }, - - width: function() { - var scrollWidth, - offsetWidth; - // handle IE - if ( $.ui.ie ) { - scrollWidth = Math.max( - document.documentElement.scrollWidth, - document.body.scrollWidth - ); - offsetWidth = Math.max( - document.documentElement.offsetWidth, - document.body.offsetWidth - ); - - if ( scrollWidth < offsetWidth ) { - return $( window ).width() + "px"; - } else { - return scrollWidth + "px"; - } - // handle "good" browsers - } else { - return $( document ).width() + "px"; - } - }, - - resize: function() { - /* If the dialog is draggable and the user drags it past the - * right edge of the window, the document becomes wider so we - * need to stretch the overlay. If the user then drags the - * dialog back to the left, the document will become narrower, - * so we need to shrink the overlay to the appropriate size. - * This is handled by shrinking the overlay before setting it - * to the full document size. - */ - var $overlays = $( [] ); - $.each( $.ui.dialog.overlay.instances, function() { - $overlays = $overlays.add( this ); - }); - - $overlays.css({ - width: 0, - height: 0 - }).css({ - width: $.ui.dialog.overlay.width(), - height: $.ui.dialog.overlay.height() - }); - } -}); - -$.extend( $.ui.dialog.overlay.prototype, { - destroy: function() { - $.ui.dialog.overlay.destroy( this.$el ); - } -}); - -}( jQuery ) ); diff --git a/ui/jquery.ui.draggable.js b/ui/jquery.ui.draggable.js deleted file mode 100644 index aa6275252..000000000 --- a/ui/jquery.ui.draggable.js +++ /dev/null @@ -1,836 +0,0 @@ -/*! - * jQuery UI Draggable @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/draggable/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -$.widget("ui.draggable", $.ui.mouse, { - version: "@VERSION", - widgetEventPrefix: "drag", - options: { - addClasses: true, - appendTo: "parent", - axis: false, - connectToSortable: false, - containment: false, - cursor: "auto", - cursorAt: false, - grid: false, - handle: false, - helper: "original", - iframeFix: false, - opacity: false, - refreshPositions: false, - revert: false, - revertDuration: 500, - scope: "default", - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - snap: false, - snapMode: "both", - snapTolerance: 20, - stack: false, - zIndex: false - }, - _create: function() { - - if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position"))) - this.element[0].style.position = 'relative'; - - (this.options.addClasses && this.element.addClass("ui-draggable")); - (this.options.disabled && this.element.addClass("ui-draggable-disabled")); - - this._mouseInit(); - - }, - - _destroy: function() { - this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); - this._mouseDestroy(); - }, - - _mouseCapture: function(event) { - - var o = this.options; - - // among others, prevent a drag on a resizable-handle - if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) - return false; - - //Quit if we're not on a valid handle - this.handle = this._getHandle(event); - if (!this.handle) - return false; - - $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { - $('
') - .css({ - width: this.offsetWidth+"px", height: this.offsetHeight+"px", - position: "absolute", opacity: "0.001", zIndex: 1000 - }) - .css($(this).offset()) - .appendTo("body"); - }); - - return true; - - }, - - _mouseStart: function(event) { - - var o = this.options; - - //Create and append the visible helper - this.helper = this._createHelper(event); - - this.helper.addClass("ui-draggable-dragging"); - - //Cache the helper size - this._cacheHelperProportions(); - - //If ddmanager is used for droppables, set the global draggable - if($.ui.ddmanager) - $.ui.ddmanager.current = this; - - /* - * - Position generation - - * This block generates everything position related - it's the core of draggables. - */ - - //Cache the margins of the original element - this._cacheMargins(); - - //Store the helper's css position - this.cssPosition = this.helper.css("position"); - this.scrollParent = this.helper.scrollParent(); - - //The element's absolute position on the page minus margins - this.offset = this.positionAbs = this.element.offset(); - this.offset = { - top: this.offset.top - this.margins.top, - left: this.offset.left - this.margins.left - }; - - $.extend(this.offset, { - click: { //Where the click happened, relative to the element - left: event.pageX - this.offset.left, - top: event.pageY - this.offset.top - }, - parent: this._getParentOffset(), - relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper - }); - - //Generate the original position - this.originalPosition = this.position = this._generatePosition(event); - this.originalPageX = event.pageX; - this.originalPageY = event.pageY; - - //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied - (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); - - //Set a containment if given in the options - if(o.containment) - this._setContainment(); - - //Trigger event + callbacks - if(this._trigger("start", event) === false) { - this._clear(); - return false; - } - - //Recache the helper size - this._cacheHelperProportions(); - - //Prepare the droppable offsets - if ($.ui.ddmanager && !o.dropBehaviour) - $.ui.ddmanager.prepareOffsets(this, event); - - - this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position - - //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) - if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event); - - return true; - }, - - _mouseDrag: function(event, noPropagation) { - - //Compute the helpers position - this.position = this._generatePosition(event); - this.positionAbs = this._convertPositionTo("absolute"); - - //Call plugins and callbacks and use the resulting position if something is returned - if (!noPropagation) { - var ui = this._uiHash(); - if(this._trigger('drag', event, ui) === false) { - this._mouseUp({}); - return false; - } - this.position = ui.position; - } - - if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px'; - if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px'; - if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); - - return false; - }, - - _mouseStop: function(event) { - - //If we are using droppables, inform the manager about the drop - var dropped = false; - if ($.ui.ddmanager && !this.options.dropBehaviour) - dropped = $.ui.ddmanager.drop(this, event); - - //if a drop comes from outside (a sortable) - if(this.dropped) { - dropped = this.dropped; - this.dropped = false; - } - - //if the original element is no longer in the DOM don't bother to continue (see #8269) - var element = this.element[0], elementInDom = false; - while ( element && (element = element.parentNode) ) { - if (element == document ) { - elementInDom = true; - } - } - if ( !elementInDom && this.options.helper === "original" ) - return false; - - if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { - var that = this; - $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { - if(that._trigger("stop", event) !== false) { - that._clear(); - } - }); - } else { - if(this._trigger("stop", event) !== false) { - this._clear(); - } - } - - return false; - }, - - _mouseUp: function(event) { - //Remove frame helpers - $("div.ui-draggable-iframeFix").each(function() { - this.parentNode.removeChild(this); - }); - - //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) - if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event); - - return $.ui.mouse.prototype._mouseUp.call(this, event); - }, - - cancel: function() { - - if(this.helper.is(".ui-draggable-dragging")) { - this._mouseUp({}); - } else { - this._clear(); - } - - return this; - - }, - - _getHandle: function(event) { - - var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false; - $(this.options.handle, this.element) - .find("*") - .andSelf() - .each(function() { - if(this == event.target) handle = true; - }); - - return handle; - - }, - - _createHelper: function(event) { - - var o = this.options; - var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element); - - if(!helper.parents('body').length) - helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo)); - - if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) - helper.css("position", "absolute"); - - return helper; - - }, - - _adjustOffsetFromHelper: function(obj) { - if (typeof obj == 'string') { - obj = obj.split(' '); - } - if ($.isArray(obj)) { - obj = {left: +obj[0], top: +obj[1] || 0}; - } - if ('left' in obj) { - this.offset.click.left = obj.left + this.margins.left; - } - if ('right' in obj) { - this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; - } - if ('top' in obj) { - this.offset.click.top = obj.top + this.margins.top; - } - if ('bottom' in obj) { - this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; - } - }, - - _getParentOffset: function() { - - //Get the offsetParent and cache its position - this.offsetParent = this.helper.offsetParent(); - var po = this.offsetParent.offset(); - - // This is a special case where we need to modify a offset calculated on start, since the following happened: - // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent - // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that - // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag - if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) { - po.left += this.scrollParent.scrollLeft(); - po.top += this.scrollParent.scrollTop(); - } - - if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information - || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix - po = { top: 0, left: 0 }; - - return { - top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), - left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) - }; - - }, - - _getRelativeOffset: function() { - - if(this.cssPosition == "relative") { - var p = this.element.position(); - return { - top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), - left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() - }; - } else { - return { top: 0, left: 0 }; - } - - }, - - _cacheMargins: function() { - this.margins = { - left: (parseInt(this.element.css("marginLeft"),10) || 0), - top: (parseInt(this.element.css("marginTop"),10) || 0), - right: (parseInt(this.element.css("marginRight"),10) || 0), - bottom: (parseInt(this.element.css("marginBottom"),10) || 0) - }; - }, - - _cacheHelperProportions: function() { - this.helperProportions = { - width: this.helper.outerWidth(), - height: this.helper.outerHeight() - }; - }, - - _setContainment: function() { - - var o = this.options; - if(o.containment == 'parent') o.containment = this.helper[0].parentNode; - if(o.containment == 'document' || o.containment == 'window') this.containment = [ - o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, - o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, - (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, - (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top - ]; - - if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) { - var c = $(o.containment); - var ce = c[0]; if(!ce) return; - var co = c.offset(); - var over = ($(ce).css("overflow") != 'hidden'); - - this.containment = [ - (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0), - (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0), - (over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, - (over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom - ]; - this.relative_container = c; - - } else if(o.containment.constructor == Array) { - this.containment = o.containment; - } - - }, - - _convertPositionTo: function(d, pos) { - - if(!pos) pos = this.position; - var mod = d == "absolute" ? 1 : -1; - var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - return { - top: ( - pos.top // The absolute mouse position - + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent - + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border) - - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) - ), - left: ( - pos.left // The absolute mouse position - + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent - + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border) - - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) - ) - }; - - }, - - _generatePosition: function(event) { - - var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - var pageX = event.pageX; - var pageY = event.pageY; - - /* - * - Position constraining - - * Constrain the position to a mix of grid, containment. - */ - - if(this.originalPosition) { //If we are not dragging yet, we won't check for options - var containment; - if(this.containment) { - if (this.relative_container){ - var co = this.relative_container.offset(); - containment = [ this.containment[0] + co.left, - this.containment[1] + co.top, - this.containment[2] + co.left, - this.containment[3] + co.top ]; - } - else { - containment = this.containment; - } - - if(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left; - if(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top; - if(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left; - if(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top; - } - - if(o.grid) { - //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) - var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; - pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; - - var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; - pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; - } - - } - - return { - top: ( - pageY // The absolute mouse position - - this.offset.click.top // Click offset (relative to the element) - - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent - - this.offset.parent.top // The offsetParent's offset without borders (offset + border) - + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) - ), - left: ( - pageX // The absolute mouse position - - this.offset.click.left // Click offset (relative to the element) - - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent - - this.offset.parent.left // The offsetParent's offset without borders (offset + border) - + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) - ) - }; - - }, - - _clear: function() { - this.helper.removeClass("ui-draggable-dragging"); - if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove(); - //if($.ui.ddmanager) $.ui.ddmanager.current = null; - this.helper = null; - this.cancelHelperRemoval = false; - }, - - // From now on bulk stuff - mainly helpers - - _trigger: function(type, event, ui) { - ui = ui || this._uiHash(); - $.ui.plugin.call(this, type, [event, ui]); - if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins - return $.Widget.prototype._trigger.call(this, type, event, ui); - }, - - plugins: {}, - - _uiHash: function(event) { - return { - helper: this.helper, - position: this.position, - originalPosition: this.originalPosition, - offset: this.positionAbs - }; - } - -}); - -$.ui.plugin.add("draggable", "connectToSortable", { - start: function(event, ui) { - - var inst = $(this).data("draggable"), o = inst.options, - uiSortable = $.extend({}, ui, { item: inst.element }); - inst.sortables = []; - $(o.connectToSortable).each(function() { - var sortable = $.data(this, 'sortable'); - if (sortable && !sortable.options.disabled) { - inst.sortables.push({ - instance: sortable, - shouldRevert: sortable.options.revert - }); - sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page). - sortable._trigger("activate", event, uiSortable); - } - }); - - }, - stop: function(event, ui) { - - //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper - var inst = $(this).data("draggable"), - uiSortable = $.extend({}, ui, { item: inst.element }); - - $.each(inst.sortables, function() { - if(this.instance.isOver) { - - this.instance.isOver = 0; - - inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance - this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work) - - //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid' - if(this.shouldRevert) this.instance.options.revert = true; - - //Trigger the stop of the sortable - this.instance._mouseStop(event); - - this.instance.options.helper = this.instance.options._helper; - - //If the helper has been the original item, restore properties in the sortable - if(inst.options.helper == 'original') - this.instance.currentItem.css({ top: 'auto', left: 'auto' }); - - } else { - this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance - this.instance._trigger("deactivate", event, uiSortable); - } - - }); - - }, - drag: function(event, ui) { - - var inst = $(this).data("draggable"), that = this; - - var checkPos = function(o) { - var dyClick = this.offset.click.top, dxClick = this.offset.click.left; - var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left; - var itemHeight = o.height, itemWidth = o.width; - var itemTop = o.top, itemLeft = o.left; - - return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth); - }; - - $.each(inst.sortables, function(i) { - - var innermostIntersecting = false; - var thisSortable = this; - //Copy over some variables to allow calling the sortable's native _intersectsWith - this.instance.positionAbs = inst.positionAbs; - this.instance.helperProportions = inst.helperProportions; - this.instance.offset.click = inst.offset.click; - - if(this.instance._intersectsWith(this.instance.containerCache)) { - innermostIntersecting = true; - $.each(inst.sortables, function () { - this.instance.positionAbs = inst.positionAbs; - this.instance.helperProportions = inst.helperProportions; - this.instance.offset.click = inst.offset.click; - if (this != thisSortable - && this.instance._intersectsWith(this.instance.containerCache) - && $.ui.contains(thisSortable.instance.element[0], this.instance.element[0])) - innermostIntersecting = false; - return innermostIntersecting; - }); - } - - - if(innermostIntersecting) { - //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once - if(!this.instance.isOver) { - - this.instance.isOver = 1; - //Now we fake the start of dragging for the sortable instance, - //by cloning the list group item, appending it to the sortable and using it as inst.currentItem - //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one) - this.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data("sortable-item", true); - this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it - this.instance.options.helper = function() { return ui.helper[0]; }; - - event.target = this.instance.currentItem[0]; - this.instance._mouseCapture(event, true); - this.instance._mouseStart(event, true, true); - - //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes - this.instance.offset.click.top = inst.offset.click.top; - this.instance.offset.click.left = inst.offset.click.left; - this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; - this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; - - inst._trigger("toSortable", event); - inst.dropped = this.instance.element; //draggable revert needs that - //hack so receive/update callbacks work (mostly) - inst.currentItem = inst.element; - this.instance.fromOutside = inst; - - } - - //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable - if(this.instance.currentItem) this.instance._mouseDrag(event); - - } else { - - //If it doesn't intersect with the sortable, and it intersected before, - //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval - if(this.instance.isOver) { - - this.instance.isOver = 0; - this.instance.cancelHelperRemoval = true; - - //Prevent reverting on this forced stop - this.instance.options.revert = false; - - // The out event needs to be triggered independently - this.instance._trigger('out', event, this.instance._uiHash(this.instance)); - - this.instance._mouseStop(event, true); - this.instance.options.helper = this.instance.options._helper; - - //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size - this.instance.currentItem.remove(); - if(this.instance.placeholder) this.instance.placeholder.remove(); - - inst._trigger("fromSortable", event); - inst.dropped = false; //draggable revert needs that - } - - }; - - }); - - } -}); - -$.ui.plugin.add("draggable", "cursor", { - start: function(event, ui) { - var t = $('body'), o = $(this).data('draggable').options; - if (t.css("cursor")) o._cursor = t.css("cursor"); - t.css("cursor", o.cursor); - }, - stop: function(event, ui) { - var o = $(this).data('draggable').options; - if (o._cursor) $('body').css("cursor", o._cursor); - } -}); - -$.ui.plugin.add("draggable", "opacity", { - start: function(event, ui) { - var t = $(ui.helper), o = $(this).data('draggable').options; - if(t.css("opacity")) o._opacity = t.css("opacity"); - t.css('opacity', o.opacity); - }, - stop: function(event, ui) { - var o = $(this).data('draggable').options; - if(o._opacity) $(ui.helper).css('opacity', o._opacity); - } -}); - -$.ui.plugin.add("draggable", "scroll", { - start: function(event, ui) { - var i = $(this).data("draggable"); - if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset(); - }, - drag: function(event, ui) { - - var i = $(this).data("draggable"), o = i.options, scrolled = false; - - if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') { - - if(!o.axis || o.axis != 'x') { - if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) - i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; - else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) - i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; - } - - if(!o.axis || o.axis != 'y') { - if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) - i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; - else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) - i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; - } - - } else { - - if(!o.axis || o.axis != 'x') { - if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) - scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); - else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) - scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); - } - - if(!o.axis || o.axis != 'y') { - if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) - scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); - else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) - scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); - } - - } - - if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) - $.ui.ddmanager.prepareOffsets(i, event); - - } -}); - -$.ui.plugin.add("draggable", "snap", { - start: function(event, ui) { - - var i = $(this).data("draggable"), o = i.options; - i.snapElements = []; - - $(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() { - var $t = $(this); var $o = $t.offset(); - if(this != i.element[0]) i.snapElements.push({ - item: this, - width: $t.outerWidth(), height: $t.outerHeight(), - top: $o.top, left: $o.left - }); - }); - - }, - drag: function(event, ui) { - - var inst = $(this).data("draggable"), o = inst.options; - var d = o.snapTolerance; - - var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, - y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; - - for (var i = inst.snapElements.length - 1; i >= 0; i--){ - - var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width, - t = inst.snapElements[i].top, b = t + inst.snapElements[i].height; - - //Yes, I know, this is insane ;) - if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) { - if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); - inst.snapElements[i].snapping = false; - continue; - } - - if(o.snapMode != 'inner') { - var ts = Math.abs(t - y2) <= d; - var bs = Math.abs(b - y1) <= d; - var ls = Math.abs(l - x2) <= d; - var rs = Math.abs(r - x1) <= d; - if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; - if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; - if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; - if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; - } - - var first = (ts || bs || ls || rs); - - if(o.snapMode != 'outer') { - var ts = Math.abs(t - y1) <= d; - var bs = Math.abs(b - y2) <= d; - var ls = Math.abs(l - x1) <= d; - var rs = Math.abs(r - x2) <= d; - if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; - if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; - if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; - if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; - } - - if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) - (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); - inst.snapElements[i].snapping = (ts || bs || ls || rs || first); - - }; - - } -}); - -$.ui.plugin.add("draggable", "stack", { - start: function(event, ui) { - - var o = $(this).data("draggable").options; - - var group = $.makeArray($(o.stack)).sort(function(a,b) { - return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); - }); - if (!group.length) { return; } - - var min = parseInt(group[0].style.zIndex) || 0; - $(group).each(function(i) { - this.style.zIndex = min + i; - }); - - this[0].style.zIndex = min + group.length; - - } -}); - -$.ui.plugin.add("draggable", "zIndex", { - start: function(event, ui) { - var t = $(ui.helper), o = $(this).data("draggable").options; - if(t.css("zIndex")) o._zIndex = t.css("zIndex"); - t.css('zIndex', o.zIndex); - }, - stop: function(event, ui) { - var o = $(this).data("draggable").options; - if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex); - } -}); - -})(jQuery); diff --git a/ui/jquery.ui.droppable.js b/ui/jquery.ui.droppable.js deleted file mode 100644 index 93e74d211..000000000 --- a/ui/jquery.ui.droppable.js +++ /dev/null @@ -1,294 +0,0 @@ -/*! - * jQuery UI Droppable @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/droppable/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.mouse.js - * jquery.ui.draggable.js - */ -(function( $, undefined ) { - -$.widget("ui.droppable", { - version: "@VERSION", - widgetEventPrefix: "drop", - options: { - accept: '*', - activeClass: false, - addClasses: true, - greedy: false, - hoverClass: false, - scope: 'default', - tolerance: 'intersect' - }, - _create: function() { - - var o = this.options, accept = o.accept; - this.isover = 0; this.isout = 1; - - this.accept = $.isFunction(accept) ? accept : function(d) { - return d.is(accept); - }; - - //Store the droppable's proportions - this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; - - // Add the reference and positions to the manager - $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; - $.ui.ddmanager.droppables[o.scope].push(this); - - (o.addClasses && this.element.addClass("ui-droppable")); - - }, - - _destroy: function() { - var drop = $.ui.ddmanager.droppables[this.options.scope]; - for ( var i = 0; i < drop.length; i++ ) - if ( drop[i] == this ) - drop.splice(i, 1); - - this.element.removeClass("ui-droppable ui-droppable-disabled"); - }, - - _setOption: function(key, value) { - - if(key == 'accept') { - this.accept = $.isFunction(value) ? value : function(d) { - return d.is(value); - }; - } - $.Widget.prototype._setOption.apply(this, arguments); - }, - - _activate: function(event) { - var draggable = $.ui.ddmanager.current; - if(this.options.activeClass) this.element.addClass(this.options.activeClass); - (draggable && this._trigger('activate', event, this.ui(draggable))); - }, - - _deactivate: function(event) { - var draggable = $.ui.ddmanager.current; - if(this.options.activeClass) this.element.removeClass(this.options.activeClass); - (draggable && this._trigger('deactivate', event, this.ui(draggable))); - }, - - _over: function(event) { - - var draggable = $.ui.ddmanager.current; - if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element - - if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { - if(this.options.hoverClass) this.element.addClass(this.options.hoverClass); - this._trigger('over', event, this.ui(draggable)); - } - - }, - - _out: function(event) { - - var draggable = $.ui.ddmanager.current; - if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element - - if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { - if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass); - this._trigger('out', event, this.ui(draggable)); - } - - }, - - _drop: function(event,custom) { - - var draggable = custom || $.ui.ddmanager.current; - if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element - - var childrenIntersection = false; - this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() { - var inst = $.data(this, 'droppable'); - if( - inst.options.greedy - && !inst.options.disabled - && inst.options.scope == draggable.options.scope - && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) - && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance) - ) { childrenIntersection = true; return false; } - }); - if(childrenIntersection) return false; - - if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { - if(this.options.activeClass) this.element.removeClass(this.options.activeClass); - if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass); - this._trigger('drop', event, this.ui(draggable)); - return this.element; - } - - return false; - - }, - - ui: function(c) { - return { - draggable: (c.currentItem || c.element), - helper: c.helper, - position: c.position, - offset: c.positionAbs - }; - } - -}); - -$.ui.intersect = function(draggable, droppable, toleranceMode) { - - if (!droppable.offset) return false; - - var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width, - y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height; - var l = droppable.offset.left, r = l + droppable.proportions.width, - t = droppable.offset.top, b = t + droppable.proportions.height; - - switch (toleranceMode) { - case 'fit': - return (l <= x1 && x2 <= r - && t <= y1 && y2 <= b); - break; - case 'intersect': - return (l < x1 + (draggable.helperProportions.width / 2) // Right Half - && x2 - (draggable.helperProportions.width / 2) < r // Left Half - && t < y1 + (draggable.helperProportions.height / 2) // Bottom Half - && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half - break; - case 'pointer': - var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left), - draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top), - isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width); - return isOver; - break; - case 'touch': - return ( - (y1 >= t && y1 <= b) || // Top edge touching - (y2 >= t && y2 <= b) || // Bottom edge touching - (y1 < t && y2 > b) // Surrounded vertically - ) && ( - (x1 >= l && x1 <= r) || // Left edge touching - (x2 >= l && x2 <= r) || // Right edge touching - (x1 < l && x2 > r) // Surrounded horizontally - ); - break; - default: - return false; - break; - } - -}; - -/* - This manager tracks offsets of draggables and droppables -*/ -$.ui.ddmanager = { - current: null, - droppables: { 'default': [] }, - prepareOffsets: function(t, event) { - - var m = $.ui.ddmanager.droppables[t.options.scope] || []; - var type = event ? event.type : null; // workaround for #2317 - var list = (t.currentItem || t.element).find(":data(droppable)").andSelf(); - - droppablesLoop: for (var i = 0; i < m.length; i++) { - - if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue; //No disabled and non-accepted - for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item - m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue - - if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables - - m[i].offset = m[i].element.offset(); - m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight }; - - } - - }, - drop: function(draggable, event) { - - var dropped = false; - $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { - - if(!this.options) return; - if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) - dropped = this._drop.call(this, event) || dropped; - - if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { - this.isout = 1; this.isover = 0; - this._deactivate.call(this, event); - } - - }); - return dropped; - - }, - dragStart: function( draggable, event ) { - //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003) - draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() { - if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event ); - }); - }, - drag: function(draggable, event) { - - //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse. - if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event); - - //Run through all droppables and check their positions based on specific tolerance options - $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { - - if(this.options.disabled || this.greedyChild || !this.visible) return; - var intersects = $.ui.intersect(draggable, this, this.options.tolerance); - - var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null); - if(!c) return; - - var parentInstance; - if (this.options.greedy) { - // find droppable parents with same scope - var scope = this.options.scope; - var parent = this.element.parents(':data(droppable)').filter(function () { - return $.data(this, 'droppable').options.scope === scope; - }); - - if (parent.length) { - parentInstance = $.data(parent[0], 'droppable'); - parentInstance.greedyChild = (c == 'isover' ? 1 : 0); - } - } - - // we just moved into a greedy child - if (parentInstance && c == 'isover') { - parentInstance['isover'] = 0; - parentInstance['isout'] = 1; - parentInstance._out.call(parentInstance, event); - } - - this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0; - this[c == "isover" ? "_over" : "_out"].call(this, event); - - // we just moved out of a greedy child - if (parentInstance && c == 'isout') { - parentInstance['isout'] = 0; - parentInstance['isover'] = 1; - parentInstance._over.call(parentInstance, event); - } - }); - - }, - dragStop: function( draggable, event ) { - draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" ); - //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003) - if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event ); - } -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-blind.js b/ui/jquery.ui.effect-blind.js deleted file mode 100644 index 0ee31c078..000000000 --- a/ui/jquery.ui.effect-blind.js +++ /dev/null @@ -1,82 +0,0 @@ -/*! - * jQuery UI Effects Blind @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/blind-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -var rvertical = /up|down|vertical/, - rpositivemotion = /up|left|vertical|horizontal/; - -$.effects.effect.blind = function( o, done ) { - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - direction = o.direction || "up", - vertical = rvertical.test( direction ), - ref = vertical ? "height" : "width", - ref2 = vertical ? "top" : "left", - motion = rpositivemotion.test( direction ), - animation = {}, - show = mode === "show", - wrapper, distance, margin; - - // if already wrapped, the wrapper's properties are my property. #6245 - if ( el.parent().is( ".ui-effects-wrapper" ) ) { - $.effects.save( el.parent(), props ); - } else { - $.effects.save( el, props ); - } - el.show(); - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - distance = wrapper[ ref ](); - margin = parseFloat( wrapper.css( ref2 ) ) || 0; - - animation[ ref ] = show ? distance : 0; - if ( !motion ) { - el - .css( vertical ? "bottom" : "right", 0 ) - .css( vertical ? "top" : "left", "auto" ) - .css({ position: "absolute" }); - - animation[ ref2 ] = show ? margin : distance + margin; - } - - // start at 0 if we are showing - if ( show ) { - wrapper.css( ref, 0 ); - if ( ! motion ) { - wrapper.css( ref2, margin + distance ); - } - } - - // Animate - wrapper.animate( animation, { - duration: o.duration, - easing: o.easing, - queue: false, - complete: function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-bounce.js b/ui/jquery.ui.effect-bounce.js deleted file mode 100644 index d36b0660f..000000000 --- a/ui/jquery.ui.effect-bounce.js +++ /dev/null @@ -1,113 +0,0 @@ -/*! - * jQuery UI Effects Bounce @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/bounce-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.bounce = function( o, done ) { - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - - // defaults: - mode = $.effects.setMode( el, o.mode || "effect" ), - hide = mode === "hide", - show = mode === "show", - direction = o.direction || "up", - distance = o.distance, - times = o.times || 5, - - // number of internal animations - anims = times * 2 + ( show || hide ? 1 : 0 ), - speed = o.duration / anims, - easing = o.easing, - - // utility: - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ), - i, - upAnim, - downAnim, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - // Avoid touching opacity to prevent clearType and PNG issues in IE - if ( show || hide ) { - props.push( "opacity" ); - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); // Create Wrapper - - // default distance for the BIGGEST bounce is the outer Distance / 3 - if ( !distance ) { - distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; - } - - if ( show ) { - downAnim = { opacity: 1 }; - downAnim[ ref ] = 0; - - // if we are showing, force opacity 0 and set the initial position - // then do the "first" animation - el.css( "opacity", 0 ) - .css( ref, motion ? -distance * 2 : distance * 2 ) - .animate( downAnim, speed, easing ); - } - - // start at the smallest distance if we are hiding - if ( hide ) { - distance = distance / Math.pow( 2, times - 1 ); - } - - downAnim = {}; - downAnim[ ref ] = 0; - // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here - for ( i = 0; i < times; i++ ) { - upAnim = {}; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - el.animate( upAnim, speed, easing ) - .animate( downAnim, speed, easing ); - - distance = hide ? distance * 2 : distance / 2; - } - - // Last Bounce when Hiding - if ( hide ) { - upAnim = { opacity: 0 }; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - el.animate( upAnim, speed, easing ); - } - - el.queue(function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - - // inject all the animations we just queued to be first in line (after "inprogress") - if ( queuelen > 1) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - el.dequeue(); - -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-clip.js b/ui/jquery.ui.effect-clip.js deleted file mode 100644 index ce4402b52..000000000 --- a/ui/jquery.ui.effect-clip.js +++ /dev/null @@ -1,67 +0,0 @@ -/*! - * jQuery UI Effects Clip @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/clip-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.clip = function( o, done ) { - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - direction = o.direction || "vertical", - vert = direction === "vertical", - size = vert ? "height" : "width", - position = vert ? "top" : "left", - animation = {}, - wrapper, animate, distance; - - // Save & Show - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - animate = ( el[0].tagName === "IMG" ) ? wrapper : el; - distance = animate[ size ](); - - // Shift - if ( show ) { - animate.css( size, 0 ); - animate.css( position, distance / 2 ); - } - - // Create Animation Object: - animation[ size ] = show ? distance : 0; - animation[ position ] = show ? 0 : distance / 2; - - // Animate - animate.animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( !show ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-drop.js b/ui/jquery.ui.effect-drop.js deleted file mode 100644 index bd196ec73..000000000 --- a/ui/jquery.ui.effect-drop.js +++ /dev/null @@ -1,65 +0,0 @@ -/*! - * jQuery UI Effects Drop @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/drop-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.drop = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - direction = o.direction || "left", - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", - animation = { - opacity: show ? 1 : 0 - }, - distance; - - // Adjust - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2; - - if ( show ) { - el - .css( "opacity", 0 ) - .css( ref, motion === "pos" ? -distance : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( motion === "pos" ? "+=" : "-=" ) : - ( motion === "pos" ? "-=" : "+=" ) ) + - distance; - - // Animate - el.animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-explode.js b/ui/jquery.ui.effect-explode.js deleted file mode 100644 index b31efc8c1..000000000 --- a/ui/jquery.ui.effect-explode.js +++ /dev/null @@ -1,97 +0,0 @@ -/*! - * jQuery UI Effects Explode @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/explode-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.explode = function( o, done ) { - - var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, - cells = rows, - el = $( this ), - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - - // show and then visibility:hidden the element before calculating offset - offset = el.show().css( "visibility", "hidden" ).offset(), - - // width and height of a piece - width = Math.ceil( el.outerWidth() / cells ), - height = Math.ceil( el.outerHeight() / rows ), - pieces = [], - - // loop - i, j, left, top, mx, my; - - // children animate complete: - function childComplete() { - pieces.push( this ); - if ( pieces.length === rows * cells ) { - animComplete(); - } - } - - // clone the element for each row and cell. - for( i = 0; i < rows ; i++ ) { // ===> - top = offset.top + i * height; - my = i - ( rows - 1 ) / 2 ; - - for( j = 0; j < cells ; j++ ) { // ||| - left = offset.left + j * width; - mx = j - ( cells - 1 ) / 2 ; - - // Create a clone of the now hidden main element that will be absolute positioned - // within a wrapper div off the -left and -top equal to size of our pieces - el - .clone() - .appendTo( "body" ) - .wrap( "
" ) - .css({ - position: "absolute", - visibility: "visible", - left: -j * width, - top: -i * height - }) - - // select the wrapper - make it overflow: hidden and absolute positioned based on - // where the original was located +left and +top equal to the size of pieces - .parent() - .addClass( "ui-effects-explode" ) - .css({ - position: "absolute", - overflow: "hidden", - width: width, - height: height, - left: left + ( show ? mx * width : 0 ), - top: top + ( show ? my * height : 0 ), - opacity: show ? 0 : 1 - }).animate({ - left: left + ( show ? 0 : mx * width ), - top: top + ( show ? 0 : my * height ), - opacity: show ? 1 : 0 - }, o.duration || 500, o.easing, childComplete ); - } - } - - function animComplete() { - el.css({ - visibility: "visible" - }); - $( pieces ).remove(); - if ( !show ) { - el.hide(); - } - done(); - } -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-fade.js b/ui/jquery.ui.effect-fade.js deleted file mode 100644 index 00d823260..000000000 --- a/ui/jquery.ui.effect-fade.js +++ /dev/null @@ -1,30 +0,0 @@ -/*! - * jQuery UI Effects Fade @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/fade-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.fade = function( o, done ) { - var el = $( this ), - mode = $.effects.setMode( el, o.mode || "toggle" ); - - el.animate({ - opacity: mode - }, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: done - }); -}; - -})( jQuery ); diff --git a/ui/jquery.ui.effect-fold.js b/ui/jquery.ui.effect-fold.js deleted file mode 100644 index 893a27e2c..000000000 --- a/ui/jquery.ui.effect-fold.js +++ /dev/null @@ -1,76 +0,0 @@ -/*! - * jQuery UI Effects Fold @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/fold-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.fold = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - hide = mode === "hide", - size = o.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!o.horizFirst, - widthFirst = show !== horizFirst, - ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], - duration = o.duration / 2, - wrapper, distance, - animation1 = {}, - animation2 = {}; - - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - distance = widthFirst ? - [ wrapper.width(), wrapper.height() ] : - [ wrapper.height(), wrapper.width() ]; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - if ( show ) { - wrapper.css( horizFirst ? { - height: 0, - width: size - } : { - height: size, - width: 0 - }); - } - - // Animation - animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; - animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; - - // Animate - wrapper - .animate( animation1, duration, o.easing ) - .animate( animation2, duration, o.easing, function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-highlight.js b/ui/jquery.ui.effect-highlight.js deleted file mode 100644 index 99c41de2f..000000000 --- a/ui/jquery.ui.effect-highlight.js +++ /dev/null @@ -1,50 +0,0 @@ -/*! - * jQuery UI Effects Highlight @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/highlight-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.highlight = function( o, done ) { - var elem = $( this ), - props = [ "backgroundImage", "backgroundColor", "opacity" ], - mode = $.effects.setMode( elem, o.mode || "show" ), - animation = { - backgroundColor: elem.css( "backgroundColor" ) - }; - - if (mode === "hide") { - animation.opacity = 0; - } - - $.effects.save( elem, props ); - - elem - .show() - .css({ - backgroundImage: "none", - backgroundColor: o.color || "#ffff99" - }) - .animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - elem.hide(); - } - $.effects.restore( elem, props ); - done(); - } - }); -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-pulsate.js b/ui/jquery.ui.effect-pulsate.js deleted file mode 100644 index de78894be..000000000 --- a/ui/jquery.ui.effect-pulsate.js +++ /dev/null @@ -1,63 +0,0 @@ -/*! - * jQuery UI Effects Pulsate @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/pulsate-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.pulsate = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "show" ), - show = mode === "show", - hide = mode === "hide", - showhide = ( show || mode === "hide" ), - - // showing or hiding leaves of the "last" animation - anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = o.duration / anims, - animateTo = 0, - queue = elem.queue(), - queuelen = queue.length, - i; - - if ( show || !elem.is(":visible")) { - elem.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // anims - 1 opacity "toggles" - for ( i = 1; i < anims; i++ ) { - elem.animate({ - opacity: animateTo - }, duration, o.easing ); - animateTo = 1 - animateTo; - } - - elem.animate({ - opacity: animateTo - }, duration, o.easing); - - elem.queue(function() { - if ( hide ) { - elem.hide(); - } - done(); - }); - - // We just queued up "anims" animations, we need to put them next in the queue - if ( queuelen > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - elem.dequeue(); -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-scale.js b/ui/jquery.ui.effect-scale.js deleted file mode 100644 index 1307e7782..000000000 --- a/ui/jquery.ui.effect-scale.js +++ /dev/null @@ -1,318 +0,0 @@ -/*! - * jQuery UI Effects Scale @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/scale-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.puff = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "hide" ), - hide = mode === "hide", - percent = parseInt( o.percent, 10 ) || 150, - factor = percent / 100, - original = { - height: elem.height(), - width: elem.width(), - outerHeight: elem.outerHeight(), - outerWidth: elem.outerWidth() - }; - - $.extend( o, { - effect: "scale", - queue: false, - fade: true, - mode: mode, - complete: done, - percent: hide ? percent : 100, - from: hide ? - original : - { - height: original.height * factor, - width: original.width * factor, - outerHeight: original.outerHeight * factor, - outerWidth: original.outerWidth * factor - } - }); - - elem.effect( o ); -}; - -$.effects.effect.scale = function( o, done ) { - - // Create element - var el = $( this ), - options = $.extend( true, {}, o ), - mode = $.effects.setMode( el, o.mode || "effect" ), - percent = parseInt( o.percent, 10 ) || - ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), - direction = o.direction || "both", - origin = o.origin, - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }, - factor = { - y: direction !== "horizontal" ? (percent / 100) : 1, - x: direction !== "vertical" ? (percent / 100) : 1 - }; - - // We are going to pass this effect to the size effect: - options.effect = "size"; - options.queue = false; - options.complete = done; - - // Set default origin and restore for show/hide - if ( mode !== "effect" ) { - options.origin = origin || ["middle","center"]; - options.restore = true; - } - - options.from = o.from || ( mode === "show" ? { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - } : original ); - options.to = { - height: original.height * factor.y, - width: original.width * factor.x, - outerHeight: original.outerHeight * factor.y, - outerWidth: original.outerWidth * factor.x - }; - - // Fade option to support puff - if ( options.fade ) { - if ( mode === "show" ) { - options.from.opacity = 0; - options.to.opacity = 1; - } - if ( mode === "hide" ) { - options.from.opacity = 1; - options.to.opacity = 0; - } - } - - // Animate - el.effect( options ); - -}; - -$.effects.effect.size = function( o, done ) { - - // Create element - var original, baseline, factor, - el = $( this ), - props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], - - // Always restore - props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], - - // Copy for children - props2 = [ "width", "height", "overflow" ], - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = $.effects.setMode( el, o.mode || "effect" ), - restore = o.restore || mode !== "effect", - scale = o.scale || "both", - origin = o.origin || [ "middle", "center" ], - position = el.css( "position" ), - props = restore ? props0 : props1, - zero = { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - - if ( mode === "show" ) { - el.show(); - } - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }; - - if ( o.mode === "toggle" && mode === "show" ) { - el.from = o.to || zero; - el.to = o.from || original; - } else { - el.from = o.from || ( mode === "show" ? zero : original ); - el.to = o.to || ( mode === "hide" ? zero : original ); - } - - // Set scaling factor - factor = { - from: { - y: el.from.height / original.height, - x: el.from.width / original.width - }, - to: { - y: el.to.height / original.height, - x: el.to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( vProps ); - el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - props = props.concat( hProps ); - el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); - el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( cProps ).concat( props2 ); - el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); - } - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - el.css( "overflow", "hidden" ).css( el.from ); - - // Adjust - if (origin) { // Calculate baseline shifts - baseline = $.effects.getBaseline( origin, original ); - el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; - el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; - el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; - el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; - } - el.css( el.from ); // set top & left - - // Animate - if ( scale === "content" || scale === "both" ) { // Scale the children - - // Add margins/font-size - vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); - hProps = hProps.concat([ "marginLeft", "marginRight" ]); - props2 = props0.concat(vProps).concat(hProps); - - el.find( "*[width]" ).each( function(){ - var child = $( this ), - c_original = { - height: child.height(), - width: child.width(), - outerHeight: child.outerHeight(), - outerWidth: child.outerWidth() - }; - if (restore) { - $.effects.save(child, props2); - } - - child.from = { - height: c_original.height * factor.from.y, - width: c_original.width * factor.from.x, - outerHeight: c_original.outerHeight * factor.from.y, - outerWidth: c_original.outerWidth * factor.from.x - }; - child.to = { - height: c_original.height * factor.to.y, - width: c_original.width * factor.to.x, - outerHeight: c_original.height * factor.to.y, - outerWidth: c_original.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); - child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); - child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); - } - - // Animate children - child.css( child.from ); - child.animate( child.to, o.duration, o.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restore( child, props2 ); - } - }); - }); - } - - // Animate - el.animate( el.to, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( el.to.opacity === 0 ) { - el.css( "opacity", el.from.opacity ); - } - if( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - if ( !restore ) { - - // we need to calculate our new positioning based on the scaling - if ( position === "static" ) { - el.css({ - position: "relative", - top: el.to.top, - left: el.to.left - }); - } else { - $.each([ "top", "left" ], function( idx, pos ) { - el.css( pos, function( _, str ) { - var val = parseInt( str, 10 ), - toRef = idx ? el.to.left : el.to.top; - - // if original was "auto", recalculate the new value from wrapper - if ( str === "auto" ) { - return toRef + "px"; - } - - return val + toRef + "px"; - }); - }); - } - } - - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-shake.js b/ui/jquery.ui.effect-shake.js deleted file mode 100644 index 4c2f9817e..000000000 --- a/ui/jquery.ui.effect-shake.js +++ /dev/null @@ -1,74 +0,0 @@ -/*! - * jQuery UI Effects Shake @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/shake-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.shake = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "effect" ), - direction = o.direction || "left", - distance = o.distance || 20, - times = o.times || 3, - anims = times * 2 + 1, - speed = Math.round(o.duration/anims), - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - animation = {}, - animation1 = {}, - animation2 = {}, - i, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - el.animate( animation, speed, o.easing ); - - // Shakes - for ( i = 1; i < times; i++ ) { - el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); - } - el - .animate( animation1, speed, o.easing ) - .animate( animation, speed / 2, o.easing ) - .queue(function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - - // inject all the animations we just queued to be first in line (after "inprogress") - if ( queuelen > 1) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - el.dequeue(); - -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-slide.js b/ui/jquery.ui.effect-slide.js deleted file mode 100644 index 5037256e0..000000000 --- a/ui/jquery.ui.effect-slide.js +++ /dev/null @@ -1,64 +0,0 @@ -/*! - * jQuery UI Effects Slide @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/slide-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.slide = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "width", "height" ], - mode = $.effects.setMode( el, o.mode || "show" ), - show = mode === "show", - direction = o.direction || "left", - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - distance, - animation = {}; - - // Adjust - $.effects.save( el, props ); - el.show(); - distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); - - $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - if ( show ) { - el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( positiveMotion ? "+=" : "-=") : - ( positiveMotion ? "-=" : "+=")) + - distance; - - // Animate - el.animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect-transfer.js b/ui/jquery.ui.effect-transfer.js deleted file mode 100644 index 0bfffd7fb..000000000 --- a/ui/jquery.ui.effect-transfer.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * jQuery UI Effects Transfer @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/transfer-effect/ - * - * Depends: - * jquery.ui.effect.js - */ -(function( $, undefined ) { - -$.effects.effect.transfer = function( o, done ) { - var elem = $( this ), - target = $( o.to ), - targetFixed = target.css( "position" ) === "fixed", - body = $("body"), - fixTop = targetFixed ? body.scrollTop() : 0, - fixLeft = targetFixed ? body.scrollLeft() : 0, - endPosition = target.offset(), - animation = { - top: endPosition.top - fixTop , - left: endPosition.left - fixLeft , - height: target.innerHeight(), - width: target.innerWidth() - }, - startPosition = elem.offset(), - transfer = $( '
' ) - .appendTo( document.body ) - .addClass( o.className ) - .css({ - top: startPosition.top - fixTop , - left: startPosition.left - fixLeft , - height: elem.innerHeight(), - width: elem.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - }) - .animate( animation, o.duration, o.easing, function() { - transfer.remove(); - done(); - }); -}; - -})(jQuery); diff --git a/ui/jquery.ui.effect.js b/ui/jquery.ui.effect.js deleted file mode 100644 index 37ca48795..000000000 --- a/ui/jquery.ui.effect.js +++ /dev/null @@ -1,1276 +0,0 @@ -/*! - * jQuery UI Effects @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/category/effects-core/ - */ -;(jQuery.effects || (function($, undefined) { - -var backCompat = $.uiBackCompat !== false, - // prefix used for storing data on .data() - dataSpace = "ui-effects-"; - -$.effects = { - effect: {} -}; - -/*! - * jQuery Color Animations v2.0.0 - * http://jquery.com/ - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * Date: Mon Aug 13 13:41:02 2012 -0500 - */ -(function( jQuery, undefined ) { - - var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "), - - // plusequals test for += 100 -= 100 - rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - // a set of RE's that can match strings and generate color tuples. - stringParsers = [{ - re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ], - execResult[ 3 ], - execResult[ 4 ] - ]; - } - }, { - re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ] * 2.55, - execResult[ 2 ] * 2.55, - execResult[ 3 ] * 2.55, - execResult[ 4 ] - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ], 16 ) - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) - ]; - } - }, { - re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - space: "hsla", - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ] / 100, - execResult[ 3 ] / 100, - execResult[ 4 ] - ]; - } - }], - - // jQuery.Color( ) - color = jQuery.Color = function( color, green, blue, alpha ) { - return new jQuery.Color.fn.parse( color, green, blue, alpha ); - }, - spaces = { - rgba: { - props: { - red: { - idx: 0, - type: "byte" - }, - green: { - idx: 1, - type: "byte" - }, - blue: { - idx: 2, - type: "byte" - } - } - }, - - hsla: { - props: { - hue: { - idx: 0, - type: "degrees" - }, - saturation: { - idx: 1, - type: "percent" - }, - lightness: { - idx: 2, - type: "percent" - } - } - } - }, - propTypes = { - "byte": { - floor: true, - max: 255 - }, - "percent": { - max: 1 - }, - "degrees": { - mod: 360, - floor: true - } - }, - support = color.support = {}, - - // element for support tests - supportElem = jQuery( "

" )[ 0 ], - - // colors = jQuery.Color.names - colors, - - // local aliases of functions called often - each = jQuery.each; - -// determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { - space.cache = "_" + spaceName; - space.props.alpha = { - idx: 3, - type: "percent", - def: 1 - }; -}); - -function clamp( value, prop, allowEmpty ) { - var type = propTypes[ prop.type ] || {}; - - if ( value == null ) { - return (allowEmpty || !prop.def) ? null : prop.def; - } - - // ~~ is an short way of doing floor for positive numbers - value = type.floor ? ~~value : parseFloat( value ); - - // IE will pass in empty strings as value for alpha, - // which will hit this case - if ( isNaN( value ) ) { - return prop.def; - } - - if ( type.mod ) { - // we add mod before modding to make sure that negatives values - // get converted properly: -10 -> 350 - return (value + type.mod) % type.mod; - } - - // for now all property types without mod have min and max - return 0 > value ? 0 : type.max < value ? type.max : value; -} - -function stringParse( string ) { - var inst = color(), - rgba = inst._rgba = []; - - string = string.toLowerCase(); - - each( stringParsers, function( i, parser ) { - var parsed, - match = parser.re.exec( string ), - values = match && parser.parse( match ), - spaceName = parser.space || "rgba"; - - if ( values ) { - parsed = inst[ spaceName ]( values ); - - // if this was an rgba parse the assignment might happen twice - // oh well.... - inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; - rgba = inst._rgba = parsed._rgba; - - // exit each( stringParsers ) here because we matched - return false; - } - }); - - // Found a stringParser that handled it - if ( rgba.length ) { - - // if this came from a parsed string, force "transparent" when alpha is 0 - // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) - if ( rgba.join() === "0,0,0,0" ) { - jQuery.extend( rgba, colors.transparent ); - } - return inst; - } - - // named colors - return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { - parse: function( red, green, blue, alpha ) { - if ( red === undefined ) { - this._rgba = [ null, null, null, null ]; - return this; - } - if ( red.jquery || red.nodeType ) { - red = jQuery( red ).css( green ); - green = undefined; - } - - var inst = this, - type = jQuery.type( red ), - rgba = this._rgba = []; - - // more than 1 argument specified - assume ( red, green, blue, alpha ) - if ( green !== undefined ) { - red = [ red, green, blue, alpha ]; - type = "array"; - } - - if ( type === "string" ) { - return this.parse( stringParse( red ) || colors._default ); - } - - if ( type === "array" ) { - each( spaces.rgba.props, function( key, prop ) { - rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); - }); - return this; - } - - if ( type === "object" ) { - if ( red instanceof color ) { - each( spaces, function( spaceName, space ) { - if ( red[ space.cache ] ) { - inst[ space.cache ] = red[ space.cache ].slice(); - } - }); - } else { - each( spaces, function( spaceName, space ) { - var cache = space.cache; - each( space.props, function( key, prop ) { - - // if the cache doesn't exist, and we know how to convert - if ( !inst[ cache ] && space.to ) { - - // if the value was null, we don't need to copy it - // if the key was alpha, we don't need to copy it either - if ( key === "alpha" || red[ key ] == null ) { - return; - } - inst[ cache ] = space.to( inst._rgba ); - } - - // this is the only case where we allow nulls for ALL properties. - // call clamp with alwaysAllowEmpty - inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); - }); - - // everything defined but alpha? - if ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - // use the default of 1 - inst[ cache ][ 3 ] = 1; - if ( space.from ) { - inst._rgba = space.from( inst[ cache ] ); - } - } - }); - } - return this; - } - }, - is: function( compare ) { - var is = color( compare ), - same = true, - inst = this; - - each( spaces, function( _, space ) { - var localCache, - isCache = is[ space.cache ]; - if (isCache) { - localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; - each( space.props, function( _, prop ) { - if ( isCache[ prop.idx ] != null ) { - same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); - return same; - } - }); - } - return same; - }); - return same; - }, - _space: function() { - var used = [], - inst = this; - each( spaces, function( spaceName, space ) { - if ( inst[ space.cache ] ) { - used.push( spaceName ); - } - }); - return used.pop(); - }, - transition: function( other, distance ) { - var end = color( other ), - spaceName = end._space(), - space = spaces[ spaceName ], - startColor = this.alpha() === 0 ? color( "transparent" ) : this, - start = startColor[ space.cache ] || space.to( startColor._rgba ), - result = start.slice(); - - end = end[ space.cache ]; - each( space.props, function( key, prop ) { - var index = prop.idx, - startValue = start[ index ], - endValue = end[ index ], - type = propTypes[ prop.type ] || {}; - - // if null, don't override start value - if ( endValue === null ) { - return; - } - // if null - use end - if ( startValue === null ) { - result[ index ] = endValue; - } else { - if ( type.mod ) { - if ( endValue - startValue > type.mod / 2 ) { - startValue += type.mod; - } else if ( startValue - endValue > type.mod / 2 ) { - startValue -= type.mod; - } - } - result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); - } - }); - return this[ spaceName ]( result ); - }, - blend: function( opaque ) { - // if we are already opaque - return ourself - if ( this._rgba[ 3 ] === 1 ) { - return this; - } - - var rgb = this._rgba.slice(), - a = rgb.pop(), - blend = color( opaque )._rgba; - - return color( jQuery.map( rgb, function( v, i ) { - return ( 1 - a ) * blend[ i ] + a * v; - })); - }, - toRgbaString: function() { - var prefix = "rgba(", - rgba = jQuery.map( this._rgba, function( v, i ) { - return v == null ? ( i > 2 ? 1 : 0 ) : v; - }); - - if ( rgba[ 3 ] === 1 ) { - rgba.pop(); - prefix = "rgb("; - } - - return prefix + rgba.join() + ")"; - }, - toHslaString: function() { - var prefix = "hsla(", - hsla = jQuery.map( this.hsla(), function( v, i ) { - if ( v == null ) { - v = i > 2 ? 1 : 0; - } - - // catch 1 and 2 - if ( i && i < 3 ) { - v = Math.round( v * 100 ) + "%"; - } - return v; - }); - - if ( hsla[ 3 ] === 1 ) { - hsla.pop(); - prefix = "hsl("; - } - return prefix + hsla.join() + ")"; - }, - toHexString: function( includeAlpha ) { - var rgba = this._rgba.slice(), - alpha = rgba.pop(); - - if ( includeAlpha ) { - rgba.push( ~~( alpha * 255 ) ); - } - - return "#" + jQuery.map( rgba, function( v ) { - - // default to 0 when nulls exist - v = ( v || 0 ).toString( 16 ); - return v.length === 1 ? "0" + v : v; - }).join(""); - }, - toString: function() { - return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); - } -}); -color.fn.parse.prototype = color.fn; - -// hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { - h = ( h + 1 ) % 1; - if ( h * 6 < 1 ) { - return p + (q - p) * h * 6; - } - if ( h * 2 < 1) { - return q; - } - if ( h * 3 < 2 ) { - return p + (q - p) * ((2/3) - h) * 6; - } - return p; -} - -spaces.hsla.to = function ( rgba ) { - if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { - return [ null, null, null, rgba[ 3 ] ]; - } - var r = rgba[ 0 ] / 255, - g = rgba[ 1 ] / 255, - b = rgba[ 2 ] / 255, - a = rgba[ 3 ], - max = Math.max( r, g, b ), - min = Math.min( r, g, b ), - diff = max - min, - add = max + min, - l = add * 0.5, - h, s; - - if ( min === max ) { - h = 0; - } else if ( r === max ) { - h = ( 60 * ( g - b ) / diff ) + 360; - } else if ( g === max ) { - h = ( 60 * ( b - r ) / diff ) + 120; - } else { - h = ( 60 * ( r - g ) / diff ) + 240; - } - - if ( l === 0 || l === 1 ) { - s = l; - } else if ( l <= 0.5 ) { - s = diff / add; - } else { - s = diff / ( 2 - add ); - } - return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function ( hsla ) { - if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { - return [ null, null, null, hsla[ 3 ] ]; - } - var h = hsla[ 0 ] / 360, - s = hsla[ 1 ], - l = hsla[ 2 ], - a = hsla[ 3 ], - q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, - p = 2 * l - q; - - return [ - Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), - Math.round( hue2rgb( p, q, h ) * 255 ), - Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), - a - ]; -}; - - -each( spaces, function( spaceName, space ) { - var props = space.props, - cache = space.cache, - to = space.to, - from = space.from; - - // makes rgba() and hsla() - color.fn[ spaceName ] = function( value ) { - - // generate a cache for this space if it doesn't exist - if ( to && !this[ cache ] ) { - this[ cache ] = to( this._rgba ); - } - if ( value === undefined ) { - return this[ cache ].slice(); - } - - var ret, - type = jQuery.type( value ), - arr = ( type === "array" || type === "object" ) ? value : arguments, - local = this[ cache ].slice(); - - each( props, function( key, prop ) { - var val = arr[ type === "object" ? key : prop.idx ]; - if ( val == null ) { - val = local[ prop.idx ]; - } - local[ prop.idx ] = clamp( val, prop ); - }); - - if ( from ) { - ret = color( from( local ) ); - ret[ cache ] = local; - return ret; - } else { - return color( local ); - } - }; - - // makes red() green() blue() alpha() hue() saturation() lightness() - each( props, function( key, prop ) { - // alpha is included in more than one space - if ( color.fn[ key ] ) { - return; - } - color.fn[ key ] = function( value ) { - var vtype = jQuery.type( value ), - fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), - local = this[ fn ](), - cur = local[ prop.idx ], - match; - - if ( vtype === "undefined" ) { - return cur; - } - - if ( vtype === "function" ) { - value = value.call( this, cur ); - vtype = jQuery.type( value ); - } - if ( value == null && prop.empty ) { - return this; - } - if ( vtype === "string" ) { - match = rplusequals.exec( value ); - if ( match ) { - value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); - } - } - local[ prop.idx ] = value; - return this[ fn ]( local ); - }; - }); -}); - -// add .fx.step functions -each( stepHooks, function( i, hook ) { - jQuery.cssHooks[ hook ] = { - set: function( elem, value ) { - var parsed, curElem, - backgroundColor = ""; - - if ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) { - value = color( parsed || value ); - if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { - curElem = hook === "backgroundColor" ? elem.parentNode : elem; - while ( - (backgroundColor === "" || backgroundColor === "transparent") && - curElem && curElem.style - ) { - try { - backgroundColor = jQuery.css( curElem, "backgroundColor" ); - curElem = curElem.parentNode; - } catch ( e ) { - } - } - - value = value.blend( backgroundColor && backgroundColor !== "transparent" ? - backgroundColor : - "_default" ); - } - - value = value.toRgbaString(); - } - try { - elem.style[ hook ] = value; - } catch( error ) { - // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' - } - } - }; - jQuery.fx.step[ hook ] = function( fx ) { - if ( !fx.colorInit ) { - fx.start = color( fx.elem, hook ); - fx.end = color( fx.end ); - fx.colorInit = true; - } - jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); - }; -}); - -jQuery.cssHooks.borderColor = { - expand: function( value ) { - var expanded = {}; - - each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { - expanded[ "border" + part + "Color" ] = value; - }); - return expanded; - } -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { - // 4.1. Basic color keywords - aqua: "#00ffff", - black: "#000000", - blue: "#0000ff", - fuchsia: "#ff00ff", - gray: "#808080", - green: "#008000", - lime: "#00ff00", - maroon: "#800000", - navy: "#000080", - olive: "#808000", - purple: "#800080", - red: "#ff0000", - silver: "#c0c0c0", - teal: "#008080", - white: "#ffffff", - yellow: "#ffff00", - - // 4.2.3. "transparent" color keyword - transparent: [ null, null, null, 0 ], - - _default: "#ffffff" -}; - -})( jQuery ); - - - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -(function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], - shorthandStyles = { - border: 1, - borderBottom: 1, - borderColor: 1, - borderLeft: 1, - borderRight: 1, - borderTop: 1, - borderWidth: 1, - margin: 1, - padding: 1 - }; - -$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { - $.fx.step[ prop ] = function( fx ) { - if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { - jQuery.style( fx.elem, prop, fx.end ); - fx.setAttr = true; - } - }; -}); - -function getElementStyles() { - var style = this.ownerDocument.defaultView ? - this.ownerDocument.defaultView.getComputedStyle( this, null ) : - this.currentStyle, - newStyle = {}, - key, - len; - - // webkit enumerates style porperties - if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { - len = style.length; - while ( len-- ) { - key = style[ len ]; - if ( typeof style[ key ] === "string" ) { - newStyle[ $.camelCase( key ) ] = style[ key ]; - } - } - } else { - for ( key in style ) { - if ( typeof style[ key ] === "string" ) { - newStyle[ key ] = style[ key ]; - } - } - } - - return newStyle; -} - - -function styleDifference( oldStyle, newStyle ) { - var diff = {}, - name, value; - - for ( name in newStyle ) { - value = newStyle[ name ]; - if ( oldStyle[ name ] !== value ) { - if ( !shorthandStyles[ name ] ) { - if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { - diff[ name ] = value; - } - } - } - } - - return diff; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { - var o = $.speed( duration, easing, callback ); - - return this.queue( function() { - var animated = $( this ), - baseClass = animated.attr( "class" ) || "", - applyClassChange, - allAnimations = o.children ? animated.find( "*" ).andSelf() : animated; - - // map the animated objects to store the original styles. - allAnimations = allAnimations.map(function() { - var el = $( this ); - return { - el: el, - start: getElementStyles.call( this ) - }; - }); - - // apply class change - applyClassChange = function() { - $.each( classAnimationActions, function(i, action) { - if ( value[ action ] ) { - animated[ action + "Class" ]( value[ action ] ); - } - }); - }; - applyClassChange(); - - // map all animated objects again - calculate new styles and diff - allAnimations = allAnimations.map(function() { - this.end = getElementStyles.call( this.el[ 0 ] ); - this.diff = styleDifference( this.start, this.end ); - return this; - }); - - // apply original class - animated.attr( "class", baseClass ); - - // map all animated objects again - this time collecting a promise - allAnimations = allAnimations.map(function() { - var styleInfo = this, - dfd = $.Deferred(), - opts = jQuery.extend({}, o, { - queue: false, - complete: function() { - dfd.resolve( styleInfo ); - } - }); - - this.el.animate( this.diff, opts ); - return dfd.promise(); - }); - - // once all animations have completed: - $.when.apply( $, allAnimations.get() ).done(function() { - - // set the final class - applyClassChange(); - - // for each animated element, - // clear all css properties that were animated - $.each( arguments, function() { - var el = this.el; - $.each( this.diff, function(key) { - el.css( key, '' ); - }); - }); - - // this is guarnteed to be there if you use jQuery.speed() - // it also handles dequeuing the next anim... - o.complete.call( animated[ 0 ] ); - }); - }); -}; - -$.fn.extend({ - _addClass: $.fn.addClass, - addClass: function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { add: classNames }, speed, easing, callback ) : - this._addClass( classNames ); - }, - - _removeClass: $.fn.removeClass, - removeClass: function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { remove: classNames }, speed, easing, callback ) : - this._removeClass( classNames ); - }, - - _toggleClass: $.fn.toggleClass, - toggleClass: function( classNames, force, speed, easing, callback ) { - if ( typeof force === "boolean" || force === undefined ) { - if ( !speed ) { - // without speed parameter - return this._toggleClass( classNames, force ); - } else { - return $.effects.animateClass.call( this, - (force ? { add: classNames } : { remove: classNames }), - speed, easing, callback ); - } - } else { - // without force parameter - return $.effects.animateClass.call( this, - { toggle: classNames }, force, speed, easing ); - } - }, - - switchClass: function( remove, add, speed, easing, callback) { - return $.effects.animateClass.call( this, { - add: add, - remove: remove - }, speed, easing, callback ); - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -(function() { - -$.extend( $.effects, { - version: "@VERSION", - - // Saves a set of properties in a data storage - save: function( element, set ) { - for( var i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); - } - } - }, - - // Restores a set of previously saved properties from a data storage - restore: function( element, set ) { - var val, i; - for( i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - // support: jQuery 1.6.2 - // http://bugs.jquery.com/ticket/9917 - // jQuery 1.6.2 incorrectly returns undefined for any falsy value. - // We can't differentiate between "" and 0 here, so we just assume - // empty string since it's likely to be a more common value... - if ( val === undefined ) { - val = ""; - } - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if (mode === "toggle") { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - // this should be a little more flexible in the future to handle a string & hash - getBaseline: function( origin, original ) { - var y, x; - switch ( origin[ 0 ] ) { - case "top": y = 0; break; - case "middle": y = 0.5; break; - case "bottom": y = 1; break; - default: y = origin[ 0 ] / original.height; - } - switch ( origin[ 1 ] ) { - case "left": x = 0; break; - case "center": x = 0.5; break; - case "right": x = 1; break; - default: x = origin[ 1 ] / original.width; - } - return { - x: x, - y: y - }; - }, - - // Wraps the element around a wrapper that copies position properties - createWrapper: function( element ) { - - // if the element is already wrapped, return it - if ( element.parent().is( ".ui-effects-wrapper" )) { - return element.parent(); - } - - // wrap the element - var props = { - width: element.outerWidth(true), - height: element.outerHeight(true), - "float": element.css( "float" ) - }, - wrapper = $( "

" ) - .addClass( "ui-effects-wrapper" ) - .css({ - fontSize: "100%", - background: "transparent", - border: "none", - margin: 0, - padding: 0 - }), - // Store the size in case width/height are defined in % - Fixes #5245 - size = { - width: element.width(), - height: element.height() - }, - active = document.activeElement; - - // support: Firefox - // Firefox incorrectly exposes anonymous content - // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 - try { - active.id; - } catch( e ) { - active = document.body; - } - - element.wrap( wrapper ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - - wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element - - // transfer positioning properties to the wrapper - if ( element.css( "position" ) === "static" ) { - wrapper.css({ position: "relative" }); - element.css({ position: "relative" }); - } else { - $.extend( props, { - position: element.css( "position" ), - zIndex: element.css( "z-index" ) - }); - $.each([ "top", "left", "bottom", "right" ], function(i, pos) { - props[ pos ] = element.css( pos ); - if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { - props[ pos ] = "auto"; - } - }); - element.css({ - position: "relative", - top: 0, - left: 0, - right: "auto", - bottom: "auto" - }); - } - element.css(size); - - return wrapper.css( props ).show(); - }, - - removeWrapper: function( element ) { - var active = document.activeElement; - - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - element.parent().replaceWith( element ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - } - - - return element; - }, - - setTransition: function( element, list, factor, value ) { - value = value || {}; - $.each( list, function( i, x ) { - var unit = element.cssUnit( x ); - if ( unit[ 0 ] > 0 ) { - value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; - } - }); - return value; - } -}); - -// return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - - // allow passing all options as the first parameter - if ( $.isPlainObject( effect ) ) { - options = effect; - effect = effect.effect; - } - - // convert to an object - effect = { effect: effect }; - - // catch (effect, null, ...) - if ( options == null ) { - options = {}; - } - - // catch (effect, callback) - if ( $.isFunction( options ) ) { - callback = options; - speed = null; - options = {}; - } - - // catch (effect, speed, ?) - if ( typeof options === "number" || $.fx.speeds[ options ] ) { - callback = speed; - speed = options; - options = {}; - } - - // catch (effect, options, callback) - if ( $.isFunction( speed ) ) { - callback = speed; - speed = null; - } - - // add options to effect - if ( options ) { - $.extend( effect, options ); - } - - speed = speed || options.duration; - effect.duration = $.fx.off ? 0 : - typeof speed === "number" ? speed : - speed in $.fx.speeds ? $.fx.speeds[ speed ] : - $.fx.speeds._default; - - effect.complete = callback || options.complete; - - return effect; -} - -function standardSpeed( speed ) { - // valid standard speeds - if ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) { - return true; - } - - // invalid strings - treat as "normal" speed - if ( typeof speed === "string" && !$.effects.effect[ speed ] ) { - // TODO: remove in 2.0 (#7115) - if ( backCompat && $.effects[ speed ] ) { - return false; - } - return true; - } - - return false; -} - -$.fn.extend({ - effect: function( /* effect, options, speed, callback */ ) { - var args = _normalizeArguments.apply( this, arguments ), - mode = args.mode, - queue = args.queue, - effectMethod = $.effects.effect[ args.effect ], - - // DEPRECATED: remove in 2.0 (#7115) - oldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ]; - - if ( $.fx.off || !( effectMethod || oldEffectMethod ) ) { - // delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, args.complete ); - } else { - return this.each( function() { - if ( args.complete ) { - args.complete.call( this ); - } - }); - } - } - - function run( next ) { - var elem = $( this ), - complete = args.complete, - mode = args.mode; - - function done() { - if ( $.isFunction( complete ) ) { - complete.call( elem[0] ); - } - if ( $.isFunction( next ) ) { - next(); - } - } - - // if the element is hiddden and mode is hide, - // or element is visible and mode is show - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - done(); - } else { - effectMethod.call( elem[0], args, done ); - } - } - - // TODO: remove this check in 2.0, effectMethod will always be true - if ( effectMethod ) { - return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); - } else { - // DEPRECATED: remove in 2.0 (#7115) - return oldEffectMethod.call(this, { - options: args, - duration: args.duration, - callback: args.complete, - mode: args.mode - }); - } - }, - - _show: $.fn.show, - show: function( speed ) { - if ( standardSpeed( speed ) ) { - return this._show.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "show"; - return this.effect.call( this, args ); - } - }, - - _hide: $.fn.hide, - hide: function( speed ) { - if ( standardSpeed( speed ) ) { - return this._hide.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "hide"; - return this.effect.call( this, args ); - } - }, - - // jQuery core overloads toggle and creates _toggle - __toggle: $.fn.toggle, - toggle: function( speed ) { - if ( standardSpeed( speed ) || typeof speed === "boolean" || $.isFunction( speed ) ) { - return this.__toggle.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "toggle"; - return this.effect.call( this, args ); - } - }, - - // helper functions - cssUnit: function(key) { - var style = this.css( key ), - val = []; - - $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { - if ( style.indexOf( unit ) > 0 ) { - val = [ parseFloat( style ), unit ]; - } - }); - return val; - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -(function() { - -// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { - baseEasings[ name ] = function( p ) { - return Math.pow( p, i + 2 ); - }; -}); - -$.extend( baseEasings, { - Sine: function ( p ) { - return 1 - Math.cos( p * Math.PI / 2 ); - }, - Circ: function ( p ) { - return 1 - Math.sqrt( 1 - p * p ); - }, - Elastic: function( p ) { - return p === 0 || p === 1 ? p : - -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); - }, - Back: function( p ) { - return p * p * ( 3 * p - 2 ); - }, - Bounce: function ( p ) { - var pow2, - bounce = 4; - - while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} - return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); - } -}); - -$.each( baseEasings, function( name, easeIn ) { - $.easing[ "easeIn" + name ] = easeIn; - $.easing[ "easeOut" + name ] = function( p ) { - return 1 - easeIn( 1 - p ); - }; - $.easing[ "easeInOut" + name ] = function( p ) { - return p < 0.5 ? - easeIn( p * 2 ) / 2 : - 1 - easeIn( p * -2 + 2 ) / 2; - }; -}); - -})(); - -})(jQuery)); diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js deleted file mode 100644 index 45c1ec2e4..000000000 --- a/ui/jquery.ui.menu.js +++ /dev/null @@ -1,610 +0,0 @@ -/*! - * jQuery UI Menu @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/menu/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function( $, undefined ) { - -var mouseHandled = false; - -$.widget( "ui.menu", { - version: "@VERSION", - defaultElement: "
    ", - delay: 300, - options: { - icons: { - submenu: "ui-icon-carat-1-e" - }, - menus: "ul", - position: { - my: "left top", - at: "right top" - }, - role: "menu", - - // callbacks - blur: null, - focus: null, - select: null - }, - - _create: function() { - this.activeMenu = this.element; - this.element - .uniqueId() - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) - .attr({ - role: this.options.role, - tabIndex: 0 - }) - // need to catch all clicks on disabled menu - // not possible through _on - .bind( "click" + this.eventNamespace, $.proxy(function( event ) { - if ( this.options.disabled ) { - event.preventDefault(); - } - }, this )); - - if ( this.options.disabled ) { - this.element - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } - - this._on({ - // Prevent focus from sticking to links inside menu after clicking - // them (focus should always stay on UL during navigation). - "mousedown .ui-menu-item > a": function( event ) { - event.preventDefault(); - }, - "click .ui-state-disabled > a": function( event ) { - event.preventDefault(); - }, - "click .ui-menu-item:has(a)": function( event ) { - var target = $( event.target ).closest( ".ui-menu-item" ); - if ( !mouseHandled && target.not( ".ui-state-disabled" ).length ) { - mouseHandled = true; - - this.select( event ); - // Open submenu on click - if ( target.has( ".ui-menu" ).length ) { - this.expand( event ); - } else if ( !this.element.is( ":focus" ) ) { - // Redirect focus to the menu - this.element.trigger( "focus", [ true ] ); - - // If the active item is on the top level, let it stay active. - // Otherwise, blur the active item since it is no longer visible. - if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { - clearTimeout( this.timer ); - } - } - } - }, - "mouseenter .ui-menu-item": function( event ) { - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item - // to avoid a jump caused by adjacent elements both having a class with a border - target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); - }, - mouseleave: "collapseAll", - "mouseleave .ui-menu": "collapseAll", - focus: function( event, keepActiveItem ) { - // If there's already an active item, keep it active - // If not, activate the first item - var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 ); - - if ( !keepActiveItem ) { - this.focus( event, item ); - } - }, - blur: function( event ) { - this._delay(function() { - if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { - this.collapseAll( event ); - } - }); - }, - keydown: "_keydown" - }); - - this.refresh(); - - // Clicks outside of a menu collapse any open menus - this._on( this.document, { - click: function( event ) { - if ( !$( event.target ).closest( ".ui-menu" ).length ) { - this.collapseAll( event ); - } - - // Reset the mouseHandled flag - mouseHandled = false; - } - }); - }, - - _destroy: function() { - // Destroy (sub)menus - this.element - .removeAttr( "aria-activedescendant" ) - .find( ".ui-menu" ).andSelf() - .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .show(); - - // Destroy menu items - this.element.find( ".ui-menu-item" ) - .removeClass( "ui-menu-item" ) - .removeAttr( "role" ) - .removeAttr( "aria-disabled" ) - .children( "a" ) - .removeUniqueId() - .removeClass( "ui-corner-all ui-state-hover" ) - .removeAttr( "tabIndex" ) - .removeAttr( "role" ) - .removeAttr( "aria-haspopup" ) - .children().each( function() { - var elem = $( this ); - if ( elem.data( "ui-menu-submenu-carat" ) ) { - elem.remove(); - } - }); - - // Destroy menu dividers - this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); - }, - - _keydown: function( event ) { - var match, prev, character, skip, regex, - preventDefault = true; - - function escape( value ) { - return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); - } - - switch ( event.keyCode ) { - case $.ui.keyCode.PAGE_UP: - this.previousPage( event ); - break; - case $.ui.keyCode.PAGE_DOWN: - this.nextPage( event ); - break; - case $.ui.keyCode.HOME: - this._move( "first", "first", event ); - break; - case $.ui.keyCode.END: - this._move( "last", "last", event ); - break; - case $.ui.keyCode.UP: - this.previous( event ); - break; - case $.ui.keyCode.DOWN: - this.next( event ); - break; - case $.ui.keyCode.LEFT: - this.collapse( event ); - break; - case $.ui.keyCode.RIGHT: - if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { - this.expand( event ); - } - break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: - this._activate( event ); - break; - case $.ui.keyCode.ESCAPE: - this.collapse( event ); - break; - default: - preventDefault = false; - prev = this.previousFilter || ""; - character = String.fromCharCode( event.keyCode ); - skip = false; - - clearTimeout( this.filterTimer ); - - if ( character === prev ) { - skip = true; - } else { - character = prev + character; - } - - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - match = skip && match.index( this.active.next() ) !== -1 ? - this.active.nextAll( ".ui-menu-item" ) : - match; - - // If no matches on the current filter, reset to the last character pressed - // to move down the menu to the first item that starts with that character - if ( !match.length ) { - character = String.fromCharCode( event.keyCode ); - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - } - - if ( match.length ) { - this.focus( event, match ); - if ( match.length > 1 ) { - this.previousFilter = character; - this.filterTimer = this._delay(function() { - delete this.previousFilter; - }, 1000 ); - } else { - delete this.previousFilter; - } - } else { - delete this.previousFilter; - } - } - - if ( preventDefault ) { - event.preventDefault(); - } - }, - - _activate: function( event ) { - if ( !this.active.is( ".ui-state-disabled" ) ) { - if ( this.active.children( "a[aria-haspopup='true']" ).length ) { - this.expand( event ); - } else { - this.select( event ); - } - } - }, - - refresh: function() { - var menus, - icon = this.options.icons.submenu, - submenus = this.element.find( this.options.menus ); - - // Initialize nested menus - submenus.filter( ":not(.ui-menu)" ) - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .hide() - .attr({ - role: this.options.role, - "aria-hidden": "true", - "aria-expanded": "false" - }) - .each(function() { - var menu = $( this ), - item = menu.prev( "a" ), - submenuCarat = $( "" ) - .addClass( "ui-menu-icon ui-icon " + icon ) - .data( "ui-menu-submenu-carat", true ); - - item - .attr( "aria-haspopup", "true" ) - .prepend( submenuCarat ); - menu.attr( "aria-labelledby", item.attr( "id" ) ); - }); - - menus = submenus.add( this.element ); - - // Don't refresh list items that are already adapted - menus.children( ":not(.ui-menu-item):has(a)" ) - .addClass( "ui-menu-item" ) - .attr( "role", "presentation" ) - .children( "a" ) - .uniqueId() - .addClass( "ui-corner-all" ) - .attr({ - tabIndex: -1, - role: this._itemRole() - }); - - // Initialize unlinked menu-items containing spaces and/or dashes only as dividers - menus.children( ":not(.ui-menu-item)" ).each(function() { - var item = $( this ); - // hyphen, em dash, en dash - if ( !/[^\-—–\s]/.test( item.text() ) ) { - item.addClass( "ui-widget-content ui-menu-divider" ); - } - }); - - // Add aria-disabled attribute to any disabled menu item - menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); - - // If the active item has been removed, blur the menu - if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - this.blur(); - } - }, - - _itemRole: function() { - return { - menu: "menuitem", - listbox: "option" - }[ this.options.role ]; - }, - - focus: function( event, item ) { - var nested, focused; - this.blur( event, event && event.type === "focus" ); - - this._scrollIntoView( item ); - - this.active = item.first(); - focused = this.active.children( "a" ).addClass( "ui-state-focus" ); - // Only update aria-activedescendant if there's a role - // otherwise we assume focus is managed elsewhere - if ( this.options.role ) { - this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); - } - - // Highlight active parent menu item, if any - this.active - .parent() - .closest( ".ui-menu-item" ) - .children( "a:first" ) - .addClass( "ui-state-active" ); - - if ( event && event.type === "keydown" ) { - this._close(); - } else { - this.timer = this._delay(function() { - this._close(); - }, this.delay ); - } - - nested = item.children( ".ui-menu" ); - if ( nested.length && ( /^mouse/.test( event.type ) ) ) { - this._startOpening(nested); - } - this.activeMenu = item.parent(); - - this._trigger( "focus", event, { item: item } ); - }, - - _scrollIntoView: function( item ) { - var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; - if ( this._hasScroll() ) { - borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; - paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; - offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; - scroll = this.activeMenu.scrollTop(); - elementHeight = this.activeMenu.height(); - itemHeight = item.height(); - - if ( offset < 0 ) { - this.activeMenu.scrollTop( scroll + offset ); - } else if ( offset + itemHeight > elementHeight ) { - this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); - } - } - }, - - blur: function( event, fromFocus ) { - if ( !fromFocus ) { - clearTimeout( this.timer ); - } - - if ( !this.active ) { - return; - } - - this.active.children( "a" ).removeClass( "ui-state-focus" ); - this.active = null; - - this._trigger( "blur", event, { item: this.active } ); - }, - - _startOpening: function( submenu ) { - clearTimeout( this.timer ); - - // Don't open if already open fixes a Firefox bug that caused a .5 pixel - // shift in the submenu position when mousing over the carat icon - if ( submenu.attr( "aria-hidden" ) !== "true" ) { - return; - } - - this.timer = this._delay(function() { - this._close(); - this._open( submenu ); - }, this.delay ); - }, - - _open: function( submenu ) { - var position = $.extend({ - of: this.active - }, this.options.position ); - - clearTimeout( this.timer ); - this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) - .hide() - .attr( "aria-hidden", "true" ); - - submenu - .show() - .removeAttr( "aria-hidden" ) - .attr( "aria-expanded", "true" ) - .position( position ); - }, - - collapseAll: function( event, all ) { - clearTimeout( this.timer ); - this.timer = this._delay(function() { - // If we were passed an event, look for the submenu that contains the event - var currentMenu = all ? this.element : - $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); - - // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway - if ( !currentMenu.length ) { - currentMenu = this.element; - } - - this._close( currentMenu ); - - this.blur( event ); - this.activeMenu = currentMenu; - }, this.delay ); - }, - - // With no arguments, closes the currently active menu - if nothing is active - // it closes all menus. If passed an argument, it will search for menus BELOW - _close: function( startMenu ) { - if ( !startMenu ) { - startMenu = this.active ? this.active.parent() : this.element; - } - - startMenu - .find( ".ui-menu" ) - .hide() - .attr( "aria-hidden", "true" ) - .attr( "aria-expanded", "false" ) - .end() - .find( "a.ui-state-active" ) - .removeClass( "ui-state-active" ); - }, - - collapse: function( event ) { - var newItem = this.active && - this.active.parent().closest( ".ui-menu-item", this.element ); - if ( newItem && newItem.length ) { - this._close(); - this.focus( event, newItem ); - } - }, - - expand: function( event ) { - var newItem = this.active && - this.active - .children( ".ui-menu " ) - .children( ".ui-menu-item" ) - .first(); - - if ( newItem && newItem.length ) { - this._open( newItem.parent() ); - - // Delay so Firefox will not hide activedescendant change in expanding submenu from AT - this._delay(function() { - this.focus( event, newItem ); - }); - } - }, - - next: function( event ) { - this._move( "next", "first", event ); - }, - - previous: function( event ) { - this._move( "prev", "last", event ); - }, - - isFirstItem: function() { - return this.active && !this.active.prevAll( ".ui-menu-item" ).length; - }, - - isLastItem: function() { - return this.active && !this.active.nextAll( ".ui-menu-item" ).length; - }, - - _move: function( direction, filter, event ) { - var next; - if ( this.active ) { - if ( direction === "first" || direction === "last" ) { - next = this.active - [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) - .eq( -1 ); - } else { - next = this.active - [ direction + "All" ]( ".ui-menu-item" ) - .eq( 0 ); - } - } - if ( !next || !next.length || !this.active ) { - next = this.activeMenu.children( ".ui-menu-item" )[ filter ](); - } - - this.focus( event, next ); - }, - - nextPage: function( event ) { - var item, base, height; - - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isLastItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.nextAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base - height < 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ) - [ !this.active ? "first" : "last" ]() ); - } - }, - - previousPage: function( event ) { - var item, base, height; - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isFirstItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.prevAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base + height > 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); - } - }, - - _hasScroll: function() { - return this.element.outerHeight() < this.element.prop( "scrollHeight" ); - }, - - select: function( event ) { - // TODO: It should never be possible to not have an active item at this - // point, but the tests don't trigger mouseenter before click. - this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); - var ui = { item: this.active }; - if ( !this.active.has( ".ui-menu" ).length ) { - this.collapseAll( event, true ); - } - this._trigger( "select", event, ui ); - } -}); - -}( jQuery )); diff --git a/ui/jquery.ui.mouse.js b/ui/jquery.ui.mouse.js deleted file mode 100644 index cdc063f91..000000000 --- a/ui/jquery.ui.mouse.js +++ /dev/null @@ -1,169 +0,0 @@ -/*! - * jQuery UI Mouse @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/mouse/ - * - * Depends: - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -var mouseHandled = false; -$( document ).mouseup( function( e ) { - mouseHandled = false; -}); - -$.widget("ui.mouse", { - version: "@VERSION", - options: { - cancel: 'input,textarea,button,select,option', - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .bind('mousedown.'+this.widgetName, function(event) { - return that._mouseDown(event); - }) - .bind('click.'+this.widgetName, function(event) { - if (true === $.data(event.target, that.widgetName + '.preventClickEvent')) { - $.removeData(event.target, that.widgetName + '.preventClickEvent'); - event.stopImmediatePropagation(); - return false; - } - }); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind('.'+this.widgetName); - if ( this._mouseMoveDelegate ) { - $(document) - .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); - } - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - if( mouseHandled ) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = (event.which === 1), - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - that.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) { - $.removeData(event.target, this.widgetName + '.preventClickEvent'); - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return that._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return that._mouseUp(event); - }; - $(document) - .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.ui.ie && !(document.documentMode >= 9) && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - - if (event.target === this._mouseDownEvent.target) { - $.data(event.target, this.widgetName + '.preventClickEvent', true); - } - - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(event) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(event) {}, - _mouseDrag: function(event) {}, - _mouseStop: function(event) {}, - _mouseCapture: function(event) { return true; } -}); - -})(jQuery); diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index 5b595a8c0..a5dc31834 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -230,10 +230,6 @@ $.fn.position = function( options ) { } }); - if ( $.fn.bgiframe ) { - elem.bgiframe(); - } - if ( options.using ) { // adds feedback as second argument to using callback, if present using = function( props ) { @@ -478,40 +474,4 @@ $.ui.position = { testElementParent.removeChild( testElement ); })(); -// DEPRECATED -if ( $.uiBackCompat !== false ) { - // offset option - (function( $ ) { - var _position = $.fn.position; - $.fn.position = function( options ) { - if ( !options || !options.offset ) { - return _position.call( this, options ); - } - var offset = options.offset.split( " " ), - at = options.at.split( " " ); - if ( offset.length === 1 ) { - offset[ 1 ] = offset[ 0 ]; - } - if ( /^\d/.test( offset[ 0 ] ) ) { - offset[ 0 ] = "+" + offset[ 0 ]; - } - if ( /^\d/.test( offset[ 1 ] ) ) { - offset[ 1 ] = "+" + offset[ 1 ]; - } - if ( at.length === 1 ) { - if ( /left|center|right/.test( at[ 0 ] ) ) { - at[ 1 ] = "center"; - } else { - at[ 1 ] = at[ 0 ]; - at[ 0 ] = "center"; - } - } - return _position.call( this, $.extend( options, { - at: at[ 0 ] + offset[ 0 ] + " " + at[ 1 ] + offset[ 1 ], - offset: undefined - } ) ); - }; - }( jQuery ) ); -} - }( jQuery ) ); diff --git a/ui/jquery.ui.progressbar.js b/ui/jquery.ui.progressbar.js deleted file mode 100644 index cb561ebc6..000000000 --- a/ui/jquery.ui.progressbar.js +++ /dev/null @@ -1,105 +0,0 @@ -/*! - * jQuery UI Progressbar @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/progressbar/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -$.widget( "ui.progressbar", { - version: "@VERSION", - options: { - value: 0, - max: 100 - }, - - min: 0, - - _create: function() { - this.element - .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) - .attr({ - role: "progressbar", - "aria-valuemin": this.min, - "aria-valuemax": this.options.max, - "aria-valuenow": this._value() - }); - - this.valueDiv = $( "
    " ) - .appendTo( this.element ); - - this.oldValue = this._value(); - this._refreshValue(); - }, - - _destroy: function() { - this.element - .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) - .removeAttr( "role" ) - .removeAttr( "aria-valuemin" ) - .removeAttr( "aria-valuemax" ) - .removeAttr( "aria-valuenow" ); - - this.valueDiv.remove(); - }, - - value: function( newValue ) { - if ( newValue === undefined ) { - return this._value(); - } - - this._setOption( "value", newValue ); - return this; - }, - - _setOption: function( key, value ) { - if ( key === "value" ) { - this.options.value = value; - this._refreshValue(); - if ( this._value() === this.options.max ) { - this._trigger( "complete" ); - } - } - - this._super( key, value ); - }, - - _value: function() { - var val = this.options.value; - // normalize invalid value - if ( typeof val !== "number" ) { - val = 0; - } - return Math.min( this.options.max, Math.max( this.min, val ) ); - }, - - _percentage: function() { - return 100 * this._value() / this.options.max; - }, - - _refreshValue: function() { - var value = this.value(), - percentage = this._percentage(); - - if ( this.oldValue !== value ) { - this.oldValue = value; - this._trigger( "change" ); - } - - this.valueDiv - .toggle( value > this.min ) - .toggleClass( "ui-corner-right", value === this.options.max ) - .width( percentage.toFixed(0) + "%" ); - this.element.attr( "aria-valuenow", value ); - } -}); - -})( jQuery ); diff --git a/ui/jquery.ui.resizable.js b/ui/jquery.ui.resizable.js deleted file mode 100644 index fc4868c37..000000000 --- a/ui/jquery.ui.resizable.js +++ /dev/null @@ -1,801 +0,0 @@ -/*! - * jQuery UI Resizable @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/resizable/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -$.widget("ui.resizable", $.ui.mouse, { - version: "@VERSION", - widgetEventPrefix: "resize", - options: { - alsoResize: false, - animate: false, - animateDuration: "slow", - animateEasing: "swing", - aspectRatio: false, - autoHide: false, - containment: false, - ghost: false, - grid: false, - handles: "e,s,se", - helper: false, - maxHeight: null, - maxWidth: null, - minHeight: 10, - minWidth: 10, - zIndex: 1000 - }, - _create: function() { - - var that = this, o = this.options; - this.element.addClass("ui-resizable"); - - $.extend(this, { - _aspectRatio: !!(o.aspectRatio), - aspectRatio: o.aspectRatio, - originalElement: this.element, - _proportionallyResizeElements: [], - _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null - }); - - //Wrap the element if it cannot hold child nodes - if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { - - //Create a wrapper element and set the wrapper to the new current internal element - this.element.wrap( - $('
    ').css({ - position: this.element.css('position'), - width: this.element.outerWidth(), - height: this.element.outerHeight(), - top: this.element.css('top'), - left: this.element.css('left') - }) - ); - - //Overwrite the original this.element - this.element = this.element.parent().data( - "resizable", this.element.data('resizable') - ); - - this.elementIsWrapper = true; - - //Move margins to the wrapper - this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); - this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); - - //Prevent Safari textarea resize - this.originalResizeStyle = this.originalElement.css('resize'); - this.originalElement.css('resize', 'none'); - - //Push the actual element to our proportionallyResize internal array - this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' })); - - // avoid IE jump (hard set the margin) - this.originalElement.css({ margin: this.originalElement.css('margin') }); - - // fix handlers offset - this._proportionallyResize(); - - } - - this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' }); - if(this.handles.constructor == String) { - - if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw'; - var n = this.handles.split(","); this.handles = {}; - - for(var i = 0; i < n.length; i++) { - - var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle; - var axis = $('
    '); - - // Apply zIndex to all handles - see #7960 - axis.css({ zIndex: o.zIndex }); - - //TODO : What's going on here? - if ('se' == handle) { - axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se'); - }; - - //Insert into internal handles object and append to element - this.handles[handle] = '.ui-resizable-'+handle; - this.element.append(axis); - } - - } - - this._renderAxis = function(target) { - - target = target || this.element; - - for(var i in this.handles) { - - if(this.handles[i].constructor == String) - this.handles[i] = $(this.handles[i], this.element).show(); - - //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls) - if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { - - var axis = $(this.handles[i], this.element), padWrapper = 0; - - //Checking the correct pad and border - padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); - - //The padding type i have to apply... - var padPos = [ 'padding', - /ne|nw|n/.test(i) ? 'Top' : - /se|sw|s/.test(i) ? 'Bottom' : - /^e$/.test(i) ? 'Right' : 'Left' ].join(""); - - target.css(padPos, padWrapper); - - this._proportionallyResize(); - - } - - //TODO: What's that good for? There's not anything to be executed left - if(!$(this.handles[i]).length) - continue; - - } - }; - - //TODO: make renderAxis a prototype function - this._renderAxis(this.element); - - this._handles = $('.ui-resizable-handle', this.element) - .disableSelection(); - - //Matching axis name - this._handles.mouseover(function() { - if (!that.resizing) { - if (this.className) - var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); - //Axis, default = se - that.axis = axis && axis[1] ? axis[1] : 'se'; - } - }); - - //If we want to auto hide the elements - if (o.autoHide) { - this._handles.hide(); - $(this.element) - .addClass("ui-resizable-autohide") - .mouseenter(function() { - if (o.disabled) return; - $(this).removeClass("ui-resizable-autohide"); - that._handles.show(); - }) - .mouseleave(function(){ - if (o.disabled) return; - if (!that.resizing) { - $(this).addClass("ui-resizable-autohide"); - that._handles.hide(); - } - }); - } - - //Initialize the mouse interaction - this._mouseInit(); - - }, - - _destroy: function() { - - this._mouseDestroy(); - - var _destroy = function(exp) { - $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") - .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find('.ui-resizable-handle').remove(); - }; - - //TODO: Unwrap at same DOM position - if (this.elementIsWrapper) { - _destroy(this.element); - var wrapper = this.element; - this.originalElement.css({ - position: wrapper.css('position'), - width: wrapper.outerWidth(), - height: wrapper.outerHeight(), - top: wrapper.css('top'), - left: wrapper.css('left') - }).insertAfter( wrapper ); - wrapper.remove(); - } - - this.originalElement.css('resize', this.originalResizeStyle); - _destroy(this.originalElement); - - return this; - }, - - _mouseCapture: function(event) { - var handle = false; - for (var i in this.handles) { - if ($(this.handles[i])[0] == event.target) { - handle = true; - } - } - - return !this.options.disabled && handle; - }, - - _mouseStart: function(event) { - - var o = this.options, iniPos = this.element.position(), el = this.element; - - this.resizing = true; - this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() }; - - // bugfix for http://dev.jquery.com/ticket/1749 - if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) { - el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left }); - } - - this._renderProxy(); - - var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top')); - - if (o.containment) { - curleft += $(o.containment).scrollLeft() || 0; - curtop += $(o.containment).scrollTop() || 0; - } - - //Store needed variables - this.offset = this.helper.offset(); - this.position = { left: curleft, top: curtop }; - this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalPosition = { left: curleft, top: curtop }; - this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; - this.originalMousePosition = { left: event.pageX, top: event.pageY }; - - //Aspect Ratio - this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); - - var cursor = $('.ui-resizable-' + this.axis).css('cursor'); - $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor); - - el.addClass("ui-resizable-resizing"); - this._propagate("start", event); - return true; - }, - - _mouseDrag: function(event) { - - //Increase performance, avoid regex - var el = this.helper, o = this.options, props = {}, - that = this, smp = this.originalMousePosition, a = this.axis; - - var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0; - var trigger = this._change[a]; - if (!trigger) return false; - - // Calculate the attrs that will be change - var data = trigger.apply(this, [event, dx, dy]); - - // Put this in the mouseDrag handler since the user can start pressing shift while resizing - this._updateVirtualBoundaries(event.shiftKey); - if (this._aspectRatio || event.shiftKey) - data = this._updateRatio(data, event); - - data = this._respectSize(data, event); - - // plugins callbacks need to be called first - this._propagate("resize", event); - - el.css({ - top: this.position.top + "px", left: this.position.left + "px", - width: this.size.width + "px", height: this.size.height + "px" - }); - - if (!this._helper && this._proportionallyResizeElements.length) - this._proportionallyResize(); - - this._updateCache(data); - - // calling the user callback at the end - this._trigger('resize', event, this.ui()); - - return false; - }, - - _mouseStop: function(event) { - - this.resizing = false; - var o = this.options, that = this; - - if(this._helper) { - var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), - soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height, - soffsetw = ista ? 0 : that.sizeDiff.width; - - var s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }, - left = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null, - top = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null; - - if (!o.animate) - this.element.css($.extend(s, { top: top, left: left })); - - that.helper.height(that.size.height); - that.helper.width(that.size.width); - - if (this._helper && !o.animate) this._proportionallyResize(); - } - - $('body').css('cursor', 'auto'); - - this.element.removeClass("ui-resizable-resizing"); - - this._propagate("stop", event); - - if (this._helper) this.helper.remove(); - return false; - - }, - - _updateVirtualBoundaries: function(forceAspectRatio) { - var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b; - - b = { - minWidth: isNumber(o.minWidth) ? o.minWidth : 0, - maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, - minHeight: isNumber(o.minHeight) ? o.minHeight : 0, - maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity - }; - - if(this._aspectRatio || forceAspectRatio) { - // We want to create an enclosing box whose aspect ration is the requested one - // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension - pMinWidth = b.minHeight * this.aspectRatio; - pMinHeight = b.minWidth / this.aspectRatio; - pMaxWidth = b.maxHeight * this.aspectRatio; - pMaxHeight = b.maxWidth / this.aspectRatio; - - if(pMinWidth > b.minWidth) b.minWidth = pMinWidth; - if(pMinHeight > b.minHeight) b.minHeight = pMinHeight; - if(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth; - if(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight; - } - this._vBoundaries = b; - }, - - _updateCache: function(data) { - var o = this.options; - this.offset = this.helper.offset(); - if (isNumber(data.left)) this.position.left = data.left; - if (isNumber(data.top)) this.position.top = data.top; - if (isNumber(data.height)) this.size.height = data.height; - if (isNumber(data.width)) this.size.width = data.width; - }, - - _updateRatio: function(data, event) { - - var o = this.options, cpos = this.position, csize = this.size, a = this.axis; - - if (isNumber(data.height)) data.width = (data.height * this.aspectRatio); - else if (isNumber(data.width)) data.height = (data.width / this.aspectRatio); - - if (a == 'sw') { - data.left = cpos.left + (csize.width - data.width); - data.top = null; - } - if (a == 'nw') { - data.top = cpos.top + (csize.height - data.height); - data.left = cpos.left + (csize.width - data.width); - } - - return data; - }, - - _respectSize: function(data, event) { - - var el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis, - ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), - isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height); - - if (isminw) data.width = o.minWidth; - if (isminh) data.height = o.minHeight; - if (ismaxw) data.width = o.maxWidth; - if (ismaxh) data.height = o.maxHeight; - - var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height; - var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); - - if (isminw && cw) data.left = dw - o.minWidth; - if (ismaxw && cw) data.left = dw - o.maxWidth; - if (isminh && ch) data.top = dh - o.minHeight; - if (ismaxh && ch) data.top = dh - o.maxHeight; - - // fixing jump error on top/left - bug #2330 - var isNotwh = !data.width && !data.height; - if (isNotwh && !data.left && data.top) data.top = null; - else if (isNotwh && !data.top && data.left) data.left = null; - - return data; - }, - - _proportionallyResize: function() { - - var o = this.options; - if (!this._proportionallyResizeElements.length) return; - var element = this.helper || this.element; - - for (var i=0; i < this._proportionallyResizeElements.length; i++) { - - var prel = this._proportionallyResizeElements[i]; - - if (!this.borderDif) { - var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')], - p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')]; - - this.borderDif = $.map(b, function(v, i) { - var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0; - return border + padding; - }); - } - - prel.css({ - height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, - width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 - }); - - }; - - }, - - _renderProxy: function() { - - var el = this.element, o = this.options; - this.elementOffset = el.offset(); - - if(this._helper) { - - this.helper = this.helper || $('
    '); - - // fix ie6 offset TODO: This seems broken - var ie6offset = ($.ui.ie6 ? 1 : 0), - pxyoffset = ( $.ui.ie6 ? 2 : -1 ); - - this.helper.addClass(this._helper).css({ - width: this.element.outerWidth() + pxyoffset, - height: this.element.outerHeight() + pxyoffset, - position: 'absolute', - left: this.elementOffset.left - ie6offset +'px', - top: this.elementOffset.top - ie6offset +'px', - zIndex: ++o.zIndex //TODO: Don't modify option - }); - - this.helper - .appendTo("body") - .disableSelection(); - - } else { - this.helper = this.element; - } - - }, - - _change: { - e: function(event, dx, dy) { - return { width: this.originalSize.width + dx }; - }, - w: function(event, dx, dy) { - var o = this.options, cs = this.originalSize, sp = this.originalPosition; - return { left: sp.left + dx, width: cs.width - dx }; - }, - n: function(event, dx, dy) { - var o = this.options, cs = this.originalSize, sp = this.originalPosition; - return { top: sp.top + dy, height: cs.height - dy }; - }, - s: function(event, dx, dy) { - return { height: this.originalSize.height + dy }; - }, - se: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - sw: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - }, - ne: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - nw: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - } - }, - - _propagate: function(n, event) { - $.ui.plugin.call(this, n, [event, this.ui()]); - (n != "resize" && this._trigger(n, event, this.ui())); - }, - - plugins: {}, - - ui: function() { - return { - originalElement: this.originalElement, - element: this.element, - helper: this.helper, - position: this.position, - size: this.size, - originalSize: this.originalSize, - originalPosition: this.originalPosition - }; - } - -}); - -/* - * Resizable Extensions - */ - -$.ui.plugin.add("resizable", "alsoResize", { - - start: function (event, ui) { - var that = $(this).data("resizable"), o = that.options; - - var _store = function (exp) { - $(exp).each(function() { - var el = $(this); - el.data("resizable-alsoresize", { - width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), - left: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10) - }); - }); - }; - - if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) { - if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } - else { $.each(o.alsoResize, function (exp) { _store(exp); }); } - }else{ - _store(o.alsoResize); - } - }, - - resize: function (event, ui) { - var that = $(this).data("resizable"), o = that.options, os = that.originalSize, op = that.originalPosition; - - var delta = { - height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, - top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 - }, - - _alsoResize = function (exp, c) { - $(exp).each(function() { - var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, - css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left']; - - $.each(css, function (i, prop) { - var sum = (start[prop]||0) + (delta[prop]||0); - if (sum && sum >= 0) - style[prop] = sum || null; - }); - - el.css(style); - }); - }; - - if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) { - $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); - }else{ - _alsoResize(o.alsoResize); - } - }, - - stop: function (event, ui) { - $(this).removeData("resizable-alsoresize"); - } -}); - -$.ui.plugin.add("resizable", "animate", { - - stop: function(event, ui) { - var that = $(this).data("resizable"), o = that.options; - - var pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), - soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height, - soffsetw = ista ? 0 : that.sizeDiff.width; - - var style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, - left = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null, - top = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null; - - that.element.animate( - $.extend(style, top && left ? { top: top, left: left } : {}), { - duration: o.animateDuration, - easing: o.animateEasing, - step: function() { - - var data = { - width: parseInt(that.element.css('width'), 10), - height: parseInt(that.element.css('height'), 10), - top: parseInt(that.element.css('top'), 10), - left: parseInt(that.element.css('left'), 10) - }; - - if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height }); - - // propagating resize, and updating values for each animation step - that._updateCache(data); - that._propagate("resize", event); - - } - } - ); - } - -}); - -$.ui.plugin.add("resizable", "containment", { - - start: function(event, ui) { - var that = $(this).data("resizable"), o = that.options, el = that.element; - var oc = o.containment, ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; - if (!ce) return; - - that.containerElement = $(ce); - - if (/document/.test(oc) || oc == document) { - that.containerOffset = { left: 0, top: 0 }; - that.containerPosition = { left: 0, top: 0 }; - - that.parentData = { - element: $(document), left: 0, top: 0, - width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight - }; - } - - // i'm a node, so compute top, left, right, bottom - else { - var element = $(ce), p = []; - $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); }); - - that.containerOffset = element.offset(); - that.containerPosition = element.position(); - that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; - - var co = that.containerOffset, ch = that.containerSize.height, cw = that.containerSize.width, - width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); - - that.parentData = { - element: ce, left: co.left, top: co.top, width: width, height: height - }; - } - }, - - resize: function(event, ui) { - var that = $(this).data("resizable"), o = that.options, - ps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position, - pRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement; - - if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co; - - if (cp.left < (that._helper ? co.left : 0)) { - that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); - if (pRatio) that.size.height = that.size.width / that.aspectRatio; - that.position.left = o.helper ? co.left : 0; - } - - if (cp.top < (that._helper ? co.top : 0)) { - that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); - if (pRatio) that.size.width = that.size.height * that.aspectRatio; - that.position.top = that._helper ? co.top : 0; - } - - that.offset.left = that.parentData.left+that.position.left; - that.offset.top = that.parentData.top+that.position.top; - - var woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ), - hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); - - var isParent = that.containerElement.get(0) == that.element.parent().get(0), - isOffsetRelative = /relative|absolute/.test(that.containerElement.css('position')); - - if(isParent && isOffsetRelative) woset -= that.parentData.left; - - if (woset + that.size.width >= that.parentData.width) { - that.size.width = that.parentData.width - woset; - if (pRatio) that.size.height = that.size.width / that.aspectRatio; - } - - if (hoset + that.size.height >= that.parentData.height) { - that.size.height = that.parentData.height - hoset; - if (pRatio) that.size.width = that.size.height * that.aspectRatio; - } - }, - - stop: function(event, ui){ - var that = $(this).data("resizable"), o = that.options, cp = that.position, - co = that.containerOffset, cop = that.containerPosition, ce = that.containerElement; - - var helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height; - - if (that._helper && !o.animate && (/relative/).test(ce.css('position'))) - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - - if (that._helper && !o.animate && (/static/).test(ce.css('position'))) - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - - } -}); - -$.ui.plugin.add("resizable", "ghost", { - - start: function(event, ui) { - - var that = $(this).data("resizable"), o = that.options, cs = that.size; - - that.ghost = that.originalElement.clone(); - that.ghost - .css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) - .addClass('ui-resizable-ghost') - .addClass(typeof o.ghost == 'string' ? o.ghost : ''); - - that.ghost.appendTo(that.helper); - - }, - - resize: function(event, ui){ - var that = $(this).data("resizable"), o = that.options; - if (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width }); - }, - - stop: function(event, ui){ - var that = $(this).data("resizable"), o = that.options; - if (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0)); - } - -}); - -$.ui.plugin.add("resizable", "grid", { - - resize: function(event, ui) { - var that = $(this).data("resizable"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey; - o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid; - var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1); - - if (/^(se|s|e)$/.test(a)) { - that.size.width = os.width + ox; - that.size.height = os.height + oy; - } - else if (/^(ne)$/.test(a)) { - that.size.width = os.width + ox; - that.size.height = os.height + oy; - that.position.top = op.top - oy; - } - else if (/^(sw)$/.test(a)) { - that.size.width = os.width + ox; - that.size.height = os.height + oy; - that.position.left = op.left - ox; - } - else { - that.size.width = os.width + ox; - that.size.height = os.height + oy; - that.position.top = op.top - oy; - that.position.left = op.left - ox; - } - } - -}); - -var num = function(v) { - return parseInt(v, 10) || 0; -}; - -var isNumber = function(value) { - return !isNaN(parseInt(value, 10)); -}; - -})(jQuery); diff --git a/ui/jquery.ui.selectable.js b/ui/jquery.ui.selectable.js deleted file mode 100644 index 80e32ca7a..000000000 --- a/ui/jquery.ui.selectable.js +++ /dev/null @@ -1,261 +0,0 @@ -/*! - * jQuery UI Selectable @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/selectable/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -$.widget("ui.selectable", $.ui.mouse, { - version: "@VERSION", - options: { - appendTo: 'body', - autoRefresh: true, - distance: 0, - filter: '*', - tolerance: 'touch' - }, - _create: function() { - var that = this; - - this.element.addClass("ui-selectable"); - - this.dragged = false; - - // cache selectee children based on filter - var selectees; - this.refresh = function() { - selectees = $(that.options.filter, that.element[0]); - selectees.addClass("ui-selectee"); - selectees.each(function() { - var $this = $(this); - var pos = $this.offset(); - $.data(this, "selectable-item", { - element: this, - $element: $this, - left: pos.left, - top: pos.top, - right: pos.left + $this.outerWidth(), - bottom: pos.top + $this.outerHeight(), - startselected: false, - selected: $this.hasClass('ui-selected'), - selecting: $this.hasClass('ui-selecting'), - unselecting: $this.hasClass('ui-unselecting') - }); - }); - }; - this.refresh(); - - this.selectees = selectees.addClass("ui-selectee"); - - this._mouseInit(); - - this.helper = $("
    "); - }, - - _destroy: function() { - this.selectees - .removeClass("ui-selectee") - .removeData("selectable-item"); - this.element - .removeClass("ui-selectable ui-selectable-disabled"); - this._mouseDestroy(); - }, - - _mouseStart: function(event) { - var that = this; - - this.opos = [event.pageX, event.pageY]; - - if (this.options.disabled) - return; - - var options = this.options; - - this.selectees = $(options.filter, this.element[0]); - - this._trigger("start", event); - - $(options.appendTo).append(this.helper); - // position helper (lasso) - this.helper.css({ - "left": event.clientX, - "top": event.clientY, - "width": 0, - "height": 0 - }); - - if (options.autoRefresh) { - this.refresh(); - } - - this.selectees.filter('.ui-selected').each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.startselected = true; - if (!event.metaKey && !event.ctrlKey) { - selectee.$element.removeClass('ui-selected'); - selectee.selected = false; - selectee.$element.addClass('ui-unselecting'); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - }); - - $(event.target).parents().andSelf().each(function() { - var selectee = $.data(this, "selectable-item"); - if (selectee) { - var doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected'); - selectee.$element - .removeClass(doSelect ? "ui-unselecting" : "ui-selected") - .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); - selectee.unselecting = !doSelect; - selectee.selecting = doSelect; - selectee.selected = doSelect; - // selectable (UN)SELECTING callback - if (doSelect) { - that._trigger("selecting", event, { - selecting: selectee.element - }); - } else { - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - return false; - } - }); - - }, - - _mouseDrag: function(event) { - var that = this; - this.dragged = true; - - if (this.options.disabled) - return; - - var options = this.options; - - var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; - if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; } - if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; } - this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); - - this.selectees.each(function() { - var selectee = $.data(this, "selectable-item"); - //prevent helper from being selected if appendTo: selectable - if (!selectee || selectee.element == that.element[0]) - return; - var hit = false; - if (options.tolerance == 'touch') { - hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); - } else if (options.tolerance == 'fit') { - hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); - } - - if (hit) { - // SELECT - if (selectee.selected) { - selectee.$element.removeClass('ui-selected'); - selectee.selected = false; - } - if (selectee.unselecting) { - selectee.$element.removeClass('ui-unselecting'); - selectee.unselecting = false; - } - if (!selectee.selecting) { - selectee.$element.addClass('ui-selecting'); - selectee.selecting = true; - // selectable SELECTING callback - that._trigger("selecting", event, { - selecting: selectee.element - }); - } - } else { - // UNSELECT - if (selectee.selecting) { - if ((event.metaKey || event.ctrlKey) && selectee.startselected) { - selectee.$element.removeClass('ui-selecting'); - selectee.selecting = false; - selectee.$element.addClass('ui-selected'); - selectee.selected = true; - } else { - selectee.$element.removeClass('ui-selecting'); - selectee.selecting = false; - if (selectee.startselected) { - selectee.$element.addClass('ui-unselecting'); - selectee.unselecting = true; - } - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - if (selectee.selected) { - if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { - selectee.$element.removeClass('ui-selected'); - selectee.selected = false; - - selectee.$element.addClass('ui-unselecting'); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - } - }); - - return false; - }, - - _mouseStop: function(event) { - var that = this; - - this.dragged = false; - - var options = this.options; - - $('.ui-unselecting', this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass('ui-unselecting'); - selectee.unselecting = false; - selectee.startselected = false; - that._trigger("unselected", event, { - unselected: selectee.element - }); - }); - $('.ui-selecting', this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); - selectee.selecting = false; - selectee.selected = true; - selectee.startselected = true; - that._trigger("selected", event, { - selected: selectee.element - }); - }); - this._trigger("stop", event); - - this.helper.remove(); - - return false; - } - -}); - -})(jQuery); diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js deleted file mode 100644 index 18f7113d4..000000000 --- a/ui/jquery.ui.slider.js +++ /dev/null @@ -1,644 +0,0 @@ -/*! - * jQuery UI Slider @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/slider/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -// number of pages in a slider -// (how many times can you page up/down to go through the whole range) -var numPages = 5; - -$.widget( "ui.slider", $.ui.mouse, { - version: "@VERSION", - widgetEventPrefix: "slide", - - options: { - animate: false, - distance: 0, - max: 100, - min: 0, - orientation: "horizontal", - range: false, - step: 1, - value: 0, - values: null - }, - - _create: function() { - var i, handleCount, - o = this.options, - existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), - handle = "", - handles = []; - - this._keySliding = false; - this._mouseSliding = false; - this._animateOff = true; - this._handleIndex = null; - this._detectOrientation(); - this._mouseInit(); - - this.element - .addClass( "ui-slider" + - " ui-slider-" + this.orientation + - " ui-widget" + - " ui-widget-content" + - " ui-corner-all" + - ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); - - this.range = $([]); - - if ( o.range ) { - if ( o.range === true ) { - if ( !o.values ) { - o.values = [ this._valueMin(), this._valueMin() ]; - } - if ( o.values.length && o.values.length !== 2 ) { - o.values = [ o.values[0], o.values[0] ]; - } - } - - this.range = $( "
    " ) - .appendTo( this.element ) - .addClass( "ui-slider-range" + - // note: this isn't the most fittingly semantic framework class for this element, - // but worked best visually with a variety of themes - " ui-widget-header" + - ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); - } - - handleCount = ( o.values && o.values.length ) || 1; - - for ( i = existingHandles.length; i < handleCount; i++ ) { - handles.push( handle ); - } - - this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); - - this.handle = this.handles.eq( 0 ); - - this.handles.add( this.range ).filter( "a" ) - .click(function( event ) { - event.preventDefault(); - }) - .mouseenter(function() { - if ( !o.disabled ) { - $( this ).addClass( "ui-state-hover" ); - } - }) - .mouseleave(function() { - $( this ).removeClass( "ui-state-hover" ); - }) - .focus(function() { - if ( !o.disabled ) { - $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); - $( this ).addClass( "ui-state-focus" ); - } else { - $( this ).blur(); - } - }) - .blur(function() { - $( this ).removeClass( "ui-state-focus" ); - }); - - this.handles.each(function( i ) { - $( this ).data( "ui-slider-handle-index", i ); - }); - - this._on( this.handles, { - keydown: function( event ) { - var allowed, curVal, newVal, step, - index = $( event.target ).data( "ui-slider-handle-index" ); - - switch ( event.keyCode ) { - case $.ui.keyCode.HOME: - case $.ui.keyCode.END: - case $.ui.keyCode.PAGE_UP: - case $.ui.keyCode.PAGE_DOWN: - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - event.preventDefault(); - if ( !this._keySliding ) { - this._keySliding = true; - $( event.target ).addClass( "ui-state-active" ); - allowed = this._start( event, index ); - if ( allowed === false ) { - return; - } - } - break; - } - - step = this.options.step; - if ( this.options.values && this.options.values.length ) { - curVal = newVal = this.values( index ); - } else { - curVal = newVal = this.value(); - } - - switch ( event.keyCode ) { - case $.ui.keyCode.HOME: - newVal = this._valueMin(); - break; - case $.ui.keyCode.END: - newVal = this._valueMax(); - break; - case $.ui.keyCode.PAGE_UP: - newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) ); - break; - case $.ui.keyCode.PAGE_DOWN: - newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) ); - break; - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - if ( curVal === this._valueMax() ) { - return; - } - newVal = this._trimAlignValue( curVal + step ); - break; - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - if ( curVal === this._valueMin() ) { - return; - } - newVal = this._trimAlignValue( curVal - step ); - break; - } - - this._slide( event, index, newVal ); - }, - keyup: function( event ) { - var index = $( event.target ).data( "ui-slider-handle-index" ); - - if ( this._keySliding ) { - this._keySliding = false; - this._stop( event, index ); - this._change( event, index ); - $( event.target ).removeClass( "ui-state-active" ); - } - } - }); - - this._refreshValue(); - - this._animateOff = false; - }, - - _destroy: function() { - this.handles.remove(); - this.range.remove(); - - this.element - .removeClass( "ui-slider" + - " ui-slider-horizontal" + - " ui-slider-vertical" + - " ui-slider-disabled" + - " ui-widget" + - " ui-widget-content" + - " ui-corner-all" ); - - this._mouseDestroy(); - }, - - _mouseCapture: function( event ) { - var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, - that = this, - o = this.options; - - if ( o.disabled ) { - return false; - } - - this.elementSize = { - width: this.element.outerWidth(), - height: this.element.outerHeight() - }; - this.elementOffset = this.element.offset(); - - position = { x: event.pageX, y: event.pageY }; - normValue = this._normValueFromMouse( position ); - distance = this._valueMax() - this._valueMin() + 1; - this.handles.each(function( i ) { - var thisDistance = Math.abs( normValue - that.values(i) ); - if ( distance > thisDistance ) { - distance = thisDistance; - closestHandle = $( this ); - index = i; - } - }); - - // workaround for bug #3736 (if both handles of a range are at 0, - // the first is always used as the one with least distance, - // and moving it is obviously prevented by preventing negative ranges) - if( o.range === true && this.values(1) === o.min ) { - index += 1; - closestHandle = $( this.handles[index] ); - } - - allowed = this._start( event, index ); - if ( allowed === false ) { - return false; - } - this._mouseSliding = true; - - this._handleIndex = index; - - closestHandle - .addClass( "ui-state-active" ) - .focus(); - - offset = closestHandle.offset(); - mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); - this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { - left: event.pageX - offset.left - ( closestHandle.width() / 2 ), - top: event.pageY - offset.top - - ( closestHandle.height() / 2 ) - - ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - - ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + - ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) - }; - - if ( !this.handles.hasClass( "ui-state-hover" ) ) { - this._slide( event, index, normValue ); - } - this._animateOff = true; - return true; - }, - - _mouseStart: function() { - return true; - }, - - _mouseDrag: function( event ) { - var position = { x: event.pageX, y: event.pageY }, - normValue = this._normValueFromMouse( position ); - - this._slide( event, this._handleIndex, normValue ); - - return false; - }, - - _mouseStop: function( event ) { - this.handles.removeClass( "ui-state-active" ); - this._mouseSliding = false; - - this._stop( event, this._handleIndex ); - this._change( event, this._handleIndex ); - - this._handleIndex = null; - this._clickOffset = null; - this._animateOff = false; - - return false; - }, - - _detectOrientation: function() { - this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; - }, - - _normValueFromMouse: function( position ) { - var pixelTotal, - pixelMouse, - percentMouse, - valueTotal, - valueMouse; - - if ( this.orientation === "horizontal" ) { - pixelTotal = this.elementSize.width; - pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); - } else { - pixelTotal = this.elementSize.height; - pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); - } - - percentMouse = ( pixelMouse / pixelTotal ); - if ( percentMouse > 1 ) { - percentMouse = 1; - } - if ( percentMouse < 0 ) { - percentMouse = 0; - } - if ( this.orientation === "vertical" ) { - percentMouse = 1 - percentMouse; - } - - valueTotal = this._valueMax() - this._valueMin(); - valueMouse = this._valueMin() + percentMouse * valueTotal; - - return this._trimAlignValue( valueMouse ); - }, - - _start: function( event, index ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - return this._trigger( "start", event, uiHash ); - }, - - _slide: function( event, index, newVal ) { - var otherVal, - newValues, - allowed; - - if ( this.options.values && this.options.values.length ) { - otherVal = this.values( index ? 0 : 1 ); - - if ( ( this.options.values.length === 2 && this.options.range === true ) && - ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) - ) { - newVal = otherVal; - } - - if ( newVal !== this.values( index ) ) { - newValues = this.values(); - newValues[ index ] = newVal; - // A slide can be canceled by returning false from the slide callback - allowed = this._trigger( "slide", event, { - handle: this.handles[ index ], - value: newVal, - values: newValues - } ); - otherVal = this.values( index ? 0 : 1 ); - if ( allowed !== false ) { - this.values( index, newVal, true ); - } - } - } else { - if ( newVal !== this.value() ) { - // A slide can be canceled by returning false from the slide callback - allowed = this._trigger( "slide", event, { - handle: this.handles[ index ], - value: newVal - } ); - if ( allowed !== false ) { - this.value( newVal ); - } - } - } - }, - - _stop: function( event, index ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - - this._trigger( "stop", event, uiHash ); - }, - - _change: function( event, index ) { - if ( !this._keySliding && !this._mouseSliding ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - - this._trigger( "change", event, uiHash ); - } - }, - - value: function( newValue ) { - if ( arguments.length ) { - this.options.value = this._trimAlignValue( newValue ); - this._refreshValue(); - this._change( null, 0 ); - return; - } - - return this._value(); - }, - - values: function( index, newValue ) { - var vals, - newValues, - i; - - if ( arguments.length > 1 ) { - this.options.values[ index ] = this._trimAlignValue( newValue ); - this._refreshValue(); - this._change( null, index ); - return; - } - - if ( arguments.length ) { - if ( $.isArray( arguments[ 0 ] ) ) { - vals = this.options.values; - newValues = arguments[ 0 ]; - for ( i = 0; i < vals.length; i += 1 ) { - vals[ i ] = this._trimAlignValue( newValues[ i ] ); - this._change( null, i ); - } - this._refreshValue(); - } else { - if ( this.options.values && this.options.values.length ) { - return this._values( index ); - } else { - return this.value(); - } - } - } else { - return this._values(); - } - }, - - _setOption: function( key, value ) { - var i, - valsLength = 0; - - if ( $.isArray( this.options.values ) ) { - valsLength = this.options.values.length; - } - - $.Widget.prototype._setOption.apply( this, arguments ); - - switch ( key ) { - case "disabled": - if ( value ) { - this.handles.filter( ".ui-state-focus" ).blur(); - this.handles.removeClass( "ui-state-hover" ); - this.handles.prop( "disabled", true ); - this.element.addClass( "ui-disabled" ); - } else { - this.handles.prop( "disabled", false ); - this.element.removeClass( "ui-disabled" ); - } - break; - case "orientation": - this._detectOrientation(); - this.element - .removeClass( "ui-slider-horizontal ui-slider-vertical" ) - .addClass( "ui-slider-" + this.orientation ); - this._refreshValue(); - break; - case "value": - this._animateOff = true; - this._refreshValue(); - this._change( null, 0 ); - this._animateOff = false; - break; - case "values": - this._animateOff = true; - this._refreshValue(); - for ( i = 0; i < valsLength; i += 1 ) { - this._change( null, i ); - } - this._animateOff = false; - break; - case "min": - case "max": - this._animateOff = true; - this._refreshValue(); - this._animateOff = false; - break; - } - }, - - //internal value getter - // _value() returns value trimmed by min and max, aligned by step - _value: function() { - var val = this.options.value; - val = this._trimAlignValue( val ); - - return val; - }, - - //internal values getter - // _values() returns array of values trimmed by min and max, aligned by step - // _values( index ) returns single value trimmed by min and max, aligned by step - _values: function( index ) { - var val, - vals, - i; - - if ( arguments.length ) { - val = this.options.values[ index ]; - val = this._trimAlignValue( val ); - - return val; - } else { - // .slice() creates a copy of the array - // this copy gets trimmed by min and max and then returned - vals = this.options.values.slice(); - for ( i = 0; i < vals.length; i+= 1) { - vals[ i ] = this._trimAlignValue( vals[ i ] ); - } - - return vals; - } - }, - - // returns the step-aligned value that val is closest to, between (inclusive) min and max - _trimAlignValue: function( val ) { - if ( val <= this._valueMin() ) { - return this._valueMin(); - } - if ( val >= this._valueMax() ) { - return this._valueMax(); - } - var step = ( this.options.step > 0 ) ? this.options.step : 1, - valModStep = (val - this._valueMin()) % step, - alignValue = val - valModStep; - - if ( Math.abs(valModStep) * 2 >= step ) { - alignValue += ( valModStep > 0 ) ? step : ( -step ); - } - - // Since JavaScript has problems with large floats, round - // the final value to 5 digits after the decimal point (see #4124) - return parseFloat( alignValue.toFixed(5) ); - }, - - _valueMin: function() { - return this.options.min; - }, - - _valueMax: function() { - return this.options.max; - }, - - _refreshValue: function() { - var lastValPercent, valPercent, value, valueMin, valueMax, - oRange = this.options.range, - o = this.options, - that = this, - animate = ( !this._animateOff ) ? o.animate : false, - _set = {}; - - if ( this.options.values && this.options.values.length ) { - this.handles.each(function( i ) { - valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; - _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; - $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); - if ( that.options.range === true ) { - if ( that.orientation === "horizontal" ) { - if ( i === 0 ) { - that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); - } - if ( i === 1 ) { - that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - } else { - if ( i === 0 ) { - that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); - } - if ( i === 1 ) { - that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - } - } - lastValPercent = valPercent; - }); - } else { - value = this.value(); - valueMin = this._valueMin(); - valueMax = this._valueMax(); - valPercent = ( valueMax !== valueMin ) ? - ( value - valueMin ) / ( valueMax - valueMin ) * 100 : - 0; - _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; - this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); - - if ( oRange === "min" && this.orientation === "horizontal" ) { - this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); - } - if ( oRange === "max" && this.orientation === "horizontal" ) { - this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - if ( oRange === "min" && this.orientation === "vertical" ) { - this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); - } - if ( oRange === "max" && this.orientation === "vertical" ) { - this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - } - } - -}); - -}(jQuery)); diff --git a/ui/jquery.ui.sortable.js b/ui/jquery.ui.sortable.js deleted file mode 100644 index a2132a9bd..000000000 --- a/ui/jquery.ui.sortable.js +++ /dev/null @@ -1,1096 +0,0 @@ -/*! - * jQuery UI Sortable @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/sortable/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -$.widget("ui.sortable", $.ui.mouse, { - version: "@VERSION", - widgetEventPrefix: "sort", - ready: false, - options: { - appendTo: "parent", - axis: false, - connectWith: false, - containment: false, - cursor: 'auto', - cursorAt: false, - dropOnEmpty: true, - forcePlaceholderSize: false, - forceHelperSize: false, - grid: false, - handle: false, - helper: "original", - items: '> *', - opacity: false, - placeholder: false, - revert: false, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - tolerance: "intersect", - zIndex: 1000 - }, - _create: function() { - - var o = this.options; - this.containerCache = {}; - this.element.addClass("ui-sortable"); - - //Get the items - this.refresh(); - - //Let's determine if the items are being displayed horizontally - this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false; - - //Let's determine the parent's offset - this.offset = this.element.offset(); - - //Initialize mouse events for interaction - this._mouseInit(); - - //We're ready to go - this.ready = true - - }, - - _destroy: function() { - this.element - .removeClass("ui-sortable ui-sortable-disabled"); - this._mouseDestroy(); - - for ( var i = this.items.length - 1; i >= 0; i-- ) - this.items[i].item.removeData(this.widgetName + "-item"); - - return this; - }, - - _setOption: function(key, value){ - if ( key === "disabled" ) { - this.options[ key ] = value; - - this.widget().toggleClass( "ui-sortable-disabled", !!value ); - } else { - // Don't call widget base _setOption for disable as it adds ui-state-disabled class - $.Widget.prototype._setOption.apply(this, arguments); - } - }, - - _mouseCapture: function(event, overrideHandle) { - var that = this; - - if (this.reverting) { - return false; - } - - if(this.options.disabled || this.options.type == 'static') return false; - - //We have to refresh the items data once first - this._refreshItems(event); - - //Find out if the clicked node (or one of its parents) is a actual item in this.items - var currentItem = null, nodes = $(event.target).parents().each(function() { - if($.data(this, that.widgetName + '-item') == that) { - currentItem = $(this); - return false; - } - }); - if($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target); - - if(!currentItem) return false; - if(this.options.handle && !overrideHandle) { - var validHandle = false; - - $(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; }); - if(!validHandle) return false; - } - - this.currentItem = currentItem; - this._removeCurrentsFromItems(); - return true; - - }, - - _mouseStart: function(event, overrideHandle, noActivation) { - - var o = this.options; - this.currentContainer = this; - - //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture - this.refreshPositions(); - - //Create and append the visible helper - this.helper = this._createHelper(event); - - //Cache the helper size - this._cacheHelperProportions(); - - /* - * - Position generation - - * This block generates everything position related - it's the core of draggables. - */ - - //Cache the margins of the original element - this._cacheMargins(); - - //Get the next scrolling parent - this.scrollParent = this.helper.scrollParent(); - - //The element's absolute position on the page minus margins - this.offset = this.currentItem.offset(); - this.offset = { - top: this.offset.top - this.margins.top, - left: this.offset.left - this.margins.left - }; - - $.extend(this.offset, { - click: { //Where the click happened, relative to the element - left: event.pageX - this.offset.left, - top: event.pageY - this.offset.top - }, - parent: this._getParentOffset(), - relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper - }); - - // Only after we got the offset, we can change the helper's position to absolute - // TODO: Still need to figure out a way to make relative sorting possible - this.helper.css("position", "absolute"); - this.cssPosition = this.helper.css("position"); - - //Generate the original position - this.originalPosition = this._generatePosition(event); - this.originalPageX = event.pageX; - this.originalPageY = event.pageY; - - //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied - (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); - - //Cache the former DOM position - this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; - - //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way - if(this.helper[0] != this.currentItem[0]) { - this.currentItem.hide(); - } - - //Create the placeholder - this._createPlaceholder(); - - //Set a containment if given in the options - if(o.containment) - this._setContainment(); - - if(o.cursor) { // cursor option - if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor"); - $('body').css("cursor", o.cursor); - } - - if(o.opacity) { // opacity option - if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity"); - this.helper.css("opacity", o.opacity); - } - - if(o.zIndex) { // zIndex option - if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex"); - this.helper.css("zIndex", o.zIndex); - } - - //Prepare scrolling - if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') - this.overflowOffset = this.scrollParent.offset(); - - //Call callbacks - this._trigger("start", event, this._uiHash()); - - //Recache the helper size - if(!this._preserveHelperProportions) - this._cacheHelperProportions(); - - - //Post 'activate' events to possible containers - if(!noActivation) { - for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, this._uiHash(this)); } - } - - //Prepare possible droppables - if($.ui.ddmanager) - $.ui.ddmanager.current = this; - - if ($.ui.ddmanager && !o.dropBehaviour) - $.ui.ddmanager.prepareOffsets(this, event); - - this.dragging = true; - - this.helper.addClass("ui-sortable-helper"); - this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position - return true; - - }, - - _mouseDrag: function(event) { - - //Compute the helpers position - this.position = this._generatePosition(event); - this.positionAbs = this._convertPositionTo("absolute"); - - if (!this.lastPositionAbs) { - this.lastPositionAbs = this.positionAbs; - } - - //Do scrolling - if(this.options.scroll) { - var o = this.options, scrolled = false; - if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { - - if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; - else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; - - if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; - else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; - - } else { - - if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) - scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); - else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) - scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); - - if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) - scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); - else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) - scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); - - } - - if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) - $.ui.ddmanager.prepareOffsets(this, event); - } - - //Regenerate the absolute position used for position checks - this.positionAbs = this._convertPositionTo("absolute"); - - //Set the helper position - if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px'; - if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px'; - - //Rearrange - for (var i = this.items.length - 1; i >= 0; i--) { - - //Cache variables and intersection, continue if no intersection - var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item); - if (!intersection) continue; - - // Only put the placeholder inside the current Container, skip all - // items form other containers. This works because when moving - // an item from one container to another the - // currentContainer is switched before the placeholder is moved. - // - // Without this moving items in "sub-sortables" can cause the placeholder to jitter - // beetween the outer and inner container. - if (item.instance !== this.currentContainer) continue; - - if (itemElement != this.currentItem[0] //cannot intersect with itself - && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before - && !$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked - && (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true) - //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container - ) { - - this.direction = intersection == 1 ? "down" : "up"; - - if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { - this._rearrange(event, item); - } else { - break; - } - - this._trigger("change", event, this._uiHash()); - break; - } - } - - //Post events to containers - this._contactContainers(event); - - //Interconnect with droppables - if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); - - //Call callbacks - this._trigger('sort', event, this._uiHash()); - - this.lastPositionAbs = this.positionAbs; - return false; - - }, - - _mouseStop: function(event, noPropagation) { - - if(!event) return; - - //If we are using droppables, inform the manager about the drop - if ($.ui.ddmanager && !this.options.dropBehaviour) - $.ui.ddmanager.drop(this, event); - - if(this.options.revert) { - var that = this; - var cur = this.placeholder.offset(); - - this.reverting = true; - - $(this.helper).animate({ - left: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft), - top: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop) - }, parseInt(this.options.revert, 10) || 500, function() { - that._clear(event); - }); - } else { - this._clear(event, noPropagation); - } - - return false; - - }, - - cancel: function() { - - if(this.dragging) { - - this._mouseUp({ target: null }); - - if(this.options.helper == "original") - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - else - this.currentItem.show(); - - //Post deactivating events to containers - for (var i = this.containers.length - 1; i >= 0; i--){ - this.containers[i]._trigger("deactivate", null, this._uiHash(this)); - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", null, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - if (this.placeholder) { - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove(); - - $.extend(this, { - helper: null, - dragging: false, - reverting: false, - _noFinalSort: null - }); - - if(this.domPosition.prev) { - $(this.domPosition.prev).after(this.currentItem); - } else { - $(this.domPosition.parent).prepend(this.currentItem); - } - } - - return this; - - }, - - serialize: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected); - var str = []; o = o || {}; - - $(items).each(function() { - var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); - if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2])); - }); - - if(!str.length && o.key) { - str.push(o.key + '='); - } - - return str.join('&'); - - }, - - toArray: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected); - var ret = []; o = o || {}; - - items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); }); - return ret; - - }, - - /* Be careful with the following core functions */ - _intersectsWith: function(item) { - - var x1 = this.positionAbs.left, - x2 = x1 + this.helperProportions.width, - y1 = this.positionAbs.top, - y2 = y1 + this.helperProportions.height; - - var l = item.left, - r = l + item.width, - t = item.top, - b = t + item.height; - - var dyClick = this.offset.click.top, - dxClick = this.offset.click.left; - - var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; - - if( this.options.tolerance == "pointer" - || this.options.forcePointerForContainers - || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height']) - ) { - return isOverElement; - } else { - - return (l < x1 + (this.helperProportions.width / 2) // Right Half - && x2 - (this.helperProportions.width / 2) < r // Left Half - && t < y1 + (this.helperProportions.height / 2) // Bottom Half - && y2 - (this.helperProportions.height / 2) < b ); // Top Half - - } - }, - - _intersectsWithPointer: function(item) { - - var isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), - isOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), - isOverElement = isOverElementHeight && isOverElementWidth, - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (!isOverElement) - return false; - - return this.floating ? - ( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 ) - : ( verticalDirection && (verticalDirection == "down" ? 2 : 1) ); - - }, - - _intersectsWithSides: function(item) { - - var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), - isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (this.floating && horizontalDirection) { - return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf)); - } else { - return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf)); - } - - }, - - _getDragVerticalDirection: function() { - var delta = this.positionAbs.top - this.lastPositionAbs.top; - return delta != 0 && (delta > 0 ? "down" : "up"); - }, - - _getDragHorizontalDirection: function() { - var delta = this.positionAbs.left - this.lastPositionAbs.left; - return delta != 0 && (delta > 0 ? "right" : "left"); - }, - - refresh: function(event) { - this._refreshItems(event); - this.refreshPositions(); - return this; - }, - - _connectWith: function() { - var options = this.options; - return options.connectWith.constructor == String - ? [options.connectWith] - : options.connectWith; - }, - - _getItemsAsjQuery: function(connected) { - - var items = []; - var queries = []; - var connectWith = this._connectWith(); - - if(connectWith && connected) { - for (var i = connectWith.length - 1; i >= 0; i--){ - var cur = $(connectWith[i]); - for (var j = cur.length - 1; j >= 0; j--){ - var inst = $.data(cur[j], this.widgetName); - if(inst && inst != this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]); - } - }; - }; - } - - queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]); - - for (var i = queries.length - 1; i >= 0; i--){ - queries[i][0].each(function() { - items.push(this); - }); - }; - - return $(items); - - }, - - _removeCurrentsFromItems: function() { - - var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); - - this.items = $.grep(this.items, function (item) { - for (var j=0; j < list.length; j++) { - if(list[j] == item.item[0]) - return false; - }; - return true; - }); - - }, - - _refreshItems: function(event) { - - this.items = []; - this.containers = [this]; - var items = this.items; - var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]]; - var connectWith = this._connectWith(); - - if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down - for (var i = connectWith.length - 1; i >= 0; i--){ - var cur = $(connectWith[i]); - for (var j = cur.length - 1; j >= 0; j--){ - var inst = $.data(cur[j], this.widgetName); - if(inst && inst != this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); - this.containers.push(inst); - } - }; - }; - } - - for (var i = queries.length - 1; i >= 0; i--) { - var targetData = queries[i][1]; - var _queries = queries[i][0]; - - for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) { - var item = $(_queries[j]); - - item.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager) - - items.push({ - item: item, - instance: targetData, - width: 0, height: 0, - left: 0, top: 0 - }); - }; - }; - - }, - - refreshPositions: function(fast) { - - //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change - if(this.offsetParent && this.helper) { - this.offset.parent = this._getParentOffset(); - } - - for (var i = this.items.length - 1; i >= 0; i--){ - var item = this.items[i]; - - //We ignore calculating positions of all connected containers when we're not over them - if(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0]) - continue; - - var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; - - if (!fast) { - item.width = t.outerWidth(); - item.height = t.outerHeight(); - } - - var p = t.offset(); - item.left = p.left; - item.top = p.top; - }; - - if(this.options.custom && this.options.custom.refreshContainers) { - this.options.custom.refreshContainers.call(this); - } else { - for (var i = this.containers.length - 1; i >= 0; i--){ - var p = this.containers[i].element.offset(); - this.containers[i].containerCache.left = p.left; - this.containers[i].containerCache.top = p.top; - this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); - this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); - }; - } - - return this; - }, - - _createPlaceholder: function(that) { - that = that || this; - var o = that.options; - - if(!o.placeholder || o.placeholder.constructor == String) { - var className = o.placeholder; - o.placeholder = { - element: function() { - - var el = $(document.createElement(that.currentItem[0].nodeName)) - .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") - .removeClass("ui-sortable-helper")[0]; - - if(!className) - el.style.visibility = "hidden"; - - return el; - }, - update: function(container, p) { - - // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that - // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified - if(className && !o.forcePlaceholderSize) return; - - //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item - if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); }; - if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); }; - } - }; - } - - //Create the placeholder - that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); - - //Append it after the actual current item - that.currentItem.after(that.placeholder); - - //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) - o.placeholder.update(that, that.placeholder); - - }, - - _contactContainers: function(event) { - - // get innermost container that intersects with item - var innermostContainer = null, innermostIndex = null; - - - for (var i = this.containers.length - 1; i >= 0; i--){ - - // never consider a container that's located within the item itself - if($.contains(this.currentItem[0], this.containers[i].element[0])) - continue; - - if(this._intersectsWith(this.containers[i].containerCache)) { - - // if we've already found a container and it's more "inner" than this, then continue - if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) - continue; - - innermostContainer = this.containers[i]; - innermostIndex = i; - - } else { - // container doesn't intersect. trigger "out" event if necessary - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", event, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - // if no intersecting containers found, return - if(!innermostContainer) return; - - // move the item into the container if it's not there already - if(this.containers.length === 1) { - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } else { - - //When entering a new container, we will find the item with the least distance and append our item near it - var dist = 10000; var itemWithLeastDistance = null; - var posProperty = this.containers[innermostIndex].floating ? 'left' : 'top'; - var sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height'; - var base = this.positionAbs[posProperty] + this.offset.click[posProperty]; - for (var j = this.items.length - 1; j >= 0; j--) { - if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue; - if(this.items[j].item[0] == this.currentItem[0]) continue; - var cur = this.items[j].item.offset()[posProperty]; - var nearBottom = false; - if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ - nearBottom = true; - cur += this.items[j][sizeProperty]; - } - - if(Math.abs(cur - base) < dist) { - dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; - this.direction = nearBottom ? "up": "down"; - } - } - - if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled - return; - - this.currentContainer = this.containers[innermostIndex]; - itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); - this._trigger("change", event, this._uiHash()); - this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); - - //Update the placeholder - this.options.placeholder.update(this.currentContainer, this.placeholder); - - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - - - }, - - _createHelper: function(event) { - - var o = this.options; - var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem); - - if(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already - $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); - - if(helper[0] == this.currentItem[0]) - this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; - - if(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width()); - if(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height()); - - return helper; - - }, - - _adjustOffsetFromHelper: function(obj) { - if (typeof obj == 'string') { - obj = obj.split(' '); - } - if ($.isArray(obj)) { - obj = {left: +obj[0], top: +obj[1] || 0}; - } - if ('left' in obj) { - this.offset.click.left = obj.left + this.margins.left; - } - if ('right' in obj) { - this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; - } - if ('top' in obj) { - this.offset.click.top = obj.top + this.margins.top; - } - if ('bottom' in obj) { - this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; - } - }, - - _getParentOffset: function() { - - - //Get the offsetParent and cache its position - this.offsetParent = this.helper.offsetParent(); - var po = this.offsetParent.offset(); - - // This is a special case where we need to modify a offset calculated on start, since the following happened: - // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent - // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that - // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag - if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) { - po.left += this.scrollParent.scrollLeft(); - po.top += this.scrollParent.scrollTop(); - } - - if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information - || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix - po = { top: 0, left: 0 }; - - return { - top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), - left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) - }; - - }, - - _getRelativeOffset: function() { - - if(this.cssPosition == "relative") { - var p = this.currentItem.position(); - return { - top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), - left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() - }; - } else { - return { top: 0, left: 0 }; - } - - }, - - _cacheMargins: function() { - this.margins = { - left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), - top: (parseInt(this.currentItem.css("marginTop"),10) || 0) - }; - }, - - _cacheHelperProportions: function() { - this.helperProportions = { - width: this.helper.outerWidth(), - height: this.helper.outerHeight() - }; - }, - - _setContainment: function() { - - var o = this.options; - if(o.containment == 'parent') o.containment = this.helper[0].parentNode; - if(o.containment == 'document' || o.containment == 'window') this.containment = [ - 0 - this.offset.relative.left - this.offset.parent.left, - 0 - this.offset.relative.top - this.offset.parent.top, - $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, - ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top - ]; - - if(!(/^(document|window|parent)$/).test(o.containment)) { - var ce = $(o.containment)[0]; - var co = $(o.containment).offset(); - var over = ($(ce).css("overflow") != 'hidden'); - - this.containment = [ - co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, - co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, - co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, - co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - ]; - } - - }, - - _convertPositionTo: function(d, pos) { - - if(!pos) pos = this.position; - var mod = d == "absolute" ? 1 : -1; - var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - return { - top: ( - pos.top // The absolute mouse position - + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent - + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border) - - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) - ), - left: ( - pos.left // The absolute mouse position - + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent - + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border) - - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) - ) - }; - - }, - - _generatePosition: function(event) { - - var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - // This is another very weird special case that only happens for relative elements: - // 1. If the css position is relative - // 2. and the scroll parent is the document or similar to the offset parent - // we have to refresh the relative offset during the scroll so there are no jumps - if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) { - this.offset.relative = this._getRelativeOffset(); - } - - var pageX = event.pageX; - var pageY = event.pageY; - - /* - * - Position constraining - - * Constrain the position to a mix of grid, containment. - */ - - if(this.originalPosition) { //If we are not dragging yet, we won't check for options - - if(this.containment) { - if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left; - if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top; - if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left; - if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top; - } - - if(o.grid) { - var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; - pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; - - var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; - pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; - } - - } - - return { - top: ( - pageY // The absolute mouse position - - this.offset.click.top // Click offset (relative to the element) - - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent - - this.offset.parent.top // The offsetParent's offset without borders (offset + border) - + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) - ), - left: ( - pageX // The absolute mouse position - - this.offset.click.left // Click offset (relative to the element) - - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent - - this.offset.parent.left // The offsetParent's offset without borders (offset + border) - + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) - ) - }; - - }, - - _rearrange: function(event, i, a, hardRefresh) { - - a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling)); - - //Various things done here to improve the performance: - // 1. we create a setTimeout, that calls refreshPositions - // 2. on the instance, we have a counter variable, that get's higher after every append - // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same - // 4. this lets only the last addition to the timeout stack through - this.counter = this.counter ? ++this.counter : 1; - var counter = this.counter; - - this._delay(function() { - if(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove - }); - - }, - - _clear: function(event, noPropagation) { - - this.reverting = false; - // We delay all events that have to be triggered to after the point where the placeholder has been removed and - // everything else normalized again - var delayedTriggers = []; - - // We first have to update the dom position of the actual currentItem - // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) - if(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem); - this._noFinalSort = null; - - if(this.helper[0] == this.currentItem[0]) { - for(var i in this._storedCSS) { - if(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = ''; - } - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); - if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed - - // Check if the items Container has Changed and trigger appropriate - // events. - if (this !== this.currentContainer) { - if(!noPropagation) { - delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); - delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - } - } - - - //Post events to containers - for (var i = this.containers.length - 1; i >= 0; i--){ - if(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); - if(this.containers[i].containerCache.over) { - delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); - this.containers[i].containerCache.over = 0; - } - } - - //Do what was originally in plugins - if(this._storedCursor) $('body').css("cursor", this._storedCursor); //Reset cursor - if(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset opacity - if(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index - - this.dragging = false; - if(this.cancelHelperRemoval) { - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return false; - } - - if(!noPropagation) this._trigger("beforeStop", event, this._uiHash()); - - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - - if(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null; - - if(!noPropagation) { - for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return true; - - }, - - _trigger: function() { - if ($.Widget.prototype._trigger.apply(this, arguments) === false) { - this.cancel(); - } - }, - - _uiHash: function(_inst) { - var inst = _inst || this; - return { - helper: inst.helper, - placeholder: inst.placeholder || $([]), - position: inst.position, - originalPosition: inst.originalPosition, - offset: inst.positionAbs, - item: inst.currentItem, - sender: _inst ? _inst.element : null - }; - } - -}); - -})(jQuery); diff --git a/ui/jquery.ui.spinner.js b/ui/jquery.ui.spinner.js deleted file mode 100644 index 406eefb91..000000000 --- a/ui/jquery.ui.spinner.js +++ /dev/null @@ -1,478 +0,0 @@ -/*! - * jQuery UI Spinner @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/spinner/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - */ -(function( $ ) { - -function modifier( fn ) { - return function() { - var previous = this.element.val(); - fn.apply( this, arguments ); - this._refresh(); - if ( previous !== this.element.val() ) { - this._trigger( "change" ); - } - }; -} - -$.widget( "ui.spinner", { - version: "@VERSION", - defaultElement: "", - widgetEventPrefix: "spin", - options: { - culture: null, - icons: { - down: "ui-icon-triangle-1-s", - up: "ui-icon-triangle-1-n" - }, - incremental: true, - max: null, - min: null, - numberFormat: null, - page: 10, - step: 1, - - change: null, - spin: null, - start: null, - stop: null - }, - - _create: function() { - // handle string values that need to be parsed - this._setOption( "max", this.options.max ); - this._setOption( "min", this.options.min ); - this._setOption( "step", this.options.step ); - - // format the value, but don't constrain - this._value( this.element.val(), true ); - - this._draw(); - this._on( this._events ); - this._refresh(); - - // turning off autocomplete prevents the browser from remembering the - // value when navigating through history, so we re-enable autocomplete - // if the page is unloaded before the widget is destroyed. #7790 - this._on( this.window, { - beforeunload: function() { - this.element.removeAttr( "autocomplete" ); - } - }); - }, - - _getCreateOptions: function() { - var options = {}, - element = this.element; - - $.each( [ "min", "max", "step" ], function( i, option ) { - var value = element.attr( option ); - if ( value !== undefined && value.length ) { - options[ option ] = value; - } - }); - - return options; - }, - - _events: { - keydown: function( event ) { - if ( this._start( event ) && this._keydown( event ) ) { - event.preventDefault(); - } - }, - keyup: "_stop", - focus: function() { - this.previous = this.element.val(); - }, - blur: function( event ) { - if ( this.cancelBlur ) { - delete this.cancelBlur; - return; - } - - this._refresh(); - if ( this.previous !== this.element.val() ) { - this._trigger( "change", event ); - } - }, - mousewheel: function( event, delta ) { - if ( !delta ) { - return; - } - if ( !this.spinning && !this._start( event ) ) { - return false; - } - - this._spin( (delta > 0 ? 1 : -1) * this.options.step, event ); - clearTimeout( this.mousewheelTimer ); - this.mousewheelTimer = this._delay(function() { - if ( this.spinning ) { - this._stop( event ); - } - }, 100 ); - event.preventDefault(); - }, - "mousedown .ui-spinner-button": function( event ) { - var previous; - - // We never want the buttons to have focus; whenever the user is - // interacting with the spinner, the focus should be on the input. - // If the input is focused then this.previous is properly set from - // when the input first received focus. If the input is not focused - // then we need to set this.previous based on the value before spinning. - previous = this.element[0] === this.document[0].activeElement ? - this.previous : this.element.val(); - function checkFocus() { - var isActive = this.element[0] === this.document[0].activeElement; - if ( !isActive ) { - this.element.focus(); - this.previous = previous; - // support: IE - // IE sets focus asynchronously, so we need to check if focus - // moved off of the input because the user clicked on the button. - this._delay(function() { - this.previous = previous; - }); - } - } - - // ensure focus is on (or stays on) the text field - event.preventDefault(); - checkFocus.call( this ); - - // support: IE - // IE doesn't prevent moving focus even with event.preventDefault() - // so we set a flag to know when we should ignore the blur event - // and check (again) if focus moved off of the input. - this.cancelBlur = true; - this._delay(function() { - delete this.cancelBlur; - checkFocus.call( this ); - }); - - if ( this._start( event ) === false ) { - return; - } - - this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); - }, - "mouseup .ui-spinner-button": "_stop", - "mouseenter .ui-spinner-button": function( event ) { - // button will add ui-state-active if mouse was down while mouseleave and kept down - if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { - return; - } - - if ( this._start( event ) === false ) { - return false; - } - this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); - }, - // TODO: do we really want to consider this a stop? - // shouldn't we just stop the repeater and wait until mouseup before - // we trigger the stop event? - "mouseleave .ui-spinner-button": "_stop" - }, - - _draw: function() { - var uiSpinner = this.uiSpinner = this.element - .addClass( "ui-spinner-input" ) - .attr( "autocomplete", "off" ) - .wrap( this._uiSpinnerHtml() ) - .parent() - // add buttons - .append( this._buttonHtml() ); - - this.element.attr( "role", "spinbutton" ); - - // button bindings - this.buttons = uiSpinner.find( ".ui-spinner-button" ) - .attr( "tabIndex", -1 ) - .button() - .removeClass( "ui-corner-all" ); - - // IE 6 doesn't understand height: 50% for the buttons - // unless the wrapper has an explicit height - if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) && - uiSpinner.height() > 0 ) { - uiSpinner.height( uiSpinner.height() ); - } - - // disable spinner if element was already disabled - if ( this.options.disabled ) { - this.disable(); - } - }, - - _keydown: function( event ) { - var options = this.options, - keyCode = $.ui.keyCode; - - switch ( event.keyCode ) { - case keyCode.UP: - this._repeat( null, 1, event ); - return true; - case keyCode.DOWN: - this._repeat( null, -1, event ); - return true; - case keyCode.PAGE_UP: - this._repeat( null, options.page, event ); - return true; - case keyCode.PAGE_DOWN: - this._repeat( null, -options.page, event ); - return true; - } - - return false; - }, - - _uiSpinnerHtml: function() { - return ""; - }, - - _buttonHtml: function() { - return "" + - "" + - "" + - "" + - "" + - "" + - ""; - }, - - _start: function( event ) { - if ( !this.spinning && this._trigger( "start", event ) === false ) { - return false; - } - - if ( !this.counter ) { - this.counter = 1; - } - this.spinning = true; - return true; - }, - - _repeat: function( i, steps, event ) { - i = i || 500; - - clearTimeout( this.timer ); - this.timer = this._delay(function() { - this._repeat( 40, steps, event ); - }, i ); - - this._spin( steps * this.options.step, event ); - }, - - _spin: function( step, event ) { - var value = this.value() || 0; - - if ( !this.counter ) { - this.counter = 1; - } - - value = this._adjustValue( value + step * this._increment( this.counter ) ); - - if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) { - this._value( value ); - this.counter++; - } - }, - - _increment: function( i ) { - var incremental = this.options.incremental; - - if ( incremental ) { - return $.isFunction( incremental ) ? - incremental( i ) : - Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 ); - } - - return 1; - }, - - _precision: function() { - var precision = this._precisionOf( this.options.step ); - if ( this.options.min !== null ) { - precision = Math.max( precision, this._precisionOf( this.options.min ) ); - } - return precision; - }, - - _precisionOf: function( num ) { - var str = num.toString(), - decimal = str.indexOf( "." ); - return decimal === -1 ? 0 : str.length - decimal - 1; - }, - - _adjustValue: function( value ) { - var base, aboveMin, - options = this.options; - - // make sure we're at a valid step - // - find out where we are relative to the base (min or 0) - base = options.min !== null ? options.min : 0; - aboveMin = value - base; - // - round to the nearest step - aboveMin = Math.round(aboveMin / options.step) * options.step; - // - rounding is based on 0, so adjust back to our base - value = base + aboveMin; - - // fix precision from bad JS floating point math - value = parseFloat( value.toFixed( this._precision() ) ); - - // clamp the value - if ( options.max !== null && value > options.max) { - return options.max; - } - if ( options.min !== null && value < options.min ) { - return options.min; - } - - return value; - }, - - _stop: function( event ) { - if ( !this.spinning ) { - return; - } - - clearTimeout( this.timer ); - clearTimeout( this.mousewheelTimer ); - this.counter = 0; - this.spinning = false; - this._trigger( "stop", event ); - }, - - _setOption: function( key, value ) { - if ( key === "culture" || key === "numberFormat" ) { - var prevValue = this._parse( this.element.val() ); - this.options[ key ] = value; - this.element.val( this._format( prevValue ) ); - return; - } - - if ( key === "max" || key === "min" || key === "step" ) { - if ( typeof value === "string" ) { - value = this._parse( value ); - } - } - - this._super( key, value ); - - if ( key === "disabled" ) { - if ( value ) { - this.element.prop( "disabled", true ); - this.buttons.button( "disable" ); - } else { - this.element.prop( "disabled", false ); - this.buttons.button( "enable" ); - } - } - }, - - _setOptions: modifier(function( options ) { - this._super( options ); - this._value( this.element.val() ); - }), - - _parse: function( val ) { - if ( typeof val === "string" && val !== "" ) { - val = window.Globalize && this.options.numberFormat ? - Globalize.parseFloat( val, 10, this.options.culture ) : +val; - } - return val === "" || isNaN( val ) ? null : val; - }, - - _format: function( value ) { - if ( value === "" ) { - return ""; - } - return window.Globalize && this.options.numberFormat ? - Globalize.format( value, this.options.numberFormat, this.options.culture ) : - value; - }, - - _refresh: function() { - this.element.attr({ - "aria-valuemin": this.options.min, - "aria-valuemax": this.options.max, - // TODO: what should we do with values that can't be parsed? - "aria-valuenow": this._parse( this.element.val() ) - }); - }, - - // update the value without triggering change - _value: function( value, allowAny ) { - var parsed; - if ( value !== "" ) { - parsed = this._parse( value ); - if ( parsed !== null ) { - if ( !allowAny ) { - parsed = this._adjustValue( parsed ); - } - value = this._format( parsed ); - } - } - this.element.val( value ); - this._refresh(); - }, - - _destroy: function() { - this.element - .removeClass( "ui-spinner-input" ) - .prop( "disabled", false ) - .removeAttr( "autocomplete" ) - .removeAttr( "role" ) - .removeAttr( "aria-valuemin" ) - .removeAttr( "aria-valuemax" ) - .removeAttr( "aria-valuenow" ); - this.uiSpinner.replaceWith( this.element ); - }, - - stepUp: modifier(function( steps ) { - this._stepUp( steps ); - }), - _stepUp: function( steps ) { - this._spin( (steps || 1) * this.options.step ); - }, - - stepDown: modifier(function( steps ) { - this._stepDown( steps ); - }), - _stepDown: function( steps ) { - this._spin( (steps || 1) * -this.options.step ); - }, - - pageUp: modifier(function( pages ) { - this._stepUp( (pages || 1) * this.options.page ); - }), - - pageDown: modifier(function( pages ) { - this._stepDown( (pages || 1) * this.options.page ); - }), - - value: function( newVal ) { - if ( !arguments.length ) { - return this._parse( this.element.val() ); - } - modifier( this._value ).call( this, newVal ); - }, - - widget: function() { - return this.uiSpinner; - } -}); - -}( jQuery ) ); diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js deleted file mode 100644 index 8e09764b7..000000000 --- a/ui/jquery.ui.tabs.js +++ /dev/null @@ -1,1366 +0,0 @@ -/*! - * jQuery UI Tabs @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/tabs/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function( $, undefined ) { - -var tabId = 0, - rhash = /#.*$/; - -function getNextTabId() { - return ++tabId; -} - -function isLocal( anchor ) { - return anchor.hash.length > 1 && - anchor.href.replace( rhash, "" ) === - location.href.replace( rhash, "" ) - // support: Safari 5.1 - // Safari 5.1 doesn't encode spaces in window.location - // but it does encode spaces from anchors (#8777) - .replace( /\s/g, "%20" ); -} - -$.widget( "ui.tabs", { - version: "@VERSION", - delay: 300, - options: { - active: null, - collapsible: false, - event: "click", - heightStyle: "content", - hide: null, - show: null, - - // callbacks - activate: null, - beforeActivate: null, - beforeLoad: null, - load: null - }, - - _create: function() { - var that = this, - options = this.options, - active = options.active, - locationHash = location.hash.substring( 1 ); - - this.running = false; - - this.element - .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-tabs-collapsible", options.collapsible ) - // Prevent users from focusing disabled tabs via click - .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) { - if ( $( this ).is( ".ui-state-disabled" ) ) { - event.preventDefault(); - } - }) - // support: IE <9 - // Preventing the default action in mousedown doesn't prevent IE - // from focusing the element, so if the anchor gets focused, blur. - // We don't have to worry about focusing the previously focused - // element since clicking on a non-focusable element should focus - // the body anyway. - .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { - if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { - this.blur(); - } - }); - - this._processTabs(); - - if ( active === null ) { - // check the fragment identifier in the URL - if ( locationHash ) { - this.tabs.each(function( i, tab ) { - if ( $( tab ).attr( "aria-controls" ) === locationHash ) { - active = i; - return false; - } - }); - } - - // check for a tab marked active via a class - if ( active === null ) { - active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); - } - - // no active tab, set to false - if ( active === null || active === -1 ) { - active = this.tabs.length ? 0 : false; - } - } - - // handle numbers: negative, out of range - if ( active !== false ) { - active = this.tabs.index( this.tabs.eq( active ) ); - if ( active === -1 ) { - active = options.collapsible ? false : 0; - } - } - options.active = active; - - // don't allow collapsible: false and active: false - if ( !options.collapsible && options.active === false && this.anchors.length ) { - options.active = 0; - } - - // Take disabling tabs via class attribute from HTML - // into account and update option properly. - if ( $.isArray( options.disabled ) ) { - options.disabled = $.unique( options.disabled.concat( - $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { - return that.tabs.index( li ); - }) - ) ).sort(); - } - - // check for length avoids error when initializing empty list - if ( this.options.active !== false && this.anchors.length ) { - this.active = this._findActive( this.options.active ); - } else { - this.active = $(); - } - - this._refresh(); - - if ( this.active.length ) { - this.load( options.active ); - } - }, - - _getCreateEventData: function() { - return { - tab: this.active, - panel: !this.active.length ? $() : this._getPanelForTab( this.active ) - }; - }, - - _tabKeydown: function( event ) { - var focusedTab = $( this.document[0].activeElement ).closest( "li" ), - selectedIndex = this.tabs.index( focusedTab ), - goingForward = true; - - if ( this._handlePageNav( event ) ) { - return; - } - - switch ( event.keyCode ) { - case $.ui.keyCode.RIGHT: - case $.ui.keyCode.DOWN: - selectedIndex++; - break; - case $.ui.keyCode.UP: - case $.ui.keyCode.LEFT: - goingForward = false; - selectedIndex--; - break; - case $.ui.keyCode.END: - selectedIndex = this.anchors.length - 1; - break; - case $.ui.keyCode.HOME: - selectedIndex = 0; - break; - case $.ui.keyCode.SPACE: - // Activate only, no collapsing - event.preventDefault(); - clearTimeout( this.activating ); - this._activate( selectedIndex ); - return; - case $.ui.keyCode.ENTER: - // Toggle (cancel delayed activation, allow collapsing) - event.preventDefault(); - clearTimeout( this.activating ); - // Determine if we should collapse or activate - this._activate( selectedIndex === this.options.active ? false : selectedIndex ); - return; - default: - return; - } - - // Focus the appropriate tab, based on which key was pressed - event.preventDefault(); - clearTimeout( this.activating ); - selectedIndex = this._focusNextTab( selectedIndex, goingForward ); - - // Navigating with control key will prevent automatic activation - if ( !event.ctrlKey ) { - // Update aria-selected immediately so that AT think the tab is already selected. - // Otherwise AT may confuse the user by stating that they need to activate the tab, - // but the tab will already be activated by the time the announcement finishes. - focusedTab.attr( "aria-selected", "false" ); - this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); - - this.activating = this._delay(function() { - this.option( "active", selectedIndex ); - }, this.delay ); - } - }, - - _panelKeydown: function( event ) { - if ( this._handlePageNav( event ) ) { - return; - } - - // Ctrl+up moves focus to the current tab - if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { - event.preventDefault(); - this.active.focus(); - } - }, - - // Alt+page up/down moves focus to the previous/next tab (and activates) - _handlePageNav: function( event ) { - if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { - this._activate( this._focusNextTab( this.options.active - 1, false ) ); - return true; - } - if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { - this._activate( this._focusNextTab( this.options.active + 1, true ) ); - return true; - } - }, - - _findNextTab: function( index, goingForward ) { - var lastTabIndex = this.tabs.length - 1; - - function constrain() { - if ( index > lastTabIndex ) { - index = 0; - } - if ( index < 0 ) { - index = lastTabIndex; - } - return index; - } - - while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { - index = goingForward ? index + 1 : index - 1; - } - - return index; - }, - - _focusNextTab: function( index, goingForward ) { - index = this._findNextTab( index, goingForward ); - this.tabs.eq( index ).focus(); - return index; - }, - - _setOption: function( key, value ) { - if ( key === "active" ) { - // _activate() will handle invalid values and update this.options - this._activate( value ); - return; - } - - if ( key === "disabled" ) { - // don't use the widget factory's disabled handling - this._setupDisabled( value ); - return; - } - - this._super( key, value); - - if ( key === "collapsible" ) { - this.element.toggleClass( "ui-tabs-collapsible", value ); - // Setting collapsible: false while collapsed; open first panel - if ( !value && this.options.active === false ) { - this._activate( 0 ); - } - } - - if ( key === "event" ) { - this._setupEvents( value ); - } - - if ( key === "heightStyle" ) { - this._setupHeightStyle( value ); - } - }, - - _tabId: function( tab ) { - return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId(); - }, - - _sanitizeSelector: function( hash ) { - return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; - }, - - refresh: function() { - var options = this.options, - lis = this.tablist.children( ":has(a[href])" ); - - // get disabled tabs from class attribute from HTML - // this will get converted to a boolean if needed in _refresh() - options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { - return lis.index( tab ); - }); - - this._processTabs(); - - // was collapsed or no tabs - if ( options.active === false || !this.anchors.length ) { - options.active = false; - this.active = $(); - // was active, but active tab is gone - } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { - // all remaining tabs are disabled - if ( this.tabs.length === options.disabled.length ) { - options.active = false; - this.active = $(); - // activate previous tab - } else { - this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); - } - // was active, active tab still exists - } else { - // make sure active index is correct - options.active = this.tabs.index( this.active ); - } - - this._refresh(); - }, - - _refresh: function() { - this._setupDisabled( this.options.disabled ); - this._setupEvents( this.options.event ); - this._setupHeightStyle( this.options.heightStyle ); - - this.tabs.not( this.active ).attr({ - "aria-selected": "false", - tabIndex: -1 - }); - this.panels.not( this._getPanelForTab( this.active ) ) - .hide() - .attr({ - "aria-expanded": "false", - "aria-hidden": "true" - }); - - // Make sure one tab is in the tab order - if ( !this.active.length ) { - this.tabs.eq( 0 ).attr( "tabIndex", 0 ); - } else { - this.active - .addClass( "ui-tabs-active ui-state-active" ) - .attr({ - "aria-selected": "true", - tabIndex: 0 - }); - this._getPanelForTab( this.active ) - .show() - .attr({ - "aria-expanded": "true", - "aria-hidden": "false" - }); - } - }, - - _processTabs: function() { - var that = this; - - this.tablist = this._getList() - .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) - .attr( "role", "tablist" ); - - this.tabs = this.tablist.find( "> li:has(a[href])" ) - .addClass( "ui-state-default ui-corner-top" ) - .attr({ - role: "tab", - tabIndex: -1 - }); - - this.anchors = this.tabs.map(function() { - return $( "a", this )[ 0 ]; - }) - .addClass( "ui-tabs-anchor" ) - .attr({ - role: "presentation", - tabIndex: -1 - }); - - this.panels = $(); - - this.anchors.each(function( i, anchor ) { - var selector, panel, panelId, - anchorId = $( anchor ).uniqueId().attr( "id" ), - tab = $( anchor ).closest( "li" ), - originalAriaControls = tab.attr( "aria-controls" ); - - // inline tab - if ( isLocal( anchor ) ) { - selector = anchor.hash; - panel = that.element.find( that._sanitizeSelector( selector ) ); - // remote tab - } else { - panelId = that._tabId( tab ); - selector = "#" + panelId; - panel = that.element.find( selector ); - if ( !panel.length ) { - panel = that._createPanel( panelId ); - panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); - } - panel.attr( "aria-live", "polite" ); - } - - if ( panel.length) { - that.panels = that.panels.add( panel ); - } - if ( originalAriaControls ) { - tab.data( "ui-tabs-aria-controls", originalAriaControls ); - } - tab.attr({ - "aria-controls": selector.substring( 1 ), - "aria-labelledby": anchorId - }); - panel.attr( "aria-labelledby", anchorId ); - }); - - this.panels - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .attr( "role", "tabpanel" ); - }, - - // allow overriding how to find the list for rare usage scenarios (#7715) - _getList: function() { - return this.element.find( "ol,ul" ).eq( 0 ); - }, - - _createPanel: function( id ) { - return $( "
    " ) - .attr( "id", id ) - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .data( "ui-tabs-destroy", true ); - }, - - _setupDisabled: function( disabled ) { - if ( $.isArray( disabled ) ) { - if ( !disabled.length ) { - disabled = false; - } else if ( disabled.length === this.anchors.length ) { - disabled = true; - } - } - - // disable tabs - for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { - if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { - $( li ) - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } else { - $( li ) - .removeClass( "ui-state-disabled" ) - .removeAttr( "aria-disabled" ); - } - } - - this.options.disabled = disabled; - }, - - _setupEvents: function( event ) { - var events = { - click: function( event ) { - event.preventDefault(); - } - }; - if ( event ) { - $.each( event.split(" "), function( index, eventName ) { - events[ eventName ] = "_eventHandler"; - }); - } - - this._off( this.anchors.add( this.tabs ).add( this.panels ) ); - this._on( this.anchors, events ); - this._on( this.tabs, { keydown: "_tabKeydown" } ); - this._on( this.panels, { keydown: "_panelKeydown" } ); - - this._focusable( this.tabs ); - this._hoverable( this.tabs ); - }, - - _setupHeightStyle: function( heightStyle ) { - var maxHeight, overflow, - parent = this.element.parent(); - - if ( heightStyle === "fill" ) { - // IE 6 treats height like minHeight, so we need to turn off overflow - // in order to get a reliable height - // we use the minHeight support test because we assume that only - // browsers that don't support minHeight will treat height as minHeight - if ( !$.support.minHeight ) { - overflow = parent.css( "overflow" ); - parent.css( "overflow", "hidden"); - } - maxHeight = parent.height(); - this.element.siblings( ":visible" ).each(function() { - var elem = $( this ), - position = elem.css( "position" ); - - if ( position === "absolute" || position === "fixed" ) { - return; - } - maxHeight -= elem.outerHeight( true ); - }); - if ( overflow ) { - parent.css( "overflow", overflow ); - } - - this.element.children().not( this.panels ).each(function() { - maxHeight -= $( this ).outerHeight( true ); - }); - - this.panels.each(function() { - $( this ).height( Math.max( 0, maxHeight - - $( this ).innerHeight() + $( this ).height() ) ); - }) - .css( "overflow", "auto" ); - } else if ( heightStyle === "auto" ) { - maxHeight = 0; - this.panels.each(function() { - maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); - }).height( maxHeight ); - } - }, - - _eventHandler: function( event ) { - var options = this.options, - active = this.active, - anchor = $( event.currentTarget ), - tab = anchor.closest( "li" ), - clickedIsActive = tab[ 0 ] === active[ 0 ], - collapsing = clickedIsActive && options.collapsible, - toShow = collapsing ? $() : this._getPanelForTab( tab ), - toHide = !active.length ? $() : this._getPanelForTab( active ), - eventData = { - oldTab: active, - oldPanel: toHide, - newTab: collapsing ? $() : tab, - newPanel: toShow - }; - - event.preventDefault(); - - if ( tab.hasClass( "ui-state-disabled" ) || - // tab is already loading - tab.hasClass( "ui-tabs-loading" ) || - // can't switch durning an animation - this.running || - // click on active header, but not collapsible - ( clickedIsActive && !options.collapsible ) || - // allow canceling activation - ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { - return; - } - - options.active = collapsing ? false : this.tabs.index( tab ); - - this.active = clickedIsActive ? $() : tab; - if ( this.xhr ) { - this.xhr.abort(); - } - - if ( !toHide.length && !toShow.length ) { - $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); - } - - if ( toShow.length ) { - this.load( this.tabs.index( tab ), event ); - } - this._toggle( event, eventData ); - }, - - // handles show/hide for selecting tabs - _toggle: function( event, eventData ) { - var that = this, - toShow = eventData.newPanel, - toHide = eventData.oldPanel; - - this.running = true; - - function complete() { - that.running = false; - that._trigger( "activate", event, eventData ); - } - - function show() { - eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); - - if ( toShow.length && that.options.show ) { - that._show( toShow, that.options.show, complete ); - } else { - toShow.show(); - complete(); - } - } - - // start out by hiding, then showing, then completing - if ( toHide.length && this.options.hide ) { - this._hide( toHide, this.options.hide, function() { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - show(); - }); - } else { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - toHide.hide(); - show(); - } - - toHide.attr({ - "aria-expanded": "false", - "aria-hidden": "true" - }); - eventData.oldTab.attr( "aria-selected", "false" ); - // If we're switching tabs, remove the old tab from the tab order. - // If we're opening from collapsed state, remove the previous tab from the tab order. - // If we're collapsing, then keep the collapsing tab in the tab order. - if ( toShow.length && toHide.length ) { - eventData.oldTab.attr( "tabIndex", -1 ); - } else if ( toShow.length ) { - this.tabs.filter(function() { - return $( this ).attr( "tabIndex" ) === 0; - }) - .attr( "tabIndex", -1 ); - } - - toShow.attr({ - "aria-expanded": "true", - "aria-hidden": "false" - }); - eventData.newTab.attr({ - "aria-selected": "true", - tabIndex: 0 - }); - }, - - _activate: function( index ) { - var anchor, - active = this._findActive( index ); - - // trying to activate the already active panel - if ( active[ 0 ] === this.active[ 0 ] ) { - return; - } - - // trying to collapse, simulate a click on the current active header - if ( !active.length ) { - active = this.active; - } - - anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; - this._eventHandler({ - target: anchor, - currentTarget: anchor, - preventDefault: $.noop - }); - }, - - _findActive: function( index ) { - return index === false ? $() : this.tabs.eq( index ); - }, - - _getIndex: function( index ) { - // meta-function to give users option to provide a href string instead of a numerical index. - if ( typeof index === "string" ) { - index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); - } - - return index; - }, - - _destroy: function() { - if ( this.xhr ) { - this.xhr.abort(); - } - - this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ); - - this.tablist - .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) - .removeAttr( "role" ); - - this.anchors - .removeClass( "ui-tabs-anchor" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeData( "href.tabs" ) - .removeData( "load.tabs" ) - .removeUniqueId(); - - this.tabs.add( this.panels ).each(function() { - if ( $.data( this, "ui-tabs-destroy" ) ) { - $( this ).remove(); - } else { - $( this ) - .removeClass( "ui-state-default ui-state-active ui-state-disabled " + - "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-live" ) - .removeAttr( "aria-busy" ) - .removeAttr( "aria-selected" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "role" ); - } - }); - - this.tabs.each(function() { - var li = $( this ), - prev = li.data( "ui-tabs-aria-controls" ); - if ( prev ) { - li.attr( "aria-controls", prev ); - } else { - li.removeAttr( "aria-controls" ); - } - }); - - this.panels.show(); - - if ( this.options.heightStyle !== "content" ) { - this.panels.css( "height", "" ); - } - }, - - enable: function( index ) { - var disabled = this.options.disabled; - if ( disabled === false ) { - return; - } - - if ( index === undefined ) { - disabled = false; - } else { - index = this._getIndex( index ); - if ( $.isArray( disabled ) ) { - disabled = $.map( disabled, function( num ) { - return num !== index ? num : null; - }); - } else { - disabled = $.map( this.tabs, function( li, num ) { - return num !== index ? num : null; - }); - } - } - this._setupDisabled( disabled ); - }, - - disable: function( index ) { - var disabled = this.options.disabled; - if ( disabled === true ) { - return; - } - - if ( index === undefined ) { - disabled = true; - } else { - index = this._getIndex( index ); - if ( $.inArray( index, disabled ) !== -1 ) { - return; - } - if ( $.isArray( disabled ) ) { - disabled = $.merge( [ index ], disabled ).sort(); - } else { - disabled = [ index ]; - } - } - this._setupDisabled( disabled ); - }, - - load: function( index, event ) { - index = this._getIndex( index ); - var that = this, - tab = this.tabs.eq( index ), - anchor = tab.find( ".ui-tabs-anchor" ), - panel = this._getPanelForTab( tab ), - eventData = { - tab: tab, - panel: panel - }; - - // not remote - if ( isLocal( anchor[ 0 ] ) ) { - return; - } - - this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); - - // support: jQuery <1.8 - // jQuery <1.8 returns false if the request is canceled in beforeSend, - // but as of 1.8, $.ajax() always returns a jqXHR object. - if ( this.xhr && this.xhr.statusText !== "canceled" ) { - tab.addClass( "ui-tabs-loading" ); - panel.attr( "aria-busy", "true" ); - - this.xhr - .success(function( response ) { - // support: jQuery <1.8 - // http://bugs.jquery.com/ticket/11778 - setTimeout(function() { - panel.html( response ); - that._trigger( "load", event, eventData ); - }, 1 ); - }) - .complete(function( jqXHR, status ) { - // support: jQuery <1.8 - // http://bugs.jquery.com/ticket/11778 - setTimeout(function() { - if ( status === "abort" ) { - that.panels.stop( false, true ); - } - - tab.removeClass( "ui-tabs-loading" ); - panel.removeAttr( "aria-busy" ); - - if ( jqXHR === that.xhr ) { - delete that.xhr; - } - }, 1 ); - }); - } - }, - - // TODO: Remove this function in 1.10 when ajaxOptions is removed - _ajaxSettings: function( anchor, event, eventData ) { - var that = this; - return { - url: anchor.attr( "href" ), - beforeSend: function( jqXHR, settings ) { - return that._trigger( "beforeLoad", event, - $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) ); - } - }; - }, - - _getPanelForTab: function( tab ) { - var id = $( tab ).attr( "aria-controls" ); - return this.element.find( this._sanitizeSelector( "#" + id ) ); - } -}); - -// DEPRECATED -if ( $.uiBackCompat !== false ) { - - // helper method for a lot of the back compat extensions - $.ui.tabs.prototype._ui = function( tab, panel ) { - return { - tab: tab, - panel: panel, - index: this.anchors.index( tab ) - }; - }; - - // url method - $.widget( "ui.tabs", $.ui.tabs, { - url: function( index, url ) { - this.anchors.eq( index ).attr( "href", url ); - } - }); - - // TODO: Remove _ajaxSettings() method when removing this extension - // ajaxOptions and cache options - $.widget( "ui.tabs", $.ui.tabs, { - options: { - ajaxOptions: null, - cache: false - }, - - _create: function() { - this._super(); - - var that = this; - - this._on({ tabsbeforeload: function( event, ui ) { - // tab is already cached - if ( $.data( ui.tab[ 0 ], "cache.tabs" ) ) { - event.preventDefault(); - return; - } - - ui.jqXHR.success(function() { - if ( that.options.cache ) { - $.data( ui.tab[ 0 ], "cache.tabs", true ); - } - }); - }}); - }, - - _ajaxSettings: function( anchor, event, ui ) { - var ajaxOptions = this.options.ajaxOptions; - return $.extend( {}, ajaxOptions, { - error: function( xhr, status ) { - try { - // Passing index avoid a race condition when this method is - // called after the user has selected another tab. - // Pass the anchor that initiated this request allows - // loadError to manipulate the tab content panel via $(a.hash) - ajaxOptions.error( - xhr, status, ui.tab.closest( "li" ).index(), ui.tab[ 0 ] ); - } - catch ( error ) {} - } - }, this._superApply( arguments ) ); - }, - - _setOption: function( key, value ) { - // reset cache if switching from cached to not cached - if ( key === "cache" && value === false ) { - this.anchors.removeData( "cache.tabs" ); - } - this._super( key, value ); - }, - - _destroy: function() { - this.anchors.removeData( "cache.tabs" ); - this._super(); - }, - - url: function( index ){ - this.anchors.eq( index ).removeData( "cache.tabs" ); - this._superApply( arguments ); - } - }); - - // abort method - $.widget( "ui.tabs", $.ui.tabs, { - abort: function() { - if ( this.xhr ) { - this.xhr.abort(); - } - } - }); - - // spinner - $.widget( "ui.tabs", $.ui.tabs, { - options: { - spinner: "Loading…" - }, - _create: function() { - this._super(); - this._on({ - tabsbeforeload: function( event, ui ) { - // Don't react to nested tabs or tabs that don't use a spinner - if ( event.target !== this.element[ 0 ] || - !this.options.spinner ) { - return; - } - - var span = ui.tab.find( "span" ), - html = span.html(); - span.html( this.options.spinner ); - ui.jqXHR.complete(function() { - span.html( html ); - }); - } - }); - } - }); - - // enable/disable events - $.widget( "ui.tabs", $.ui.tabs, { - options: { - enable: null, - disable: null - }, - - enable: function( index ) { - var options = this.options, - trigger; - - if ( index && options.disabled === true || - ( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) { - trigger = true; - } - - this._superApply( arguments ); - - if ( trigger ) { - this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); - } - }, - - disable: function( index ) { - var options = this.options, - trigger; - - if ( index && options.disabled === false || - ( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) { - trigger = true; - } - - this._superApply( arguments ); - - if ( trigger ) { - this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); - } - } - }); - - // add/remove methods and events - $.widget( "ui.tabs", $.ui.tabs, { - options: { - add: null, - remove: null, - tabTemplate: "
  • #{label}
  • " - }, - - add: function( url, label, index ) { - if ( index === undefined ) { - index = this.anchors.length; - } - - var doInsertAfter, panel, - options = this.options, - li = $( options.tabTemplate - .replace( /#\{href\}/g, url ) - .replace( /#\{label\}/g, label ) ), - id = !url.indexOf( "#" ) ? - url.replace( "#", "" ) : - this._tabId( li ); - - li.addClass( "ui-state-default ui-corner-top" ).data( "ui-tabs-destroy", true ); - li.attr( "aria-controls", id ); - - doInsertAfter = index >= this.tabs.length; - - // try to find an existing element before creating a new one - panel = this.element.find( "#" + id ); - if ( !panel.length ) { - panel = this._createPanel( id ); - if ( doInsertAfter ) { - if ( index > 0 ) { - panel.insertAfter( this.panels.eq( -1 ) ); - } else { - panel.appendTo( this.element ); - } - } else { - panel.insertBefore( this.panels[ index ] ); - } - } - panel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ).hide(); - - if ( doInsertAfter ) { - li.appendTo( this.tablist ); - } else { - li.insertBefore( this.tabs[ index ] ); - } - - options.disabled = $.map( options.disabled, function( n ) { - return n >= index ? ++n : n; - }); - - this.refresh(); - if ( this.tabs.length === 1 && options.active === false ) { - this.option( "active", 0 ); - } - - this._trigger( "add", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); - return this; - }, - - remove: function( index ) { - index = this._getIndex( index ); - var options = this.options, - tab = this.tabs.eq( index ).remove(), - panel = this._getPanelForTab( tab ).remove(); - - // If selected tab was removed focus tab to the right or - // in case the last tab was removed the tab to the left. - // We check for more than 2 tabs, because if there are only 2, - // then when we remove this tab, there will only be one tab left - // so we don't need to detect which tab to activate. - if ( tab.hasClass( "ui-tabs-active" ) && this.anchors.length > 2 ) { - this._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) ); - } - - options.disabled = $.map( - $.grep( options.disabled, function( n ) { - return n !== index; - }), - function( n ) { - return n >= index ? --n : n; - }); - - this.refresh(); - - this._trigger( "remove", null, this._ui( tab.find( "a" )[ 0 ], panel[ 0 ] ) ); - return this; - } - }); - - // length method - $.widget( "ui.tabs", $.ui.tabs, { - length: function() { - return this.anchors.length; - } - }); - - // panel ids (idPrefix option + title attribute) - $.widget( "ui.tabs", $.ui.tabs, { - options: { - idPrefix: "ui-tabs-" - }, - - _tabId: function( tab ) { - var a = tab.is( "li" ) ? tab.find( "a[href]" ) : tab; - a = a[0]; - return $( a ).closest( "li" ).attr( "aria-controls" ) || - a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF\-]/g, "" ) || - this.options.idPrefix + getNextTabId(); - } - }); - - // _createPanel method - $.widget( "ui.tabs", $.ui.tabs, { - options: { - panelTemplate: "
    " - }, - - _createPanel: function( id ) { - return $( this.options.panelTemplate ) - .attr( "id", id ) - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .data( "ui-tabs-destroy", true ); - } - }); - - // selected option - $.widget( "ui.tabs", $.ui.tabs, { - _create: function() { - var options = this.options; - if ( options.active === null && options.selected !== undefined ) { - options.active = options.selected === -1 ? false : options.selected; - } - this._super(); - options.selected = options.active; - if ( options.selected === false ) { - options.selected = -1; - } - }, - - _setOption: function( key, value ) { - if ( key !== "selected" ) { - return this._super( key, value ); - } - - var options = this.options; - this._super( "active", value === -1 ? false : value ); - options.selected = options.active; - if ( options.selected === false ) { - options.selected = -1; - } - }, - - _eventHandler: function() { - this._superApply( arguments ); - this.options.selected = this.options.active; - if ( this.options.selected === false ) { - this.options.selected = -1; - } - } - }); - - // show and select event - $.widget( "ui.tabs", $.ui.tabs, { - options: { - show: null, - select: null - }, - _create: function() { - this._super(); - if ( this.options.active !== false ) { - this._trigger( "show", null, this._ui( - this.active.find( ".ui-tabs-anchor" )[ 0 ], - this._getPanelForTab( this.active )[ 0 ] ) ); - } - }, - _trigger: function( type, event, data ) { - var tab, panel, - ret = this._superApply( arguments ); - - if ( !ret ) { - return false; - } - - if ( type === "beforeActivate" ) { - tab = data.newTab.length ? data.newTab : data.oldTab; - panel = data.newPanel.length ? data.newPanel : data.oldPanel; - ret = this._super( "select", event, { - tab: tab.find( ".ui-tabs-anchor" )[ 0], - panel: panel[ 0 ], - index: tab.closest( "li" ).index() - }); - } else if ( type === "activate" && data.newTab.length ) { - ret = this._super( "show", event, { - tab: data.newTab.find( ".ui-tabs-anchor" )[ 0 ], - panel: data.newPanel[ 0 ], - index: data.newTab.closest( "li" ).index() - }); - } - return ret; - } - }); - - // select method - $.widget( "ui.tabs", $.ui.tabs, { - select: function( index ) { - index = this._getIndex( index ); - if ( index === -1 ) { - if ( this.options.collapsible && this.options.selected !== -1 ) { - index = this.options.selected; - } else { - return; - } - } - this.anchors.eq( index ).trigger( this.options.event + this.eventNamespace ); - } - }); - - // cookie option - (function() { - - var listId = 0; - - $.widget( "ui.tabs", $.ui.tabs, { - options: { - cookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } - }, - _create: function() { - var options = this.options, - active; - if ( options.active == null && options.cookie ) { - active = parseInt( this._cookie(), 10 ); - if ( active === -1 ) { - active = false; - } - options.active = active; - } - this._super(); - }, - _cookie: function( active ) { - var cookie = [ this.cookie || - ( this.cookie = this.options.cookie.name || "ui-tabs-" + (++listId) ) ]; - if ( arguments.length ) { - cookie.push( active === false ? -1 : active ); - cookie.push( this.options.cookie ); - } - return $.cookie.apply( null, cookie ); - }, - _refresh: function() { - this._super(); - if ( this.options.cookie ) { - this._cookie( this.options.active, this.options.cookie ); - } - }, - _eventHandler: function() { - this._superApply( arguments ); - if ( this.options.cookie ) { - this._cookie( this.options.active, this.options.cookie ); - } - }, - _destroy: function() { - this._super(); - if ( this.options.cookie ) { - this._cookie( null, this.options.cookie ); - } - } - }); - - })(); - - // load event - $.widget( "ui.tabs", $.ui.tabs, { - _trigger: function( type, event, data ) { - var _data = $.extend( {}, data ); - if ( type === "load" ) { - _data.panel = _data.panel[ 0 ]; - _data.tab = _data.tab.find( ".ui-tabs-anchor" )[ 0 ]; - } - return this._super( type, event, _data ); - } - }); - - // fx option - // The new animation options (show, hide) conflict with the old show callback. - // The old fx option wins over show/hide anyway (always favor back-compat). - // If a user wants to use the new animation API, they must give up the old API. - $.widget( "ui.tabs", $.ui.tabs, { - options: { - fx: null // e.g. { height: "toggle", opacity: "toggle", duration: 200 } - }, - - _getFx: function() { - var hide, show, - fx = this.options.fx; - - if ( fx ) { - if ( $.isArray( fx ) ) { - hide = fx[ 0 ]; - show = fx[ 1 ]; - } else { - hide = show = fx; - } - } - - return fx ? { show: show, hide: hide } : null; - }, - - _toggle: function( event, eventData ) { - var that = this, - toShow = eventData.newPanel, - toHide = eventData.oldPanel, - fx = this._getFx(); - - if ( !fx ) { - return this._super( event, eventData ); - } - - that.running = true; - - function complete() { - that.running = false; - that._trigger( "activate", event, eventData ); - } - - function show() { - eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); - - if ( toShow.length && fx.show ) { - toShow - .animate( fx.show, fx.show.duration, function() { - complete(); - }); - } else { - toShow.show(); - complete(); - } - } - - // start out by hiding, then showing, then completing - if ( toHide.length && fx.hide ) { - toHide.animate( fx.hide, fx.hide.duration, function() { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - show(); - }); - } else { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - toHide.hide(); - show(); - } - } - }); -} - -})( jQuery ); diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js deleted file mode 100644 index 629dc0806..000000000 --- a/ui/jquery.ui.tooltip.js +++ /dev/null @@ -1,398 +0,0 @@ -/*! - * jQuery UI Tooltip @VERSION - * http://jqueryui.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/tooltip/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function( $ ) { - -var increments = 0; - -function addDescribedBy( elem, id ) { - var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ); - describedby.push( id ); - elem - .data( "ui-tooltip-id", id ) - .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); -} - -function removeDescribedBy( elem ) { - var id = elem.data( "ui-tooltip-id" ), - describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ), - index = $.inArray( id, describedby ); - if ( index !== -1 ) { - describedby.splice( index, 1 ); - } - - elem.removeData( "ui-tooltip-id" ); - describedby = $.trim( describedby.join( " " ) ); - if ( describedby ) { - elem.attr( "aria-describedby", describedby ); - } else { - elem.removeAttr( "aria-describedby" ); - } -} - -$.widget( "ui.tooltip", { - version: "@VERSION", - options: { - content: function() { - return $( this ).attr( "title" ); - }, - hide: true, - // Disabled elements have inconsistent behavior across browsers (#8661) - items: "[title]:not([disabled])", - position: { - my: "left top+15", - at: "left bottom", - collision: "flipfit flip" - }, - show: true, - tooltipClass: null, - track: false, - - // callbacks - close: null, - open: null - }, - - _create: function() { - this._on({ - mouseover: "open", - focusin: "open" - }); - - // IDs of generated tooltips, needed for destroy - this.tooltips = {}; - // IDs of parent tooltips where we removed the title attribute - this.parents = {}; - - if ( this.options.disabled ) { - this._disable(); - } - }, - - _setOption: function( key, value ) { - var that = this; - - if ( key === "disabled" ) { - this[ value ? "_disable" : "_enable" ](); - this.options[ key ] = value; - // disable element style changes - return; - } - - this._super( key, value ); - - if ( key === "content" ) { - $.each( this.tooltips, function( id, element ) { - that._updateContent( element ); - }); - } - }, - - _disable: function() { - var that = this; - - // close open tooltips - $.each( this.tooltips, function( id, element ) { - var event = $.Event( "blur" ); - event.target = event.currentTarget = element[0]; - that.close( event, true ); - }); - - // remove title attributes to prevent native tooltips - this.element.find( this.options.items ).andSelf().each(function() { - var element = $( this ); - if ( element.is( "[title]" ) ) { - element - .data( "ui-tooltip-title", element.attr( "title" ) ) - .attr( "title", "" ); - } - }); - }, - - _enable: function() { - // restore title attributes - this.element.find( this.options.items ).andSelf().each(function() { - var element = $( this ); - if ( element.data( "ui-tooltip-title" ) ) { - element.attr( "title", element.data( "ui-tooltip-title" ) ); - } - }); - }, - - open: function( event ) { - var that = this, - target = $( event ? event.target : this.element ) - // we need closest here due to mouseover bubbling, - // but always pointing at the same event target - .closest( this.options.items ); - - // No element to show a tooltip for or the tooltip is already open - if ( !target.length || target.data( "ui-tooltip-id" ) ) { - return; - } - - if ( target.attr( "title" ) ) { - target.data( "ui-tooltip-title", target.attr( "title" ) ); - } - - target.data( "ui-tooltip-open", true ); - - // kill parent tooltips, custom or native, for hover - if ( event && event.type === "mouseover" ) { - target.parents().each(function() { - var parent = $( this ), - blurEvent; - if ( parent.data( "ui-tooltip-open" ) ) { - blurEvent = $.Event( "blur" ); - blurEvent.target = blurEvent.currentTarget = this; - that.close( blurEvent, true ); - } - if ( parent.attr( "title" ) ) { - parent.uniqueId(); - that.parents[ this.id ] = { - element: this, - title: parent.attr( "title" ) - }; - parent.attr( "title", "" ); - } - }); - } - - this._updateContent( target, event ); - }, - - _updateContent: function( target, event ) { - var content, - contentOption = this.options.content, - that = this, - eventType = event ? event.type : null; - - if ( typeof contentOption === "string" ) { - return this._open( event, target, contentOption ); - } - - content = contentOption.call( target[0], function( response ) { - // ignore async response if tooltip was closed already - if ( !target.data( "ui-tooltip-open" ) ) { - return; - } - // IE may instantly serve a cached response for ajax requests - // delay this call to _open so the other call to _open runs first - that._delay(function() { - // jQuery creates a special event for focusin when it doesn't - // exist natively. To improve performance, the native event - // object is reused and the type is changed. Therefore, we can't - // rely on the type being correct after the event finished - // bubbling, so we set it back to the previous value. (#8740) - if ( event ) { - event.type = eventType; - } - this._open( event, target, response ); - }); - }); - if ( content ) { - this._open( event, target, content ); - } - }, - - _open: function( event, target, content ) { - var tooltip, events, delayedShow, - positionOption = $.extend( {}, this.options.position ); - - if ( !content ) { - return; - } - - // Content can be updated multiple times. If the tooltip already - // exists, then just update the content and bail. - tooltip = this._find( target ); - if ( tooltip.length ) { - tooltip.find( ".ui-tooltip-content" ).html( content ); - return; - } - - // if we have a title, clear it to prevent the native tooltip - // we have to check first to avoid defining a title if none exists - // (we don't want to cause an element to start matching [title]) - // - // We use removeAttr only for key events, to allow IE to export the correct - // accessible attributes. For mouse events, set to empty string to avoid - // native tooltip showing up (happens only when removing inside mouseover). - if ( target.is( "[title]" ) ) { - if ( event && event.type === "mouseover" ) { - target.attr( "title", "" ); - } else { - target.removeAttr( "title" ); - } - } - - tooltip = this._tooltip( target ); - addDescribedBy( target, tooltip.attr( "id" ) ); - tooltip.find( ".ui-tooltip-content" ).html( content ); - - function position( event ) { - positionOption.of = event; - if ( tooltip.is( ":hidden" ) ) { - return; - } - tooltip.position( positionOption ); - } - if ( this.options.track && event && /^mouse/.test( event.type ) ) { - this._on( this.document, { - mousemove: position - }); - // trigger once to override element-relative positioning - position( event ); - } else { - tooltip.position( $.extend({ - of: target - }, this.options.position ) ); - } - - tooltip.hide(); - - this._show( tooltip, this.options.show ); - // Handle tracking tooltips that are shown with a delay (#8644). As soon - // as the tooltip is visible, position the tooltip using the most recent - // event. - if ( this.options.show && this.options.show.delay ) { - delayedShow = setInterval(function() { - if ( tooltip.is( ":visible" ) ) { - position( positionOption.of ); - clearInterval( delayedShow ); - } - }, $.fx.interval ); - } - - this._trigger( "open", event, { tooltip: tooltip } ); - - events = { - keyup: function( event ) { - if ( event.keyCode === $.ui.keyCode.ESCAPE ) { - var fakeEvent = $.Event(event); - fakeEvent.currentTarget = target[0]; - this.close( fakeEvent, true ); - } - }, - remove: function() { - this._removeTooltip( tooltip ); - } - }; - if ( !event || event.type === "mouseover" ) { - events.mouseleave = "close"; - } - if ( !event || event.type === "focusin" ) { - events.focusout = "close"; - } - this._on( true, target, events ); - }, - - close: function( event ) { - var that = this, - target = $( event ? event.currentTarget : this.element ), - tooltip = this._find( target ); - - // disabling closes the tooltip, so we need to track when we're closing - // to avoid an infinite loop in case the tooltip becomes disabled on close - if ( this.closing ) { - return; - } - - // only set title if we had one before (see comment in _open()) - if ( target.data( "ui-tooltip-title" ) ) { - target.attr( "title", target.data( "ui-tooltip-title" ) ); - } - - removeDescribedBy( target ); - - tooltip.stop( true ); - this._hide( tooltip, this.options.hide, function() { - that._removeTooltip( $( this ) ); - }); - - target.removeData( "ui-tooltip-open" ); - this._off( target, "mouseleave focusout keyup" ); - // Remove 'remove' binding only on delegated targets - if ( target[0] !== this.element[0] ) { - this._off( target, "remove" ); - } - this._off( this.document, "mousemove" ); - - if ( event && event.type === "mouseleave" ) { - $.each( this.parents, function( id, parent ) { - $( parent.element ).attr( "title", parent.title ); - delete that.parents[ id ]; - }); - } - - this.closing = true; - this._trigger( "close", event, { tooltip: tooltip } ); - this.closing = false; - }, - - _tooltip: function( element ) { - var id = "ui-tooltip-" + increments++, - tooltip = $( "
    " ) - .attr({ - id: id, - role: "tooltip" - }) - .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + - ( this.options.tooltipClass || "" ) ); - $( "
    " ) - .addClass( "ui-tooltip-content" ) - .appendTo( tooltip ); - tooltip.appendTo( this.document[0].body ); - if ( $.fn.bgiframe ) { - tooltip.bgiframe(); - } - this.tooltips[ id ] = element; - return tooltip; - }, - - _find: function( target ) { - var id = target.data( "ui-tooltip-id" ); - return id ? $( "#" + id ) : $(); - }, - - _removeTooltip: function( tooltip ) { - tooltip.remove(); - delete this.tooltips[ tooltip.attr( "id" ) ]; - }, - - _destroy: function() { - var that = this; - - // close open tooltips - $.each( this.tooltips, function( id, element ) { - // Delegate to close method to handle common cleanup - var event = $.Event( "blur" ); - event.target = event.currentTarget = element[0]; - that.close( event, true ); - - // Remove immediately; destroying an open tooltip doesn't use the - // hide animation - $( "#" + id ).remove(); - - // Restore the title - if ( element.data( "ui-tooltip-title" ) ) { - element.attr( "title", element.data( "ui-tooltip-title" ) ); - element.removeData( "ui-tooltip-title" ); - } - }); - } -}); - -}( jQuery ) ); diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index 253344868..06f25576a 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -106,8 +106,6 @@ $.widget = function( name, base, prototype ) { constructor: constructor, namespace: namespace, widgetName: name, - // TODO remove widgetBaseClass, see #8155 - widgetBaseClass: fullName, widgetFullName: fullName }); @@ -233,9 +231,6 @@ $.Widget.prototype = { this.focusable = $(); if ( element !== this ) { - // 1.9 BC for #7810 - // TODO remove dual storage - $.data( element, this.widgetName, this ); $.data( element, this.widgetFullName, this ); this._on( true, this.element, { remove: function( event ) { @@ -502,7 +497,7 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { if ( options.delay ) { element.delay( options.delay ); } - if ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) { + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { element[ method ]( options ); } else if ( effectName !== method && element[ effectName ] ) { element[ effectName ]( options.duration, options.easing, callback ); @@ -518,11 +513,4 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { }; }); -// DEPRECATED -if ( $.uiBackCompat !== false ) { - $.Widget.prototype._getCreateOptions = function() { - return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ]; - }; -} - })( jQuery ); -- 2.39.5