jquery-ui-1.12.1/000077500000000000000000000000001276627555100135465ustar00rootroot00000000000000jquery-ui-1.12.1/.csslintrc000066400000000000000000000004201276627555100155470ustar00rootroot00000000000000{ "adjoining-classes": false, "box-model": false, "box-sizing": false, "compatible-vendor-prefixes": false, "duplicate-background-images": false, "import": false, "important": false, "outline-none": false, "overqualified-elements": false, "text-indent": false } jquery-ui-1.12.1/.editorconfig000066400000000000000000000005041276627555100162220ustar00rootroot00000000000000# 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 jquery-ui-1.12.1/.gitattributes000066400000000000000000000001771276627555100164460ustar00rootroot00000000000000# Auto detect text files and perform LF normalization * text=auto # JS files must always use LF for tools to work *.js eol=lf jquery-ui-1.12.1/.gitignore000066400000000000000000000000631276627555100155350ustar00rootroot00000000000000dist bower_components node_modules .sizecache.json jquery-ui-1.12.1/.jscsrc000066400000000000000000000004501276627555100150350ustar00rootroot00000000000000{ "preset": "jquery", // This is currently unenforcable see https://github.com/jscs-dev/node-jscs/issues/1686 "requireCapitalizedComments": null, // Until we drop IE8 this prevents things like warning on float keyword "es3": true, // We want to output all errors "maxErrors": 1000000 } jquery-ui-1.12.1/.jshintrc000066400000000000000000000003421276627555100153720ustar00rootroot00000000000000{ "boss": true, "curly": true, "eqeqeq": true, "eqnull": true, "expr": true, "immed": true, "noarg": true, "quotmark": "double", "smarttabs": true, "trailing": true, "undef": true, "unused": true, "node": true } jquery-ui-1.12.1/.mailmap000066400000000000000000000125671276627555100152020ustar00rootroot00000000000000Aaron Peterson Adam Baratz Adam Sontag Alexander Polomoshnov Aliaksandr Rahalevich Andrew Couch Andrew Newcomb Andrew Powell Andrew Powell Andrey Kapitcyn Ben Hollis Benjamin Scott Boyle Bert ter Heide Bjørn Johansen Chairat Sunthornwiphat Christoph Rönsch Corey Frang Courtland Allen Dan Streetman Dan Strohl Danny Trunk David De Sloovere David Murdoch Diego Tres Dominique Vincent Doug Blood Douglas Cerna Douglas Neiner Douglas Neiner Dylan Just Eddie Monge Edward A Faulkner Eric Hynds Ethan Romba EungJun Yi Eyal Kobrigo Filippo Cavallarin Florian Gutmann Genie <386@mail.com> Guntupalli Karunakar Harri Kilpiö Heiko Henning Hiroshi Tomita Ian Simpson Igor Milla Israel Tsadok Jacek Jędrzejewski Jamie Gegerson Jason Oster Jay Merrifield Jean-Francois Remy Jyoti Deka John Enters Jonathan Vingiano Josh Varner Justin Domnitz Justin MacCarthy Jörn Zaefferer Karl Kirch Keith Wood Kevin Dalman Klaus Hartl Klaus Hartl Kris Borchers Kris Borchers Krzysztof Rosiński Lev Kitsis Maciej Mroziński Maggie Wachs Maggie Wachs Marc Neuwirth Marcos Sousa Martin Frost Mathias Stenbom Matt Hoskins Matthew Edward Hutton Max Schnur Michael Hollis Michael Stay Michael Wu Mike Alsup Milan Broum Mohamed Cherif Bouchelaghem Monika Piotrowicz Nick Pierpoint Ondrej Novy Paul Bakaus Paul Irish Pavol Hluchý Peter Heiberg Petr Hromadko Phillip Barnes Pierre-Henri Ausseil Raymond Schwartz Richard Worth Rick Waldron Ryan Neufeld Ryan Olton Saji Nediyanchath Saji Scott Jehl Sebastian Sauer Sergey Kartashov Shahyar Ghobadpour Shane Whittet Shannon Pekary Siebrand Mazeland Simon Sattes Stojce Slavkovski Tarafder Ashek-E-Elahi Thibault Duplessis Thomas Jaggi Ting Kuei Todd Parker Wesley Walser Xavi Ramirez Yermo Lamers Yuriy Khabarov <13real008@gmail.com> Ziling Zhao jquery-ui-1.12.1/.travis.yml000066400000000000000000000001021276627555100156500ustar00rootroot00000000000000sudo: required dist: trusty language: node_js node_js: - "0.12" jquery-ui-1.12.1/AUTHORS.txt000066400000000000000000000305641276627555100154440ustar00rootroot00000000000000Authors ordered by first contribution A list of current team members is available at http://jqueryui.com/about Paul Bakaus Richard Worth Yehuda Katz Sean Catchpole John Resig Tane Piper Dmitri Gaskin Klaus Hartl Stefan Petre Gilles van den Hoven Micheil Bryan Smith Jörn Zaefferer Marc Grabanski Keith Wood Brandon Aaron Scott González Eduardo Lundgren Aaron Eisenberger Joan Piedra Bruno Basto Remy Sharp Bohdan Ganicky David Bolter Chi Cheng Ca-Phun Ung Ariel Flesler Maggie Wachs Scott Jehl Todd Parker Andrew Powell Brant Burnett Douglas Neiner Paul Irish Ralph Whitbeck Thibault Duplessis Dominique Vincent Jack Hsu Adam Sontag Carl Fürstenberg Kevin Dalman Alberto Fernández Capel Jacek Jędrzejewski (http://jacek.jedrzejewski.name) Ting Kuei Samuel Cormier-Iijima Jon Palmer Ben Hollis Justin MacCarthy Eyal Kobrigo Tiago Freire Diego Tres Holger Rüprich Ziling Zhao Mike Alsup Robson Braga Araujo Pierre-Henri Ausseil Christopher McCulloh Andrew Newcomb Lim Chee Aun Jorge Barreiro Daniel Steigerwald John Firebaugh John Enters Andrey Kapitcyn Dmitry Petrov Eric Hynds Chairat Sunthornwiphat Josh Varner Stéphane Raimbault Jay Merrifield J. Ryan Stinnett Peter Heiberg Alex Dovenmuehle Jamie Gegerson Raymond Schwartz Phillip Barnes Kyle Wilkinson Khaled AlHourani Marian Rudzynski Jean-Francois Remy Doug Blood Filippo Cavallarin Heiko Henning Aliaksandr Rahalevich Mario Visic Xavi Ramirez Max Schnur Saji Nediyanchath Corey Frang Aaron Peterson Ivan Peters Mohamed Cherif Bouchelaghem Marcos Sousa Michael DellaNoce George Marshall Tobias Brunner Martin Solli David Petersen Dan Heberden William Kevin Manire Gilmore Davidson Michael Wu Adam Parod Guillaume Gautreau Marcel Toele Dan Streetman Matt Hoskins Giovanni Giacobbi Kyle Florence Pavol Hluchý Hans Hillen Mark Johnson Trey Hunner Shane Whittet Edward A Faulkner Adam Baratz Kato Kazuyoshi Eike Send Kris Borchers Eddie Monge Israel Tsadok Carson McDonald Jason Davies Garrison Locke David Murdoch Benjamin Scott Boyle Jesse Baird Jonathan Vingiano Dylan Just Hiroshi Tomita Glenn Goodrich Tarafder Ashek-E-Elahi Ryan Neufeld Marc Neuwirth Philip Graham Benjamin Sterling Wesley Walser Kouhei Sutou Karl Kirch Chris Kelly Jason Oster Felix Nagel Alexander Polomoshnov David Leal Igor Milla Dave Methvin Florian Gutmann Marwan Al Jubeh Milan Broum Sebastian Sauer Gaëtan Muller Michel Weimerskirch William Griffiths Stojce Slavkovski David Soms David De Sloovere Michael P. Jung Shannon Pekary Dan Wellman Matthew Edward Hutton James Khoury Rob Loach Alberto Monteiro Alex Rhea Krzysztof Rosiński Ryan Olton Genie <386@mail.com> Rick Waldron Ian Simpson Lev Kitsis TJ VanToll Justin Domnitz Douglas Cerna Bert ter Heide Jasvir Nagra Yuriy Khabarov <13real008@gmail.com> Harri Kilpiö Lado Lomidze Amir E. Aharoni Simon Sattes Jo Liss Guntupalli Karunakar Shahyar Ghobadpour Lukasz Lipinski Timo Tijhof Jason Moon Martin Frost Eneko Illarramendi EungJun Yi Courtland Allen Viktar Varvanovich Danny Trunk Pavel Stetina Michael Stay Steven Roussey Michael Hollis Lee Rowlands Timmy Willison Karl Swedberg Baoju Yuan Maciej Mroziński Luis Dalmolin Mark Aaron Shirley Martin Hoch Jiayi Yang Philipp Benjamin Köppchen Sindre Sorhus Bernhard Sirlinger Jared A. Scheel Rafael Xavier de Souza John Chen Robert Beuligmann Dale Kocian Mike Sherov Andrew Couch Marc-Andre Lafortune Nate Eagle David Souther Mathias Stenbom Sergey Kartashov Avinash R Ethan Romba Cory Gackenheimer Juan Pablo Kaniefsky Roman Salnikov Anika Henke Samuel Bovée Fabrício Matté Viktor Kojouharov Pawel Maruszczyk (http://hrabstwo.net) Pavel Selitskas Bjørn Johansen Matthieu Penant Dominic Barnes David Sullivan Thomas Jaggi Vahid Sohrabloo Travis Carden Bruno M. Custódio Nathanael Silverman Christian Wenz Steve Urmston Zaven Muradyan Woody Gilk Zbigniew Motyka Suhail Alkowaileet Toshi MARUYAMA David Hansen Brian Grinstead Christian Klammer Steven Luscher Gan Eng Chin Gabriel Schulhof Alexander Schmitz Vilhjálmur Skúlason Siebrand Mazeland Mohsen Ekhtiari Pere Orga Jasper de Groot Stephane Deschamps Jyoti Deka Andrei Picus Ondrej Novy Jacob McCutcheon Monika Piotrowicz Imants Horsts Eric Dahl Dave Stein Dylan Barrell Daniel DeGroff Michael Wiencek Thomas Meyer Ruslan Yakhyaev Brian J. Dowling Ben Higgins Yermo Lamers Patrick Stapleton Trisha Crowley Usman Akeju Rodrigo Menezes Jacques Perrault Frederik Elvhage Will Holley Uri Gilad Richard Gibson Simen Bekkhus Chen Eshchar Bruno Pérel Mohammed Alshehri Lisa Seacat DeLuca Anne-Gaelle Colom Adam Foster Luke Page Daniel Owens Michael Orchard Marcus Warren Nils Heuermann Marco Ziech Patricia Juarez Ben Mosher Ablay Keldibek Thomas Applencourt Jiabao Wu Eric Lee Carraway Victor Homyakov Myeongjin Lee Liran Sharir Weston Ruter Mani Mishra Hannah Methvin Leonardo Balter Benjamin Albert Michał Gołębiowski Alyosha Pushak Fahad Ahmad Matt Brundage Francesc Baeta Piotr Baran Mukul Hase Konstantin Dinev Rand Scullard Dan Strohl Maksim Ryzhikov Amine HADDAD Amanpreet Singh Alexey Balchunas Peter Kehl Peter Dave Hello Johannes Schäfer Ville Skyttä Ryan Oriecuia jquery-ui-1.12.1/CONTRIBUTING.md000066400000000000000000000116551276627555100160070ustar00rootroot00000000000000# Contributing to jQuery UI Welcome! Thanks for your interest in contributing to jQuery UI. Most of our information on how to contribute to this and all other jQuery Foundation projects is over at [contribute.jquery.org](http://contribute.jquery.org). You'll definitely want to take a look at the articles on contributing [code](http://contribute.jquery.org/code). You may also want to take a look at our [commit & pull request guide](http://contribute.jquery.org/commits-and-pull-requests/) and [style guides](http://contribute.jquery.org/style-guide/) for instructions on how to maintain your fork and submit your code. Before we can merge any pull request, we'll also need you to sign our [contributor license agreement](http://contribute.jquery.org/cla). You can find us on [IRC](http://irc.jquery.org), specifically in #jqueryui-dev should you have any questions. If you've never contributed to open source before, we've put together [a short guide with tips, tricks, and ideas on getting started](http://contribute.jquery.org/open-source/). For other forms of discussion and support, please see the [jQuery UI support center](http://jqueryui.com/support/). ## Getting Involved There are a number of ways to get involved with the development of jQuery UI. Even if you've never contributed code to an Open Source project before, we're always looking for help identifying bugs, writing and reducing test cases and documentation. This is the best way to contribute to jQuery UI. Please read through the full guide detailing [How to Report Bugs](http://contribute.jquery.org/bug-reports/). ### Weekly Meetings Every week (unless otherwise noted) the jQuery UI team has a meeting to discuss the progress of current work and to bring forward possible new blockers for discussion. The meeting is held on [IRC](http://irc.jquery.org) in the #jquery-meeting channel at [Noon EST](http://www.timeanddate.com/worldclock/fixedtime.html?month=1&day=17&year=2011&hour=12&min=0&sec=0&p1=43) on Wednesdays. Meeting notes are posted on http://meetings.jquery.org/category/ui/ after each meeting. ## Tips for Getting Started ### Environment: Minimum Required If you are contributing changes you will need a fork of jquery-ui (see [Getting the Source](#environment-getting-the-source)). If you just want the source code you could clone jquery-ui directly: ```bash git clone git://github.com/jquery/jquery-ui.git cd jquery-ui ``` The tests can run in any local web server. Ideally you should test your patch in appropriate web browsers and if possible run `npm test` to lint the code and run automated tests (this will happen automatically when you create a pull request). See the [Recommended Setup](#environment-recommended-setup) for setting up Node.js so that the `npm test` command works. ### Environment: Getting the Source * Create a fork of the jQuery UI repo on GitHub at http://github.com/jquery/jquery-ui. This will create a fork of jquery-ui in your Github account. * You may want to clone jquery-ui under the path to your web server. If so, change to the required directory ```bash cd /path/to/your/www/root/ ``` * Clone your jQuery UI git repo. ```bash git clone git://github.com/[USERNAME]/jquery-ui.git cd jquery-ui ``` *Note: be sure to replace `[USERNAME]` with your GitHub username.* * Add the official jQuery repository as a remote. We recommend naming it "upstream". ```bash git remote add upstream git://github.com/jquery/jquery-ui.git ``` * Get in the habit of pulling in the "upstream" master to stay up to date as jQuery UI receives new commits. ```bash git pull upstream master ``` ### Environment: Recommended Setup jQuery UI uses Node.js to automate the building and validation of source code. Here is how to set that up: * Get [Node.js](http://nodejs.org/) (includes NPM, necessary for the next step) * Install local Node.js modules ```bash npm install ``` The tests require a local web server and the samples contain some PHP, so a PHP web server may be useful. * Install a web server. Here are some you could use: * 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/) * [http-server](https://www.npmjs.com/package/http-server) ### Running the Tests To lint the JavaScript, HTML, and CSS, as well as run a smoke test in PhantomJS, run the full test suite through npm: ```bash npm test ``` To run the tests for a specific plugin in your browser, open the appropriate file from the `/tests/unit/` directory, for example: `http://localhost/tests/unit/accordion/accordion.html`. The domain will be dependent on your local server configuration; if there is a port, be sure to include it. Ideally you would test in all of our [supported browsers](http://jqueryui.com/browser-support/), but if you don't have all of these browsers available, that's ok. jquery-ui-1.12.1/Gruntfile.js000066400000000000000000000323041276627555100160450ustar00rootroot00000000000000module.exports = function( grunt ) { "use strict"; var // files coreFiles = [ "core.js", "widget.js", "mouse.js", "draggable.js", "droppable.js", "resizable.js", "selectable.js", "sortable.js", "effect.js" ], uiFiles = coreFiles.map(function( file ) { return "ui/" + file; }).concat( expandFiles( "ui/*.js" ).filter(function( file ) { return coreFiles.indexOf( file.substring( 3 ) ) === -1; }) ), allI18nFiles = expandFiles( "ui/i18n/*.js" ), cssFiles = [ "core", "accordion", "autocomplete", "button", "checkboxradio", "controlgroup", "datepicker", "dialog", "draggable", "menu", "progressbar", "resizable", "selectable", "selectmenu", "sortable", "slider", "spinner", "tabs", "tooltip", "theme" ].map(function( component ) { return "themes/base/" + component + ".css"; }), // minified files minify = { options: { preserveComments: false }, main: { options: { banner: createBanner( uiFiles ) }, files: { "dist/jquery-ui.min.js": "dist/jquery-ui.js" } }, i18n: { options: { banner: createBanner( allI18nFiles ) }, files: { "dist/i18n/jquery-ui-i18n.min.js": "dist/i18n/jquery-ui-i18n.js" } } }, compareFiles = { all: [ "dist/jquery-ui.js", "dist/jquery-ui.min.js" ] }, component = grunt.option( "component" ) || "**", htmllintBad = [ "demos/tabs/ajax/content*.html", "demos/tooltip/ajax/content*.html", "tests/unit/core/core.html", "tests/unit/tabs/data/test.html" ]; function mapMinFile( file ) { return "dist/" + file.replace( /ui\//, "minified/" ); } function expandFiles( files ) { return grunt.util._.pluck( grunt.file.expandMapping( files ), "src" ).map(function( values ) { return values[ 0 ]; }); } uiFiles.concat( allI18nFiles ).forEach(function( file ) { minify[ file ] = { options: { banner: createBanner() }, files: {} }; minify[ file ].files[ mapMinFile( file ) ] = file; }); uiFiles.forEach(function( file ) { // TODO this doesn't do anything until https://github.com/rwldrn/grunt-compare-size/issues/13 compareFiles[ file ] = [ file, mapMinFile( file ) ]; }); // grunt plugins require( "load-grunt-tasks" )( grunt ); // local testswarm and build tasks grunt.loadTasks( "build/tasks" ); function stripDirectory( file ) { return file.replace( /.+\/(.+?)>?$/, "$1" ); } function createBanner( files ) { // strip folders var fileNames = files && files.map( stripDirectory ); return "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " + "<%= grunt.template.today('isoDate') %>\n" + "<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>" + (files ? "* Includes: " + fileNames.join(", ") + "\n" : "") + "* Copyright <%= pkg.author.name %>;" + " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n"; } grunt.initConfig({ pkg: grunt.file.readJSON( "package.json" ), files: { dist: "<%= pkg.name %>-<%= pkg.version %>" }, compare_size: compareFiles, concat: { css: { options: { banner: createBanner( cssFiles ), stripBanners: { block: true } }, src: cssFiles, dest: "dist/jquery-ui.css" } }, requirejs: { js: { options: { baseUrl: "./", paths: { jquery: "./external/jquery/jquery", external: "./external/" }, preserveLicenseComments: false, optimize: "none", findNestedDependencies: true, skipModuleInsertion: true, exclude: [ "jquery" ], include: expandFiles( [ "ui/**/*.js", "!ui/core.js", "!ui/i18n/*" ] ), out: "dist/jquery-ui.js", wrap: { start: createBanner( uiFiles ), } } } }, jscs: { ui: { options: { config: true }, files: { src: [ "demos/**/*.js", "build/**/*.js", "ui/**/*.js" ] } }, tests: { options: { config: true, maximumLineLength: null }, files: { src: [ "tests/**/*.js" ] } } }, uglify: minify, htmllint: { good: { options: { ignore: [ /The text content of element “script” was not in the required format: Expected space, tab, newline, or slash but found “.” instead/ ] }, src: [ "demos/**/*.html", "tests/**/*.html" ].concat( htmllintBad.map( function( file ) { return "!" + file; } ) ) }, bad: { options: { ignore: [ /Start tag seen without seeing a doctype first/, /Element “head” is missing a required instance of child element “title”/, /Element “object” is missing one or more of the following/, /The “codebase” attribute on the “object” element is obsolete/ ] }, src: htmllintBad } }, qunit: { files: expandFiles( "tests/unit/" + component + "/*.html" ).filter(function( file ) { return !( /(all|index|test)\.html$/ ).test( file ); }), options: { inject: false, page: { viewportSize: { width: 700, height: 500 } } } }, jshint: { options: { jshintrc: true }, all: [ "ui/*.js", "Gruntfile.js", "build/**/*.js", "tests/unit/**/*.js", "tests/lib/**/*.js", "demos/**/*.js" ] }, csslint: { base_theme: { src: "themes/base/*.css", options: { csslintrc: ".csslintrc" } } }, bowercopy: { all: { options: { clean: true, ignore: [ "jquery" ], destPrefix: "external" }, files: { "qunit/qunit.js": "qunit/qunit/qunit.js", "qunit/qunit.css": "qunit/qunit/qunit.css", "qunit/LICENSE.txt": "qunit/LICENSE.txt", "qunit-assert-classes/qunit-assert-classes.js": "qunit-assert-classes/qunit-assert-classes.js", "qunit-assert-classes/LICENSE.txt": "qunit-assert-classes/LICENSE", "qunit-assert-close/qunit-assert-close.js": "qunit-assert-close/qunit-assert-close.js", "qunit-assert-close/MIT-LICENSE.txt": "qunit-assert-close/MIT-LICENSE.txt", "qunit-composite/qunit-composite.js": "qunit-composite/qunit-composite.js", "qunit-composite/qunit-composite.css": "qunit-composite/qunit-composite.css", "qunit-composite/LICENSE.txt": "qunit-composite/LICENSE.txt", "requirejs/require.js": "requirejs/require.js", "jquery-mousewheel/jquery.mousewheel.js": "jquery-mousewheel/jquery.mousewheel.js", "jquery-mousewheel/LICENSE.txt": "jquery-mousewheel/LICENSE.txt", "jquery-simulate/jquery.simulate.js": "jquery-simulate/jquery.simulate.js", "jquery-simulate/LICENSE.txt": "jquery-simulate/LICENSE.txt", "jshint/jshint.js": "jshint/dist/jshint.js", "jshint/LICENSE": "jshint/LICENSE", "jquery/jquery.js": "jquery-1.x/dist/jquery.js", "jquery/LICENSE.txt": "jquery-1.x/LICENSE.txt", "jquery-1.7.0/jquery.js": "jquery-1.7.0/jquery.js", "jquery-1.7.0/MIT-LICENSE.txt": "jquery-1.7.0/MIT-LICENSE.txt", "jquery-1.7.1/jquery.js": "jquery-1.7.1/jquery.js", "jquery-1.7.1/MIT-LICENSE.txt": "jquery-1.7.1/MIT-LICENSE.txt", "jquery-1.7.2/jquery.js": "jquery-1.7.2/jquery.js", "jquery-1.7.2/MIT-LICENSE.txt": "jquery-1.7.2/MIT-LICENSE.txt", "jquery-1.8.0/jquery.js": "jquery-1.8.0/jquery.js", "jquery-1.8.0/MIT-LICENSE.txt": "jquery-1.8.0/MIT-LICENSE.txt", "jquery-1.8.1/jquery.js": "jquery-1.8.1/jquery.js", "jquery-1.8.1/MIT-LICENSE.txt": "jquery-1.8.1/MIT-LICENSE.txt", "jquery-1.8.2/jquery.js": "jquery-1.8.2/jquery.js", "jquery-1.8.2/MIT-LICENSE.txt": "jquery-1.8.2/MIT-LICENSE.txt", "jquery-1.8.3/jquery.js": "jquery-1.8.3/jquery.js", "jquery-1.8.3/MIT-LICENSE.txt": "jquery-1.8.3/MIT-LICENSE.txt", "jquery-1.9.0/jquery.js": "jquery-1.9.0/jquery.js", "jquery-1.9.0/MIT-LICENSE.txt": "jquery-1.9.0/MIT-LICENSE.txt", "jquery-1.9.1/jquery.js": "jquery-1.9.1/jquery.js", "jquery-1.9.1/MIT-LICENSE.txt": "jquery-1.9.1/MIT-LICENSE.txt", "jquery-1.10.0/jquery.js": "jquery-1.10.0/jquery.js", "jquery-1.10.0/MIT-LICENSE.txt": "jquery-1.10.0/MIT-LICENSE.txt", "jquery-1.10.1/jquery.js": "jquery-1.10.1/jquery.js", "jquery-1.10.1/MIT-LICENSE.txt": "jquery-1.10.1/MIT-LICENSE.txt", "jquery-1.10.2/jquery.js": "jquery-1.10.2/jquery.js", "jquery-1.10.2/MIT-LICENSE.txt": "jquery-1.10.2/MIT-LICENSE.txt", "jquery-1.11.0/jquery.js": "jquery-1.11.0/dist/jquery.js", "jquery-1.11.0/MIT-LICENSE.txt": "jquery-1.11.0/MIT-LICENSE.txt", "jquery-1.11.1/jquery.js": "jquery-1.11.1/dist/jquery.js", "jquery-1.11.1/MIT-LICENSE.txt": "jquery-1.11.1/MIT-LICENSE.txt", "jquery-1.11.2/jquery.js": "jquery-1.11.2/dist/jquery.js", "jquery-1.11.2/MIT-LICENSE.txt": "jquery-1.11.2/MIT-LICENSE.txt", "jquery-1.11.3/jquery.js": "jquery-1.11.3/dist/jquery.js", "jquery-1.11.3/MIT-LICENSE.txt": "jquery-1.11.3/MIT-LICENSE.txt", "jquery-1.12.0/jquery.js": "jquery-1.12.0/dist/jquery.js", "jquery-1.12.0/LICENSE.txt": "jquery-1.12.0/LICENSE.txt", "jquery-1.12.1/jquery.js": "jquery-1.12.1/dist/jquery.js", "jquery-1.12.1/LICENSE.txt": "jquery-1.12.1/LICENSE.txt", "jquery-1.12.2/jquery.js": "jquery-1.12.2/dist/jquery.js", "jquery-1.12.2/LICENSE.txt": "jquery-1.12.2/LICENSE.txt", "jquery-1.12.3/jquery.js": "jquery-1.12.3/dist/jquery.js", "jquery-1.12.3/LICENSE.txt": "jquery-1.12.3/LICENSE.txt", "jquery-1.12.4/jquery.js": "jquery-1.12.4/dist/jquery.js", "jquery-1.12.4/LICENSE.txt": "jquery-1.12.4/LICENSE.txt", "jquery-2.0.0/jquery.js": "jquery-2.0.0/jquery.js", "jquery-2.0.0/MIT-LICENSE.txt": "jquery-2.0.0/MIT-LICENSE.txt", "jquery-2.0.1/jquery.js": "jquery-2.0.1/jquery.js", "jquery-2.0.1/MIT-LICENSE.txt": "jquery-2.0.1/MIT-LICENSE.txt", "jquery-2.0.2/jquery.js": "jquery-2.0.2/jquery.js", "jquery-2.0.2/MIT-LICENSE.txt": "jquery-2.0.2/MIT-LICENSE.txt", "jquery-2.0.3/jquery.js": "jquery-2.0.3/jquery.js", "jquery-2.0.3/MIT-LICENSE.txt": "jquery-2.0.3/MIT-LICENSE.txt", "jquery-2.1.0/jquery.js": "jquery-2.1.0/dist/jquery.js", "jquery-2.1.0/MIT-LICENSE.txt": "jquery-2.1.0/MIT-LICENSE.txt", "jquery-2.1.1/jquery.js": "jquery-2.1.1/dist/jquery.js", "jquery-2.1.1/MIT-LICENSE.txt": "jquery-2.1.1/MIT-LICENSE.txt", "jquery-2.1.2/jquery.js": "jquery-2.1.2/dist/jquery.js", "jquery-2.1.2/MIT-LICENSE.txt": "jquery-2.1.2/MIT-LICENSE.txt", "jquery-2.1.3/jquery.js": "jquery-2.1.3/dist/jquery.js", "jquery-2.1.3/MIT-LICENSE.txt": "jquery-2.1.3/MIT-LICENSE.txt", "jquery-2.1.4/jquery.js": "jquery-2.1.4/dist/jquery.js", "jquery-2.1.4/MIT-LICENSE.txt": "jquery-2.1.4/MIT-LICENSE.txt", "jquery-2.2.0/jquery.js": "jquery-2.2.0/dist/jquery.js", "jquery-2.2.0/LICENSE.txt": "jquery-2.2.0/LICENSE.txt", "jquery-2.2.1/jquery.js": "jquery-2.2.1/dist/jquery.js", "jquery-2.2.1/LICENSE.txt": "jquery-2.2.1/LICENSE.txt", "jquery-2.2.2/jquery.js": "jquery-2.2.2/dist/jquery.js", "jquery-2.2.2/LICENSE.txt": "jquery-2.2.2/LICENSE.txt", "jquery-2.2.3/jquery.js": "jquery-2.2.3/dist/jquery.js", "jquery-2.2.3/LICENSE.txt": "jquery-2.2.3/LICENSE.txt", "jquery-2.2.4/jquery.js": "jquery-2.2.4/dist/jquery.js", "jquery-2.2.4/LICENSE.txt": "jquery-2.2.4/LICENSE.txt", "jquery-3.0.0/jquery.js": "jquery-3.0.0/dist/jquery.js", "jquery-3.0.0/LICENSE.txt": "jquery-3.0.0/LICENSE.txt", "jquery-3.1.0/jquery.js": "jquery-3.1.0/dist/jquery.js", "jquery-3.1.0/LICENSE.txt": "jquery-3.1.0/LICENSE.txt" } } }, authors: { prior: [ "Paul Bakaus ", "Richard Worth ", "Yehuda Katz ", "Sean Catchpole ", "John Resig ", "Tane Piper ", "Dmitri Gaskin ", "Klaus Hartl ", "Stefan Petre ", "Gilles van den Hoven ", "Micheil Bryan Smith ", "Jörn Zaefferer ", "Marc Grabanski ", "Keith Wood ", "Brandon Aaron ", "Scott González ", "Eduardo Lundgren ", "Aaron Eisenberger ", "Joan Piedra ", "Bruno Basto ", "Remy Sharp ", "Bohdan Ganicky " ] } }); grunt.registerTask( "update-authors", function() { var getAuthors = require( "grunt-git-authors" ).getAuthors, done = this.async(); getAuthors({ priorAuthors: grunt.config( "authors.prior" ) }, function( error, authors ) { if ( error ) { grunt.log.error( error ); return done( false ); } authors = authors.map(function( author ) { if ( author.match( /^Jacek Jędrzejewski =1.6" }, "devDependencies": { "jquery-mousewheel": "3.1.12", "jquery-simulate": "1.0.0", "jshint": "2.4.4", "qunit": "1.18.0", "qunit-assert-classes": "1.0.2", "qunit-assert-close": "JamesMGreene/qunit-assert-close#v1.1.1", "qunit-composite": "JamesMGreene/qunit-composite#v1.1.0", "requirejs": "2.1.14", "jquery-1.7.0": "jquery#1.7.0", "jquery-1.7.1": "jquery#1.7.1", "jquery-1.7.2": "jquery#1.7.2", "jquery-1.8.0": "jquery#1.8.0", "jquery-1.8.1": "jquery#1.8.1", "jquery-1.8.2": "jquery#1.8.2", "jquery-1.8.3": "jquery#1.8.3", "jquery-1.9.0": "jquery#1.9.0", "jquery-1.9.1": "jquery#1.9.1", "jquery-1.10.0": "jquery#1.10.0", "jquery-1.10.1": "jquery#1.10.1", "jquery-1.10.2": "jquery#1.10.2", "jquery-1.11.0": "jquery#1.11.0", "jquery-1.11.1": "jquery#1.11.1", "jquery-1.11.2": "jquery#1.11.2", "jquery-1.11.3": "jquery#1.11.3", "jquery-1.12.0": "jquery#1.12.0", "jquery-1.12.1": "jquery#1.12.1", "jquery-1.12.2": "jquery#1.12.2", "jquery-1.12.3": "jquery#1.12.3", "jquery-1.12.4": "jquery#1.12.4", "jquery-1.x": "jquery#1.12.4", "jquery-2.0.0": "jquery#2.0.0", "jquery-2.0.1": "jquery#2.0.1", "jquery-2.0.2": "jquery#2.0.2", "jquery-2.0.3": "jquery#2.0.3", "jquery-2.1.0": "jquery#2.1.0", "jquery-2.1.1": "jquery#2.1.1", "jquery-2.1.2": "jquery#2.1.2", "jquery-2.1.3": "jquery#2.1.3", "jquery-2.1.4": "jquery#2.1.4", "jquery-2.2.0": "jquery#2.2.0", "jquery-2.2.1": "jquery#2.2.1", "jquery-2.2.2": "jquery#2.2.2", "jquery-2.2.3": "jquery#2.2.3", "jquery-2.2.4": "jquery#2.2.4", "jquery-3.0.0": "jquery#3.0.0", "jquery-3.1.0": "jquery#3.1.0" }, "version": "1.12.1" } jquery-ui-1.12.1/build/000077500000000000000000000000001276627555100146455ustar00rootroot00000000000000jquery-ui-1.12.1/build/release-test.js000066400000000000000000000023001276627555100175730ustar00rootroot00000000000000var shell = require( "shelljs" ); var Release = { define: function( props ) { for ( var key in props ) { Release[ key ] = props[ key ]; } }, exec: function( _options, errorMessage ) { var result, command = _options.command || _options, options = {}; if ( _options.silent ) { options.silent = true; } errorMessage = errorMessage || "Error executing command: " + command; result = shell.exec( command, options ); if ( result.code !== 0 ) { Release.abort( errorMessage ); } return result.output; }, abort: function() { console.error.apply( console, arguments ); process.exit( 1 ); }, newVersion: require( "../package" ).version }; var script = require( "./release" ); script( Release ); // Ignores actual version installed, should be good enough for a test if ( shell.exec( "npm ls --depth 0 | grep download.jqueryui.com" ).code === 1 ) { shell.exec( "npm install " + script.dependencies.join( " " ) ); } // If AUTHORS.txt is outdated, this will update it // Very annoying during an actual release shell.exec( "grunt update-authors" ); Release.generateArtifacts( function() { console.log( "Done generating artifacts, verify output, should be in dist/cdn" ); } ); jquery-ui-1.12.1/build/release.js000066400000000000000000000070061276627555100166260ustar00rootroot00000000000000module.exports = function( Release ) { var crypto = require( "crypto" ); var shell = require( "shelljs" ), path = require( "path" ), fs = require( "fs" ); function replaceAtVersion() { console.log( "Replacing @VERSION..." ); var matches = []; function recurse( folder ) { fs.readdirSync( folder ).forEach( function( fileName ) { var content, fullPath = folder + "/" + fileName; if ( fs.statSync( fullPath ).isDirectory() ) { recurse( fullPath ); return; } content = fs.readFileSync( fullPath, { encoding: "utf-8" } ); if ( !/@VERSION/.test( content ) ) { return; } matches.push( fullPath ); fs.writeFileSync( fullPath, content.replace( /@VERSION/g, Release.newVersion ) ); } ); } [ "ui", "themes" ].forEach( recurse ); console.log( "Replaced @VERSION in " + matches.length + " files." ); return matches; } function removeExternals ( packager ) { Object.keys( packager.builtFiles ).forEach( function( filepath ) { if ( /^external\//.test( filepath ) ) { delete packager.builtFiles[ filepath ]; } } ); } function addManifest( packager ) { var output = packager.builtFiles; output.MANIFEST = Object.keys( output ).sort( function( a, b ) { return a.localeCompare( b ); } ).map( function( filepath ) { var md5 = crypto.createHash( "md5" ); md5.update( output[ filepath ] ); return filepath + " " + md5.digest( "hex" ); } ).join( "\n" ); } function buildCDNPackage( callback ) { console.log( "Building CDN package" ); var JqueryUi = require( "download.jqueryui.com/lib/jquery-ui" ); var Package = require( "download.jqueryui.com/lib/package-1-12-themes" ); var Packager = require( "node-packager" ); var jqueryUi = new JqueryUi( path.resolve( "." ) ); var target = fs.createWriteStream( "../" + jqueryUi.pkg.name + "-" + jqueryUi.pkg.version + "-cdn.zip" ); var packager = new Packager( jqueryUi.files().cache, Package, { components: jqueryUi.components().map( function( component ) { return component.name; } ), jqueryUi: jqueryUi, themeVars: null } ); packager.ready.then( function() { removeExternals( packager ); addManifest( packager ); packager.toZip( target, { basedir: "" }, function( error ) { if ( error ) { Release.abort( "Failed to zip CDN package", error ); } callback(); } ); } ); } Release.define( { npmPublish: true, issueTracker: "trac", contributorReportId: 22, changelogShell: function() { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], now = new Date(); return "\n\nReleased on " + monthNames[ now.getMonth() ] + " " + now.getDate() + ", " + now.getFullYear() + "\n\n"; }, generateArtifacts: function( fn ) { var files = replaceAtVersion(); buildCDNPackage( function copyCdnFiles() { var zipFile = shell.ls( "../jquery*-cdn.zip" )[ 0 ], tmpFolder = "../tmp-zip-output", unzipCommand = "unzip -o " + zipFile + " -d " + tmpFolder; console.log( "Unzipping for dist/cdn copies" ); shell.mkdir( "-p", tmpFolder ); Release.exec( { command: unzipCommand, silent: true }, "Failed to unzip cdn files" ); shell.mkdir( "-p", "dist/cdn" ); shell.cp( tmpFolder + "/jquery-ui*.js", "dist/cdn" ); shell.cp( "-r", tmpFolder + "/themes", "dist/cdn" ); fn( files ); } ); } } ); }; module.exports.dependencies = [ "download.jqueryui.com@2.1.2", "node-packager@0.0.6", "shelljs@0.2.6" ]; jquery-ui-1.12.1/build/tasks/000077500000000000000000000000001276627555100157725ustar00rootroot00000000000000jquery-ui-1.12.1/build/tasks/build.js000066400000000000000000000021241276627555100174260ustar00rootroot00000000000000module.exports = function( grunt ) { "use strict"; grunt.registerTask( "clean", function() { require( "rimraf" ).sync( "dist" ); } ); grunt.registerTask( "asciilint", function() { var valid = true, files = grunt.file.expand( { filter: "isFile" }, "ui/*.js" ); files.forEach( function( filename ) { var i, c, text = grunt.file.read( filename ); // Ensure files use only \n for line endings, not \r\n if ( /\x0d\x0a/.test( text ) ) { grunt.log.error( filename + ": Incorrect line endings (\\r\\n)" ); valid = false; } // Ensure only ASCII chars so script tags don't need a charset attribute if ( text.length !== Buffer.byteLength( text, "utf8" ) ) { grunt.log.error( filename + ": Non-ASCII characters detected:" ); for ( i = 0; i < text.length; i++ ) { c = text.charCodeAt( i ); if ( c > 127 ) { grunt.log.error( "- position " + i + ": " + c ); grunt.log.error( "-- " + text.substring( i - 20, i + 20 ) ); break; } } valid = false; } } ); if ( valid ) { grunt.log.ok( files.length + " files lint free." ); } return valid; } ); }; jquery-ui-1.12.1/build/tasks/testswarm.js000066400000000000000000000056521276627555100203710ustar00rootroot00000000000000module.exports = function( grunt ) { "use strict"; var versions = { "git": "git", "3.1": "3.1.0", "3.0": "3.0.0", "2.2": "2.2.4", "2.1": "2.1.4", "2.0": "2.0.3", "1.12": "1.12.4", "1.11": "1.11.3", "1.10": "1.10.2", "1.9": "1.9.1", "1.8": "1.8.3", "1.7": "1.7.2" }, tests = { "Accordion": "accordion/accordion.html", "Autocomplete": "autocomplete/autocomplete.html", "Button": "button/button.html", "Checkboxradio": "checkboxradio/checkboxradio.html", "Controlgroup": "controlgroup/controlgroup.html", "Core": "core/core.html", "Datepicker": "datepicker/datepicker.html", "Dialog": "dialog/dialog.html", "Draggable": "draggable/draggable.html", "Droppable": "droppable/droppable.html", "Effects": "effects/effects.html", "Form Reset Mixin": "form-reset-mixin/form-reset-mixin.html", "Menu": "menu/menu.html", "Position": "position/position.html", "Progressbar": "progressbar/progressbar.html", "Resizable": "resizable/resizable.html", "Selectable": "selectable/selectable.html", "Selectmenu": "selectmenu/selectmenu.html", "Slider": "slider/slider.html", "Sortable": "sortable/sortable.html", "Spinner": "spinner/spinner.html", "Tabs": "tabs/tabs.html", "Tooltip": "tooltip/tooltip.html", "Widget": "widget/widget.html" }; function submit( commit, runs, configFile, extra, done ) { var testName, testswarm = require( "testswarm" ), config = grunt.file.readJSON( configFile ).jqueryui, browserSets = config.browserSets, commitUrl = "https://github.com/jquery/jquery-ui/commit/" + commit; if ( extra ) { // jQuery >= 2.0.0 don't support IE 8. if ( extra.substring( 0, 6 ) !== "core 1" ) { browserSets = "jquery-ui-future"; } extra = " (" + extra + ")"; } for ( testName in runs ) { runs[ testName ] = config.testUrl + commit + "/tests/unit/" + runs[ testName ]; } testswarm.createClient( { url: config.swarmUrl } ) .addReporter( testswarm.reporters.cli ) .auth( { id: config.authUsername, token: config.authToken } ) .addjob( { name: "Commit " + commit.substr( 0, 10 ) + "" + extra, runs: runs, runMax: config.runMax, browserSets: browserSets, timeout: 1000 * 60 * 30 }, function( error, passed ) { if ( error ) { grunt.log.error( error ); } done( passed ); } ); } 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, "core " + minor, this.async() ); } ); }; jquery-ui-1.12.1/build/themes000066400000000000000000001652341276627555100160700ustar00rootroot00000000000000download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DTrebuchet%2BMS%2C%2BTahoma%2C%2BVerdana%2C%2BArial%2C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D4px%26bgColorHeader%3Df6a828%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D35%26borderColorHeader%3De78f08%26fcHeader%3Dffffff%26iconColorHeader%3Dffffff%26bgColorContent%3Deeeeee%26bgTextureContent%3D03_highlight_soft.png%26bgImgOpacityContent%3D100%26borderColorContent%3Ddddddd%26fcContent%3D333333%26iconColorContent%3D222222%26bgColorDefault%3Df6f6f6%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D100%26borderColorDefault%3Dcccccc%26fcDefault%3D1c94c4%26iconColorDefault%3Def8c08%26bgColorHover%3Dfdf5ce%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D100%26borderColorHover%3Dfbcb09%26fcHover%3Dc77405%26iconColorHover%3Def8c08%26bgColorActive%3Dffffff%26bgTextureActive%3D02_glass.png%26bgImgOpacityActive%3D65%26borderColorActive%3Dfbd850%26fcActive%3Deb8f00%26iconColorActive%3Def8c08%26bgColorHighlight%3Dffe45c%26bgTextureHighlight%3D03_highlight_soft.png%26bgImgOpacityHighlight%3D75%26borderColorHighlight%3Dfed22f%26fcHighlight%3D363636%26iconColorHighlight%3D228ef1%26bgColorError%3Db81900%26bgTextureError%3D08_diagonals_thick.png%26bgImgOpacityError%3D18%26borderColorError%3Dcd0a0a%26fcError%3Dffffff%26iconColorError%3Dffd27a%26bgColorOverlay%3D666666%26bgTextureOverlay%3D08_diagonals_thick.png%26bgImgOpacityOverlay%3D20%26opacityOverlay%3D50%26bgColorShadow%3D000000%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D10%26opacityShadow%3D20%26thicknessShadow%3D5px%26offsetTopShadow%3D-5px%26offsetLeftShadow%3D-5px%26cornerRadiusShadow%3D5px&scope=&t-name=ui-lightness&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DSegoe%2BUI%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3D333333%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D25%26borderColorHeader%3D333333%26fcHeader%3Dffffff%26iconColorHeader%3Dffffff%26bgColorContent%3D000000%26bgTextureContent%3D05_inset_soft.png%26bgImgOpacityContent%3D25%26borderColorContent%3D666666%26fcContent%3Dffffff%26iconColorContent%3Dcccccc%26bgColorDefault%3D555555%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D20%26borderColorDefault%3D666666%26fcDefault%3Deeeeee%26iconColorDefault%3Dcccccc%26bgColorHover%3D0078a3%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D40%26borderColorHover%3D59b4d4%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3Df58400%26bgTextureActive%3D05_inset_soft.png%26bgImgOpacityActive%3D30%26borderColorActive%3Dffaf0f%26fcActive%3Dffffff%26iconColorActive%3D222222%26bgColorHighlight%3Deeeeee%26bgTextureHighlight%3D03_highlight_soft.png%26bgImgOpacityHighlight%3D80%26borderColorHighlight%3Dcccccc%26fcHighlight%3D2e7db2%26iconColorHighlight%3D4b8e0b%26bgColorError%3Dffc73d%26bgTextureError%3D02_glass.png%26bgImgOpacityError%3D40%26borderColorError%3Dffb73d%26fcError%3D111111%26iconColorError%3Da83300%26bgColorOverlay%3D5c5c5c%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D50%26opacityOverlay%3D80%26bgColorShadow%3Dcccccc%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D30%26opacityShadow%3D60%26thicknessShadow%3D7px%26offsetTopShadow%3D-7px%26offsetLeftShadow%3D-7px%26cornerRadiusShadow%3D8px&scope=&t-name=ui-darkness&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DVerdana%2CArial%2Csans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1em%26cornerRadius%3D4px%26bgColorHeader%3Dcccccc%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D75%26borderColorHeader%3Daaaaaa%26fcHeader%3D222222%26iconColorHeader%3D222222%26bgColorContent%3Dffffff%26bgTextureContent%3D01_flat.png%26bgImgOpacityContent%3D75%26borderColorContent%3Daaaaaa%26fcContent%3D222222%26iconColorContent%3D222222%26bgColorDefault%3De6e6e6%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D75%26borderColorDefault%3Dd3d3d3%26fcDefault%3D555555%26iconColorDefault%3D888888%26bgColorHover%3Ddadada%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D75%26borderColorHover%3D999999%26fcHover%3D212121%26iconColorHover%3D454545%26bgColorActive%3Dffffff%26bgTextureActive%3D02_glass.png%26bgImgOpacityActive%3D65%26borderColorActive%3Daaaaaa%26fcActive%3D212121%26iconColorActive%3D454545%26bgColorHighlight%3Dfbf9ee%26bgTextureHighlight%3D02_glass.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dfcefa1%26fcHighlight%3D363636%26iconColorHighlight%3D2e83ff%26bgColorError%3Dfef1ec%26bgTextureError%3D02_glass.png%26bgImgOpacityError%3D95%26borderColorError%3Dcd0a0a%26fcError%3Dcd0a0a%26iconColorError%3Dcd0a0a%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D30%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=smoothness&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DVerdana%252CArial%252Csans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1em%26cornerRadius%3D5px%26bgColorHeader%3D2191c0%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D75%26borderColorHeader%3D4297d7%26fcHeader%3Deaf5f7%26iconColorHeader%3Dd8e7f3%26bgColorContent%3Dfcfdfd%26bgTextureContent%3D06_inset_hard.png%26bgImgOpacityContent%3D100%26borderColorContent%3Da6c9e2%26fcContent%3D222222%26iconColorContent%3D0078ae%26bgColorDefault%3D0078ae%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D45%26borderColorDefault%3D77d5f7%26fcDefault%3Dffffff%26iconColorDefault%3De0fdff%26bgColorHover%3D79c9ec%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D75%26borderColorHover%3D448dae%26fcHover%3D026890%26iconColorHover%3D056b93%26bgColorActive%3D6eac2c%26bgTextureActive%3D12_gloss_wave.png%26bgImgOpacityActive%3D50%26borderColorActive%3Dacdd4a%26fcActive%3Dffffff%26iconColorActive%3Df5e175%26bgColorHighlight%3Df8da4e%26bgTextureHighlight%3D02_glass.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dfcd113%26fcHighlight%3D915608%26iconColorHighlight%3Df7a50d%26bgColorError%3De14f1c%26bgTextureError%3D12_gloss_wave.png%26bgImgOpacityError%3D45%26borderColorError%3Dcd0a0a%26fcError%3Dffffff%26iconColorError%3Dfcd113%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D75%26opacityOverlay%3D30%26bgColorShadow%3D999999%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D55%26opacityShadow%3D45%26thicknessShadow%3D0px%26offsetTopShadow%3D5px%26offsetLeftShadow%3D5px%26cornerRadiusShadow%3D5px&scope=&t-name=start&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DLucida%2BGrande%2C%2BLucida%2BSans%2C%2BArial%2C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D5px%26bgColorHeader%3D5c9ccc%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D55%26borderColorHeader%3D4297d7%26fcHeader%3Dffffff%26iconColorHeader%3Dd8e7f3%26bgColorContent%3Dfcfdfd%26bgTextureContent%3D06_inset_hard.png%26bgImgOpacityContent%3D100%26borderColorContent%3Da6c9e2%26fcContent%3D222222%26iconColorContent%3D469bdd%26bgColorDefault%3Ddfeffc%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D85%26borderColorDefault%3Dc5dbec%26fcDefault%3D2e6e9e%26iconColorDefault%3D6da8d5%26bgColorHover%3Dd0e5f5%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D75%26borderColorHover%3D79b7e7%26fcHover%3D1d5987%26iconColorHover%3D217bc0%26bgColorActive%3Df5f8f9%26bgTextureActive%3D06_inset_hard.png%26bgImgOpacityActive%3D100%26borderColorActive%3D79b7e7%26fcActive%3De17009%26iconColorActive%3Df9bd01%26bgColorHighlight%3Dfbec88%26bgTextureHighlight%3D01_flat.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dfad42e%26fcHighlight%3D363636%26iconColorHighlight%3D2e83ff%26bgColorError%3Dfef1ec%26bgTextureError%3D02_glass.png%26bgImgOpacityError%3D95%26borderColorError%3Dcd0a0a%26fcError%3Dcd0a0a%26iconColorError%3Dcd0a0a%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D30%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=redmond&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DSegoe%2BUI%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D8px%26bgColorHeader%3D817865%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D45%26borderColorHeader%3D494437%26fcHeader%3Dffffff%26iconColorHeader%3Dfadc7a%26bgColorContent%3Dfeeebd%26bgTextureContent%3D03_highlight_soft.png%26bgImgOpacityContent%3D100%26borderColorContent%3D8e846b%26fcContent%3D383838%26iconColorContent%3Dd19405%26bgColorDefault%3Dfece2f%26bgTextureDefault%3D12_gloss_wave.png%26bgImgOpacityDefault%3D60%26borderColorDefault%3Dd19405%26fcDefault%3D4c3000%26iconColorDefault%3D3d3d3d%26bgColorHover%3Dffdd57%26bgTextureHover%3D12_gloss_wave.png%26bgImgOpacityHover%3D70%26borderColorHover%3Da45b13%26fcHover%3D381f00%26iconColorHover%3Dbd7b00%26bgColorActive%3Dffffff%26bgTextureActive%3D05_inset_soft.png%26bgImgOpacityActive%3D30%26borderColorActive%3D655e4e%26fcActive%3D0074c7%26iconColorActive%3Deb990f%26bgColorHighlight%3Dfff9e5%26bgTextureHighlight%3D12_gloss_wave.png%26bgImgOpacityHighlight%3D90%26borderColorHighlight%3Deeb420%26fcHighlight%3D1f1f1f%26iconColorHighlight%3Ded9f26%26bgColorError%3Dd34d17%26bgTextureError%3D07_diagonals_medium.png%26bgImgOpacityError%3D20%26borderColorError%3Dffb73d%26fcError%3Dffffff%26iconColorError%3Dffe180%26bgColorOverlay%3D5c5c5c%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D50%26opacityOverlay%3D80%26bgColorShadow%3Dcccccc%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D30%26opacityShadow%3D60%26thicknessShadow%3D7px%26offsetTopShadow%3D-7px%26offsetLeftShadow%3D-7px%26cornerRadiusShadow%3D8px&scope=&t-name=sunny&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DTrebuchet%2BMS%252C%2BHelvetica%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3Ddddddd%26bgTextureHeader%3D02_glass.png%26bgImgOpacityHeader%3D35%26borderColorHeader%3Dbbbbbb%26fcHeader%3D444444%26iconColorHeader%3D999999%26bgColorContent%3Dc9c9c9%26bgTextureContent%3D05_inset_soft.png%26bgImgOpacityContent%3D50%26borderColorContent%3Daaaaaa%26fcContent%3D333333%26iconColorContent%3D999999%26bgColorDefault%3Deeeeee%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D60%26borderColorDefault%3Dcccccc%26fcDefault%3D3383bb%26iconColorDefault%3D70b2e1%26bgColorHover%3Df8f8f8%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D100%26borderColorHover%3Dbbbbbb%26fcHover%3D599fcf%26iconColorHover%3D3383bb%26bgColorActive%3D999999%26bgTextureActive%3D06_inset_hard.png%26bgImgOpacityActive%3D75%26borderColorActive%3D999999%26fcActive%3Dffffff%26iconColorActive%3D454545%26bgColorHighlight%3Deeeeee%26bgTextureHighlight%3D01_flat.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dffffff%26fcHighlight%3D444444%26iconColorHighlight%3D3383bb%26bgColorError%3Dc0402a%26bgTextureError%3D01_flat.png%26bgImgOpacityError%3D55%26borderColorError%3Dc0402a%26fcError%3Dffffff%26iconColorError%3Dfbc856%26bgColorOverlay%3Deeeeee%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D80%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D60%26thicknessShadow%3D4px%26offsetTopShadow%3D-4px%26offsetLeftShadow%3D-4px%26cornerRadiusShadow%3D0pxdow%253D0px&scope=&t-name=overcast&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DLucida%2BGrande%252C%2BLucida%2BSans%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1em%26cornerRadius%3D10px%26bgColorHeader%3D3a8104%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D33%26borderColorHeader%3D3f7506%26fcHeader%3Dffffff%26iconColorHeader%3Dffffff%26bgColorContent%3D285c00%26bgTextureContent%3D05_inset_soft.png%26bgImgOpacityContent%3D10%26borderColorContent%3D72b42d%26fcContent%3Dffffff%26iconColorContent%3D72b42d%26bgColorDefault%3D4ca20b%26bgTextureDefault%3D03_highlight_soft.png%26bgImgOpacityDefault%3D60%26borderColorDefault%3D45930b%26fcDefault%3Dffffff%26iconColorDefault%3Dffffff%26bgColorHover%3D4eb305%26bgTextureHover%3D03_highlight_soft.png%26bgImgOpacityHover%3D50%26borderColorHover%3D8bd83b%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3D285c00%26bgTextureActive%3D04_highlight_hard.png%26bgImgOpacityActive%3D30%26borderColorActive%3D72b42d%26fcActive%3Dffffff%26iconColorActive%3Dffffff%26bgColorHighlight%3Dfbf5d0%26bgTextureHighlight%3D02_glass.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Df9dd34%26fcHighlight%3D363636%26iconColorHighlight%3D4eb305%26bgColorError%3Dffdc2e%26bgTextureError%3D08_diagonals_thick.png%26bgImgOpacityError%3D95%26borderColorError%3Dfad000%26fcError%3D2b2b2b%26iconColorError%3Dcd0a0a%26bgColorOverlay%3D444444%26bgTextureOverlay%3D08_diagonals_thick.png%26bgImgOpacityOverlay%3D15%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D07_diagonals_small.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D30%26thicknessShadow%3D0px%26offsetTopShadow%3D4px%26offsetLeftShadow%3D4px%26cornerRadiusShadow%3D4px&scope=&t-name=le-frog&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DHelvetica%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D2px%26bgColorHeader%3Ddddddd%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D50%26borderColorHeader%3Ddddddd%26fcHeader%3D444444%26iconColorHeader%3D0073ea%26bgColorContent%3Dffffff%26bgTextureContent%3D01_flat.png%26bgImgOpacityContent%3D75%26borderColorContent%3Ddddddd%26fcContent%3D444444%26iconColorContent%3Dff0084%26bgColorDefault%3Df6f6f6%26bgTextureDefault%3D03_highlight_soft.png%26bgImgOpacityDefault%3D100%26borderColorDefault%3Ddddddd%26fcDefault%3D0073ea%26iconColorDefault%3D666666%26bgColorHover%3D0073ea%26bgTextureHover%3D03_highlight_soft.png%26bgImgOpacityHover%3D25%26borderColorHover%3D0073ea%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3Dffffff%26bgTextureActive%3D02_glass.png%26bgImgOpacityActive%3D65%26borderColorActive%3Ddddddd%26fcActive%3Dff0084%26iconColorActive%3D454545%26bgColorHighlight%3Dffffff%26bgTextureHighlight%3D01_flat.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dcccccc%26fcHighlight%3D444444%26iconColorHighlight%3D0073ea%26bgColorError%3Dffffff%26bgTextureError%3D01_flat.png%26bgImgOpacityError%3D55%26borderColorError%3Dff0084%26fcError%3D222222%26iconColorError%3Dff0084%26bgColorOverlay%3Deeeeee%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D80%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D60%26thicknessShadow%3D4px%26offsetTopShadow%3D-4px%26offsetLeftShadow%3D-4px%26cornerRadiusShadow%3D0px&scope=&t-name=flick&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DTrebuchet%2BMS%252C%2BTahoma%252C%2BVerdana%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3Dffffff%26bgTextureHeader%3D23_fine_grain.png%26bgImgOpacityHeader%3D15%26borderColorHeader%3Dd4d1bf%26fcHeader%3D453821%26iconColorHeader%3Db83400%26bgColorContent%3Deceadf%26bgTextureContent%3D23_fine_grain.png%26bgImgOpacityContent%3D10%26borderColorContent%3Dd9d6c4%26fcContent%3D1f1f1f%26iconColorContent%3D222222%26bgColorDefault%3Df8f7f6%26bgTextureDefault%3D23_fine_grain.png%26bgImgOpacityDefault%3D10%26borderColorDefault%3Dcbc7bd%26fcDefault%3D654b24%26iconColorDefault%3Db83400%26bgColorHover%3D654b24%26bgTextureHover%3D23_fine_grain.png%26bgImgOpacityHover%3D65%26borderColorHover%3D654b24%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3Deceadf%26bgTextureActive%3D23_fine_grain.png%26bgImgOpacityActive%3D15%26borderColorActive%3Dd9d6c4%26fcActive%3D140f06%26iconColorActive%3D8c291d%26bgColorHighlight%3Df7f3de%26bgTextureHighlight%3D23_fine_grain.png%26bgImgOpacityHighlight%3D15%26borderColorHighlight%3Db2a266%26fcHighlight%3D3a3427%26iconColorHighlight%3D3572ac%26bgColorError%3Db83400%26bgTextureError%3D23_fine_grain.png%26bgImgOpacityError%3D68%26borderColorError%3D681818%26fcError%3Dffffff%26iconColorError%3Dfbdb93%26bgColorOverlay%3D6e4f1c%26bgTextureOverlay%3D16_diagonal_maze.png%26bgImgOpacityOverlay%3D20%26opacityOverlay%3D60%26bgColorShadow%3D000000%26bgTextureShadow%3D16_diagonal_maze.png%26bgImgOpacityShadow%3D40%26opacityShadow%3D60%26thicknessShadow%3D5px%26offsetTopShadow%3D0%26offsetLeftShadow%3D-10px%26cornerRadiusShadow%3D18px&scope=&t-name=pepper-grinder&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DLucida%2BGrande%252C%2BLucida%2BSans%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3D30273a%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D25%26borderColorHeader%3D231d2b%26fcHeader%3Dffffff%26iconColorHeader%3Da8a3ae%26bgColorContent%3D3d3644%26bgTextureContent%3D12_gloss_wave.png%26bgImgOpacityContent%3D30%26borderColorContent%3D7e7783%26fcContent%3Dffffff%26iconColorContent%3Dffffff%26bgColorDefault%3Ddcd9de%26bgTextureDefault%3D03_highlight_soft.png%26bgImgOpacityDefault%3D100%26borderColorDefault%3Ddcd9de%26fcDefault%3D665874%26iconColorDefault%3D8d78a5%26bgColorHover%3Deae6ea%26bgTextureHover%3D03_highlight_soft.png%26bgImgOpacityHover%3D100%26borderColorHover%3Dd1c5d8%26fcHover%3D734d99%26iconColorHover%3D734d99%26bgColorActive%3D5f5964%26bgTextureActive%3D03_highlight_soft.png%26bgImgOpacityActive%3D45%26borderColorActive%3D7e7783%26fcActive%3Dffffff%26iconColorActive%3D454545%26bgColorHighlight%3Dfafafa%26bgTextureHighlight%3D01_flat.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dffdb1f%26fcHighlight%3D333333%26iconColorHighlight%3D8d78a5%26bgColorError%3D994d53%26bgTextureError%3D01_flat.png%26bgImgOpacityError%3D55%26borderColorError%3D994d53%26fcError%3Dffffff%26iconColorError%3Debccce%26bgColorOverlay%3Deeeeee%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D80%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D60%26thicknessShadow%3D4px%26offsetTopShadow%3D-4px%26offsetLeftShadow%3D-4px%26cornerRadiusShadow%3D0px&scope=&t-name=eggplant&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DVerdana%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3D444444%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D44%26borderColorHeader%3D333333%26fcHeader%3Dffffff%26iconColorHeader%3Dffffff%26bgColorContent%3D000000%26bgTextureContent%3D14_loop.png%26bgImgOpacityContent%3D25%26borderColorContent%3D555555%26fcContent%3Dffffff%26iconColorContent%3Dcccccc%26bgColorDefault%3D222222%26bgTextureDefault%3D03_highlight_soft.png%26bgImgOpacityDefault%3D35%26borderColorDefault%3D444444%26fcDefault%3Deeeeee%26iconColorDefault%3Dcccccc%26bgColorHover%3D003147%26bgTextureHover%3D03_highlight_soft.png%26bgImgOpacityHover%3D33%26borderColorHover%3D0b93d5%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3D0972a5%26bgTextureActive%3D04_highlight_hard.png%26bgImgOpacityActive%3D20%26borderColorActive%3D26b3f7%26fcActive%3Dffffff%26iconColorActive%3D222222%26bgColorHighlight%3Deeeeee%26bgTextureHighlight%3D03_highlight_soft.png%26bgImgOpacityHighlight%3D80%26borderColorHighlight%3Dcccccc%26fcHighlight%3D2e7db2%26iconColorHighlight%3D4b8e0b%26bgColorError%3Dffc73d%26bgTextureError%3D02_glass.png%26bgImgOpacityError%3D40%26borderColorError%3Dffb73d%26fcError%3D111111%26iconColorError%3Da83300%26bgColorOverlay%3D5c5c5c%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D50%26opacityOverlay%3D80%26bgColorShadow%3Dcccccc%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D30%26opacityShadow%3D60%26thicknessShadow%3D7px%26offsetTopShadow%3D-7px%26offsetLeftShadow%3D-7px%26cornerRadiusShadow%3D8px&scope=&t-name=dark-hive&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DLucida%2BGrande%252C%2BLucida%2BSans%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3Ddeedf7%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D100%26borderColorHeader%3Daed0ea%26fcHeader%3D222222%26iconColorHeader%3D72a7cf%26bgColorContent%3Df2f5f7%26bgTextureContent%3D04_highlight_hard.png%26bgImgOpacityContent%3D100%26borderColorContent%3Ddddddd%26fcContent%3D362b36%26iconColorContent%3D72a7cf%26bgColorDefault%3Dd7ebf9%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D80%26borderColorDefault%3Daed0ea%26fcDefault%3D2779aa%26iconColorDefault%3D3d80b3%26bgColorHover%3De4f1fb%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D100%26borderColorHover%3D74b2e2%26fcHover%3D0070a3%26iconColorHover%3D2694e8%26bgColorActive%3D3baae3%26bgTextureActive%3D02_glass.png%26bgImgOpacityActive%3D50%26borderColorActive%3D2694e8%26fcActive%3Dffffff%26iconColorActive%3Dffffff%26bgColorHighlight%3Dffef8f%26bgTextureHighlight%3D03_highlight_soft.png%26bgImgOpacityHighlight%3D25%26borderColorHighlight%3Df9dd34%26fcHighlight%3D363636%26iconColorHighlight%3D2e83ff%26bgColorError%3Dcd0a0a%26bgTextureError%3D01_flat.png%26bgImgOpacityError%3D15%26borderColorError%3Dcd0a0a%26fcError%3Dffffff%26iconColorError%3Dffffff%26bgColorOverlay%3Deeeeee%26bgTextureOverlay%3D08_diagonals_thick.png%26bgImgOpacityOverlay%3D90%26opacityOverlay%3D80%26bgColorShadow%3D000000%26bgTextureShadow%3D04_highlight_hard.png%26bgImgOpacityShadow%3D70%26opacityShadow%3D30%26thicknessShadow%3D7px%26offsetTopShadow%3D-7px%26offsetLeftShadow%3D-7px%26cornerRadiusShadow%3D8px&scope=&t-name=cupertino&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3Dsegoe%2Bui%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3Dece8da%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D100%26borderColorHeader%3Dd4ccb0%26fcHeader%3D433f38%26iconColorHeader%3D847e71%26bgColorContent%3Df5f3e5%26bgTextureContent%3D04_highlight_hard.png%26bgImgOpacityContent%3D100%26borderColorContent%3Ddfd9c3%26fcContent%3D312e25%26iconColorContent%3D808080%26bgColorDefault%3D459e00%26bgTextureDefault%3D04_highlight_hard.png%26bgImgOpacityDefault%3D15%26borderColorDefault%3D327E04%26fcDefault%3Dffffff%26iconColorDefault%3Deeeeee%26bgColorHover%3D67b021%26bgTextureHover%3D03_highlight_soft.png%26bgImgOpacityHover%3D25%26borderColorHover%3D327E04%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3Dfafaf4%26bgTextureActive%3D04_highlight_hard.png%26bgImgOpacityActive%3D100%26borderColorActive%3Dd4ccb0%26fcActive%3D459e00%26iconColorActive%3D8DC262%26bgColorHighlight%3Dfcf0ba%26bgTextureHighlight%3D02_glass.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3De8e1b5%26fcHighlight%3D363636%26iconColorHighlight%3D8DC262%26bgColorError%3Dffedad%26bgTextureError%3D03_highlight_soft.png%26bgImgOpacityError%3D95%26borderColorError%3De3a345%26fcError%3Dcd5c0a%26iconColorError%3Dcd0a0a%26bgColorOverlay%3D2b2922%26bgTextureOverlay%3D05_inset_soft.png%26bgImgOpacityOverlay%3D15%26opacityOverlay%3D90%26bgColorShadow%3Dcccccc%26bgTextureShadow%3D04_highlight_hard.png%26bgImgOpacityShadow%3D95%26opacityShadow%3D20%26thicknessShadow%3D12px%26offsetTopShadow%3D-12px%26offsetLeftShadow%3D-12px%26cornerRadiusShadow%3D10px&scope=&t-name=south-street&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DArial%2Csans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3Dcc0000%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D15%26borderColorHeader%3De3a1a1%26fcHeader%3Dffffff%26iconColorHeader%3Dffffff%26bgColorContent%3Dffffff%26bgTextureContent%3D01_flat.png%26bgImgOpacityContent%3D75%26borderColorContent%3Deeeeee%26fcContent%3D333333%26iconColorContent%3Dcc0000%26bgColorDefault%3Deeeeee%26bgTextureDefault%3D04_highlight_hard.png%26bgImgOpacityDefault%3D100%26borderColorDefault%3Dd8dcdf%26fcDefault%3D004276%26iconColorDefault%3Dcc0000%26bgColorHover%3Df6f6f6%26bgTextureHover%3D04_highlight_hard.png%26bgImgOpacityHover%3D100%26borderColorHover%3Dcdd5da%26fcHover%3D111111%26iconColorHover%3Dcc0000%26bgColorActive%3Dffffff%26bgTextureActive%3D01_flat.png%26bgImgOpacityActive%3D65%26borderColorActive%3Deeeeee%26fcActive%3Dcc0000%26iconColorActive%3Dcc0000%26bgColorHighlight%3Dfbf8ee%26bgTextureHighlight%3D02_glass.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dfcd3a1%26fcHighlight%3D444444%26iconColorHighlight%3D004276%26bgColorError%3Df3d8d8%26bgTextureError%3D08_diagonals_thick.png%26bgImgOpacityError%3D75%26borderColorError%3Dcc0000%26fcError%3D2e2e2e%26iconColorError%3Dcc0000%26bgColorOverlay%3Da6a6a6%26bgTextureOverlay%3D09_dots_small.png%26bgImgOpacityOverlay%3D65%26opacityOverlay%3D40%26bgColorShadow%3D333333%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D10%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=blitzer&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3Ftr%3DffDefault%3DHelvetica%2CArial%2Csans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3Dcb842e%26bgTextureHeader%3D02_glass.png%26bgImgOpacityHeader%3D25%26borderColorHeader%3Dd49768%26fcHeader%3Dffffff%26iconColorHeader%3Dffffff%26bgColorContent%3Df4f0ec%26bgTextureContent%3D05_inset_soft.png%26bgImgOpacityContent%3D100%26borderColorContent%3De0cfc2%26fcContent%3D1e1b1d%26iconColorContent%3Dc47a23%26bgColorDefault%3Dede4d4%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D70%26borderColorDefault%3Dcdc3b7%26fcDefault%3D3f3731%26iconColorDefault%3Df08000%26bgColorHover%3Df5f0e5%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D100%26borderColorHover%3Df5ad66%26fcHover%3Da46313%26iconColorHover%3Df08000%26bgColorActive%3Df4f0ec%26bgTextureActive%3D04_highlight_hard.png%26bgImgOpacityActive%3D100%26borderColorActive%3De0cfc2%26fcActive%3Db85700%26iconColorActive%3Df35f07%26bgColorHighlight%3Df5f5b5%26bgTextureHighlight%3D04_highlight_hard.png%26bgImgOpacityHighlight%3D75%26borderColorHighlight%3Dd9bb73%26fcHighlight%3D060200%26iconColorHighlight%3Dcb672b%26bgColorError%3Dfee4bd%26bgTextureError%3D04_highlight_hard.png%26bgImgOpacityError%3D65%26borderColorError%3Df8893f%26fcError%3D592003%26iconColorError%3Dff7519%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D75%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D75%26opacityShadow%3D30%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=humanity&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DGill%2BSans%2CArial%2Csans-serif%26fwDefault%3Dbold%26fsDefault%3D1.2em%26cornerRadius%3D4px%26bgColorHeader%3D35414f%26bgTextureHeader%3D09_dots_small.png%26bgImgOpacityHeader%3D35%26borderColorHeader%3D2c4359%26fcHeader%3De1e463%26iconColorHeader%3De1e463%26bgColorContent%3Dffffff%26bgTextureContent%3D01_flat.png%26bgImgOpacityContent%3D75%26borderColorContent%3Daaaaaa%26fcContent%3D2c4359%26iconColorContent%3Dc02669%26bgColorDefault%3D93c3cd%26bgTextureDefault%3D07_diagonals_small.png%26bgImgOpacityDefault%3D50%26borderColorDefault%3D93c3cd%26fcDefault%3D333333%26iconColorDefault%3Dffffff%26bgColorHover%3Dccd232%26bgTextureHover%3D07_diagonals_small.png%26bgImgOpacityHover%3D75%26borderColorHover%3D999999%26fcHover%3D212121%26iconColorHover%3D454545%26bgColorActive%3Ddb4865%26bgTextureActive%3D07_diagonals_small.png%26bgImgOpacityActive%3D40%26borderColorActive%3Dff6b7f%26fcActive%3Dffffff%26iconColorActive%3Dffffff%26bgColorHighlight%3Dffff38%26bgTextureHighlight%3D10_dots_medium.png%26bgImgOpacityHighlight%3D80%26borderColorHighlight%3Db4d100%26fcHighlight%3D363636%26iconColorHighlight%3D88a206%26bgColorError%3Dff3853%26bgTextureError%3D07_diagonals_small.png%26bgImgOpacityError%3D50%26borderColorError%3Dff6b7f%26fcError%3Dffffff%26iconColorError%3Dffeb33%26bgColorOverlay%3Df7f7ba%26bgTextureOverlay%3D11_white_lines.png%26bgImgOpacityOverlay%3D85%26opacityOverlay%3D80%26bgColorShadow%3Dba9217%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D75%26opacityShadow%3D20%26thicknessShadow%3D10px%26offsetTopShadow%3D8px%26offsetLeftShadow%3D8px%26cornerRadiusShadow%3D5px&scope=&t-name=hot-sneaks&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3Dsegoe%2Bui%2C%2BArial%2C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D3px%26bgColorHeader%3Df9f9f9%26bgTextureHeader%3D03_highlight_soft.png%26bgImgOpacityHeader%3D100%26borderColorHeader%3Dcccccc%26fcHeader%3De69700%26iconColorHeader%3D5fa5e3%26bgColorContent%3Deeeeee%26bgTextureContent%3D06_inset_hard.png%26bgImgOpacityContent%3D100%26borderColorContent%3Daaaaaa%26fcContent%3D222222%26iconColorContent%3D0a82eb%26bgColorDefault%3D1484e6%26bgTextureDefault%3D08_diagonals_thick.png%26bgImgOpacityDefault%3D22%26borderColorDefault%3Dffffff%26fcDefault%3Dffffff%26iconColorDefault%3Dfcdd4a%26bgColorHover%3D2293f7%26bgTextureHover%3D08_diagonals_thick.png%26bgImgOpacityHover%3D26%26borderColorHover%3D2293f7%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3De69700%26bgTextureActive%3D08_diagonals_thick.png%26bgImgOpacityActive%3D20%26borderColorActive%3De69700%26fcActive%3Dffffff%26iconColorActive%3Dffffff%26bgColorHighlight%3Dc5ddfc%26bgTextureHighlight%3D07_diagonals_small.png%26bgImgOpacityHighlight%3D25%26borderColorHighlight%3Dffffff%26fcHighlight%3D333333%26iconColorHighlight%3D0b54d5%26bgColorError%3De69700%26bgTextureError%3D08_diagonals_thick.png%26bgImgOpacityError%3D20%26borderColorError%3De69700%26fcError%3Dffffff%26iconColorError%3Dffffff%26bgColorOverlay%3De6b900%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D30%26bgColorShadow%3De69700%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D20%26thicknessShadow%3D0px%26offsetTopShadow%3D6px%26offsetLeftShadow%3D6px%26cornerRadiusShadow%3D3px&scope=&t-name=excite-bike&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3Ftr%26ffDefault%3DHelvetica%2C%2BArial%2C%2Bsans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1%26fsDefaultUnit%3Dem%26cornerRadius%3D5%26cornerRadiusUnit%3Dpx%26bgColorHeader%3D888888%26bgTextureHeader%3D04_highlight_hard.png%26bgImgOpacityHeader%3D15%26borderColorHeader%3D404040%26fcHeader%3Dffffff%26iconColorHeader%3Dcccccc%26bgColorContent%3D121212%26bgTextureContent%3D12_gloss_wave.png%26bgImgOpacityContent%3D16%26borderColorContent%3D404040%26fcContent%3Deeeeee%26iconColorContent%3Dbbbbbb%26bgColorDefault%3Dadadad%26bgTextureDefault%3D03_highlight_soft.png%26bgImgOpacityDefault%3D35%26borderColorDefault%3Dcccccc%26fcDefault%3D333333%26iconColorDefault%3D666666%26bgColorHover%3Ddddddd%26bgTextureHover%3D03_highlight_soft.png%26bgImgOpacityHover%3D60%26borderColorHover%3Ddddddd%26fcHover%3D000000%26iconColorHover%3Dc98000%26bgColorActive%3D121212%26bgTextureActive%3D05_inset_soft.png%26bgImgOpacityActive%3D15%26borderColorActive%3D000000%26fcActive%3Dffffff%26iconColorActive%3Df29a00%26bgColorHighlight%3D555555%26bgTextureHighlight%3D04_highlight_hard.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3D404040%26fcHighlight%3Dcccccc%26iconColorHighlight%3Daaaaaa%26bgColorError%3Dfef1ec%26bgTextureError%3D02_glass.png%26bgImgOpacityError%3D95%26borderColorError%3Dcd0a0a%26fcError%3Dcd0a0a%26iconColorError%3Dcd0a0a&scope=&t-name=vader&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DArial%2C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.3em%26cornerRadius%3D4px%26bgColorHeader%3D0b3e6f%26bgTextureHeader%3D08_diagonals_thick.png%26bgImgOpacityHeader%3D15%26borderColorHeader%3D0b3e6f%26fcHeader%3Df6f6f6%26iconColorHeader%3D98d2fb%26bgColorContent%3D111111%26bgTextureContent%3D12_gloss_wave.png%26bgImgOpacityContent%3D20%26borderColorContent%3D000000%26fcContent%3Dd9d9d9%26iconColorContent%3D9ccdfc%26bgColorDefault%3D333333%26bgTextureDefault%3D09_dots_small.png%26bgImgOpacityDefault%3D20%26borderColorDefault%3D333333%26fcDefault%3Dffffff%26iconColorDefault%3D9ccdfc%26bgColorHover%3D00498f%26bgTextureHover%3D09_dots_small.png%26bgImgOpacityHover%3D40%26borderColorHover%3D222222%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3D292929%26bgTextureActive%3D01_flat.png%26bgImgOpacityActive%3D40%26borderColorActive%3D096ac8%26fcActive%3D75abff%26iconColorActive%3D00498f%26bgColorHighlight%3D0b58a2%26bgTextureHighlight%3D10_dots_medium.png%26bgImgOpacityHighlight%3D30%26borderColorHighlight%3D052f57%26fcHighlight%3Dffffff%26iconColorHighlight%3Dffffff%26bgColorError%3Da32d00%26bgTextureError%3D09_dots_small.png%26bgImgOpacityError%3D30%26borderColorError%3Dcd0a0a%26fcError%3Dffffff%26iconColorError%3Dffffff%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D30%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=dot-luv&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DSegoe%2BUI%252C%2BHelvetica%252C%2BArial%252C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D4px%26bgColorHeader%3D453326%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D25%26borderColorHeader%3D695649%26fcHeader%3De3ddc9%26iconColorHeader%3De3ddc9%26bgColorContent%3D201913%26bgTextureContent%3D05_inset_soft.png%26bgImgOpacityContent%3D10%26borderColorContent%3D9c947c%26fcContent%3Dffffff%26iconColorContent%3D222222%26bgColorDefault%3D1c160d%26bgTextureDefault%3D12_gloss_wave.png%26bgImgOpacityDefault%3D20%26borderColorDefault%3D695444%26fcDefault%3D9bcc60%26iconColorDefault%3D9bcc60%26bgColorHover%3D44372c%26bgTextureHover%3D12_gloss_wave.png%26bgImgOpacityHover%3D30%26borderColorHover%3D9c947c%26fcHover%3Dbaec7e%26iconColorHover%3Dadd978%26bgColorActive%3D201913%26bgTextureActive%3D03_highlight_soft.png%26bgImgOpacityActive%3D20%26borderColorActive%3D9c947c%26fcActive%3De3ddc9%26iconColorActive%3De3ddc9%26bgColorHighlight%3D619226%26bgTextureHighlight%3D03_highlight_soft.png%26bgImgOpacityHighlight%3D20%26borderColorHighlight%3Dadd978%26fcHighlight%3Dffffff%26iconColorHighlight%3Dffffff%26bgColorError%3D5f391b%26bgTextureError%3D02_glass.png%26bgImgOpacityError%3D15%26borderColorError%3D5f391b%26fcError%3Dffffff%26iconColorError%3Df1fd86%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D01_flat.png%26bgImgOpacityOverlay%3D0%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D30%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=mint-choc&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DVerdana%2C%2BArial%2C%2Bsans-serif%26fwDefault%3Dnormal%26fsDefault%3D1.1em%26cornerRadius%3D4px%26bgColorHeader%3D333333%26bgTextureHeader%3D08_diagonals_thick.png%26bgImgOpacityHeader%3D8%26borderColorHeader%3Da3a3a3%26fcHeader%3Deeeeee%26iconColorHeader%3Dbbbbbb%26bgColorContent%3Df9f9f9%26bgTextureContent%3D04_highlight_hard.png%26bgImgOpacityContent%3D100%26borderColorContent%3Dcccccc%26fcContent%3D222222%26iconColorContent%3D222222%26bgColorDefault%3D111111%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D40%26borderColorDefault%3D777777%26fcDefault%3De3e3e3%26iconColorDefault%3Dededed%26bgColorHover%3D1c1c1c%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D55%26borderColorHover%3D000000%26fcHover%3Dffffff%26iconColorHover%3Dffffff%26bgColorActive%3Dffffff%26bgTextureActive%3D01_flat.png%26bgImgOpacityActive%3D65%26borderColorActive%3Dcccccc%26fcActive%3D222222%26iconColorActive%3D222222%26bgColorHighlight%3Dffeb80%26bgTextureHighlight%3D06_inset_hard.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3Dffde2e%26fcHighlight%3D363636%26iconColorHighlight%3D4ca300%26bgColorError%3Dcd0a0a%26bgTextureError%3D06_inset_hard.png%26bgImgOpacityError%3D45%26borderColorError%3D9e0505%26fcError%3Dffffff%26iconColorError%3Dffcf29%26bgColorOverlay%3Daaaaaa%26bgTextureOverlay%3D04_highlight_hard.png%26bgImgOpacityOverlay%3D40%26opacityOverlay%3D30%26bgColorShadow%3Daaaaaa%26bgTextureShadow%3D03_highlight_soft.png%26bgImgOpacityShadow%3D50%26opacityShadow%3D20%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D8px&scope=&t-name=black-tie&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DSegoe%2BUI%2C%2BHelvetica%2C%2BArial%2C%2Bsans-serif%26fwDefault%3Dbold%26fsDefault%3D1.1em%26cornerRadius%3D6px%26bgColorHeader%3D9fda58%26bgTextureHeader%3D12_gloss_wave.png%26bgImgOpacityHeader%3D85%26borderColorHeader%3D000000%26fcHeader%3D222222%26iconColorHeader%3D1f1f1f%26bgColorContent%3D000000%26bgTextureContent%3D12_gloss_wave.png%26bgImgOpacityContent%3D55%26borderColorContent%3D4a4a4a%26fcContent%3Dffffff%26iconColorContent%3D9fda58%26bgColorDefault%3D0a0a0a%26bgTextureDefault%3D02_glass.png%26bgImgOpacityDefault%3D40%26borderColorDefault%3D1b1613%26fcDefault%3Db8ec79%26iconColorDefault%3Db8ec79%26bgColorHover%3D000000%26bgTextureHover%3D02_glass.png%26bgImgOpacityHover%3D60%26borderColorHover%3D000000%26fcHover%3D96f226%26iconColorHover%3Db8ec79%26bgColorActive%3D4c4c4c%26bgTextureActive%3D01_flat.png%26bgImgOpacityActive%3D0%26borderColorActive%3D696969%26fcActive%3Dffffff%26iconColorActive%3Dffffff%26bgColorHighlight%3Df1fbe5%26bgTextureHighlight%3D02_glass.png%26bgImgOpacityHighlight%3D55%26borderColorHighlight%3D8cce3b%26fcHighlight%3D030303%26iconColorHighlight%3D000000%26bgColorError%3Df6ecd5%26bgTextureError%3D12_gloss_wave.png%26bgImgOpacityError%3D95%26borderColorError%3Df1ac88%26fcError%3D74736d%26iconColorError%3Dcd0a0a%26bgColorOverlay%3D262626%26bgTextureOverlay%3D07_diagonals_small.png%26bgImgOpacityOverlay%3D50%26opacityOverlay%3D30%26bgColorShadow%3D303030%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D0%26opacityShadow%3D50%26thicknessShadow%3D6px%26offsetTopShadow%3D-6px%26offsetLeftShadow%3D-6px%26cornerRadiusShadow%3D12px&scope=&t-name=trontastic&ui-version=1.8.2,download=true&files%5B%5D=ui.core.js&files%5B%5D=ui.widget.js&files%5B%5D=ui.mouse.js&files%5B%5D=ui.position.js&files%5B%5D=ui.draggable.js&files%5B%5D=ui.droppable.js&files%5B%5D=ui.resizable.js&files%5B%5D=ui.selectable.js&files%5B%5D=ui.sortable.js&files%5B%5D=ui.accordion.js&files%5B%5D=ui.autocomplete.js&files%5B%5D=ui.button.js&files%5B%5D=ui.dialog.js&files%5B%5D=ui.slider.js&files%5B%5D=ui.tabs.js&files%5B%5D=ui.datepicker.js&files%5B%5D=ui.progressbar.js&files%5B%5D=effects.core.js&files%5B%5D=effects.blind.js&files%5B%5D=effects.bounce.js&files%5B%5D=effects.clip.js&files%5B%5D=effects.drop.js&files%5B%5D=effects.explode.js&files%5B%5D=effects.fold.js&files%5B%5D=effects.highlight.js&files%5B%5D=effects.pulsate.js&files%5B%5D=effects.scale.js&files%5B%5D=effects.shake.js&files%5B%5D=effects.slide.js&files%5B%5D=effects.transfer.js&theme=%3FffDefault%3DGeorgia%252C%2BVerdana%252CArial%252Csans-serif%26fwDefault%3Dbold%26fsDefault%3D1.2em%26cornerRadius%3D5px%26bgColorHeader%3D261803%26bgTextureHeader%3D13_diamond.png%26bgImgOpacityHeader%3D8%26borderColorHeader%3Dbaaa5a%26fcHeader%3Deacd86%26iconColorHeader%3De9cd86%26bgColorContent%3D443113%26bgTextureContent%3D13_diamond.png%26bgImgOpacityContent%3D8%26borderColorContent%3Defec9f%26fcContent%3Defec9f%26iconColorContent%3Defec9f%26bgColorDefault%3D4f4221%26bgTextureDefault%3D13_diamond.png%26bgImgOpacityDefault%3D10%26borderColorDefault%3D362917%26fcDefault%3Df8eec9%26iconColorDefault%3De8e2b5%26bgColorHover%3D675423%26bgTextureHover%3D13_diamond.png%26bgImgOpacityHover%3D25%26borderColorHover%3D362917%26fcHover%3Df8eec9%26iconColorHover%3Df2ec64%26bgColorActive%3D443113%26bgTextureActive%3D13_diamond.png%26bgImgOpacityActive%3D8%26borderColorActive%3Defec9f%26fcActive%3Df9f2bd%26iconColorActive%3Df9f2bd%26bgColorHighlight%3Dd5ac5d%26bgTextureHighlight%3D13_diamond.png%26bgImgOpacityHighlight%3D25%26borderColorHighlight%3D362917%26fcHighlight%3D060200%26iconColorHighlight%3D070603%26bgColorError%3Dfee4bd%26bgTextureError%3D04_highlight_hard.png%26bgImgOpacityError%3D65%26borderColorError%3Dc26629%26fcError%3D803f1e%26iconColorError%3Dff7519%26bgColorOverlay%3D372806%26bgTextureOverlay%3D13_diamond.png%26bgImgOpacityOverlay%3D20%26opacityOverlay%3D80%26bgColorShadow%3Dddd4b0%26bgTextureShadow%3D01_flat.png%26bgImgOpacityShadow%3D75%26opacityShadow%3D30%26thicknessShadow%3D8px%26offsetTopShadow%3D-8px%26offsetLeftShadow%3D-8px%26cornerRadiusShadow%3D12px&scope=&t-name=swanky-purse&ui-version=1.8.2jquery-ui-1.12.1/demos/000077500000000000000000000000001276627555100146555ustar00rootroot00000000000000jquery-ui-1.12.1/demos/accordion/000077500000000000000000000000001276627555100166165ustar00rootroot00000000000000jquery-ui-1.12.1/demos/accordion/collapsible.html000066400000000000000000000043531276627555100220020ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/accordion/custom-icons.html000066400000000000000000000052251276627555100221330ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/accordion/default.html000066400000000000000000000045211276627555100211320ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/accordion/fillspace.html000066400000000000000000000054101276627555100214460ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/accordion/index.html000066400000000000000000000010471276627555100206150ustar00rootroot00000000000000 jQuery UI Accordion Demos jquery-ui-1.12.1/demos/accordion/no-auto-height.html000066400000000000000000000032001276627555100223270ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/accordion/sortable.html000066400000000000000000000050721276627555100213230ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/000077500000000000000000000000001276627555100173565ustar00rootroot00000000000000jquery-ui-1.12.1/demos/autocomplete/categories.html000066400000000000000000000035571276627555100224030ustar00rootroot00000000000000 jQuery UI Autocomplete - Categories

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

jquery-ui-1.12.1/demos/autocomplete/combobox.html000066400000000000000000000133661276627555100220650ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/custom-data.html000066400000000000000000000042621276627555100224710ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/default.html000066400000000000000000000022761276627555100216770ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/folding.html000066400000000000000000000031411276627555100216650ustar00rootroot00000000000000 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".

jquery-ui-1.12.1/demos/autocomplete/images/000077500000000000000000000000001276627555100206235ustar00rootroot00000000000000jquery-ui-1.12.1/demos/autocomplete/images/jquery_32x32.png000066400000000000000000000024631276627555100235160ustar00rootroot00000000000000PNG  IHDR IDATx\_vVcr۶m;Yol۶ܝU5u٧f6FZ{t߻Ρr'kM> 詷$w6,Ϭ56p+Q3U-1<#WLAkn1ŝ1>08q}%aurQ*BcQ{Ӻ@ 0L7vbXؕ^qD*pVo 'W{R+}5x ?vUiTaL\2XL{¸``,?mtI(&Y"3l@S~C I+wK6BDaɩJi0 <'b@ +=oyLe˶k*g 2,}+cP+3Ǭ O|BٗZzp`;BD mK/<(fwmIpS֚ }:B kOڞqK5 BF,69mNbEP lk~[y/avǭƵgxܤ:K~ @&|TΘ6آ !Z`rXG Y01f;*}W</Hg+IENDB`jquery-ui-1.12.1/demos/autocomplete/images/jqueryui_32x32.png000066400000000000000000000021761276627555100240550ustar00rootroot00000000000000PNG  IHDR EIDATxŖ#YƳLF|m۶m۶gm۶m6K^x^KlAȊƉW'jva ש}/q&^ufPQ2@Qh%qK5j1d~p.H%Wn@ݖaH:v$j iZr;8n^2 ;M9ob"]v=V Ƭ܏',rOvUpf T`JCe#fwDM,ã|]H02õDɍ$;ɀΪX>δ!bvj_Ki |~ūQKFĺ&`B a"l݌7S;dy,hԱPbUcڍǣÍ P7j[v EQ7k@ʅ=ahZ3X;bbS,N6% -ʲ7c K ĬAJ$6;ڶ?- ;5ahj$3 ͊ЦU6ZIJ, %h x#yxhYp;Tx5oS vw$kGD-^RKщ4Fͩ7ja{h}9.e+o [|UPN:Jk&,ر#>'N cܪ /izN^s"S̆fR%|G1\벲w&]i_NdY:g1ɛxZ쌈 ح7O#ug=Hw_\Zkv.=;k7O4Բ7xƺ8H0 cSI(jhAkRԽnIW*VVVbJ1i 0QC̭*[zLe{K]R$zU#vrZ('E$^țyx9W,GB F ?$N2$N CTT?˖W< \?=ŋ<|omLAnIENDB`jquery-ui-1.12.1/demos/autocomplete/images/transparent_1x1.png000066400000000000000000000001041276627555100243560ustar00rootroot00000000000000PNG  IHDR  IDATxc(IENDB`jquery-ui-1.12.1/demos/autocomplete/images/ui-anim_basic_16x16.gif000066400000000000000000000026631276627555100246660ustar00rootroot00000000000000GIF89a333wwwUUUfffDDD"""! NETSCAPE2.0!,@pɷ(:uJz"L,sCJ "SP4 G -$Rd ד)LXwVrP5 g*"a :1 o!Y3 !,] N&DI8CS4DPp/`EI`0[#0XG@@7I0OH,( Uc%sL sj#!,ZX"ZB&9-TE%HŠ= ! R..0| V}  (ŀ 9S"!,])Ҭu>Z 2@2H 2,La &xn @ !h]jÁ²Dve0M['~!,FɉXY !(EIUVlXWF0 /fddQ1|/ &!,lح21d)׌ـ @( ^`4 OXLCA # FLp`(L (@^)B!(U;B@HgPQ $m~!,_ƠXBA&Ò|#JI2 fq ``g` #J  !j DWd@4 DA"OptG∭c!,Zɱ5-Aq 0  RhƘsh05MPKJl4 QP0 E6p A2Qg aksHF!,`֢X5WqG.ʐm0HJbXb ș`ZPMQ @XIIUɏXi$ jQuery UI Autocomplete Demos jquery-ui-1.12.1/demos/autocomplete/london.xml000066400000000000000000000045751276627555100214040ustar00rootroot00000000000000 6987 London 51.5084152563931 -0.125532746315002 2643743 GB United Kingdom P PPLC London 42.983389283 -81.233042387 6058560 CA Canada P PPL East London -33.0152850934643 27.9116249084473 1006984 ZA South Africa P PPL City 51.5133363996235 -0.0890064239501953 2643744 GB United Kingdom A ADM2 London 37.1289771 -84.0832646 4298960 US United States P PPL The Tower of London 51.5082349601834 -0.0763034820556641 6286786 GB United Kingdom S CSTL London Reefs 8.85 112.5333333 1879967 U RFSU Greater London 51.5 -0.1666667 2648110 GB United Kingdom A ADM2 London 46.1666667 6.0166667 2661811 CH Switzerland H STM London Borough of Islington 51.5333333 -0.1333333 3333156 GB United Kingdom A ADM2 jquery-ui-1.12.1/demos/autocomplete/maxheight.html000066400000000000000000000026771276627555100222360ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/multiple-remote.html000066400000000000000000000041131276627555100233670ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/multiple.html000066400000000000000000000043421276627555100221020ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/remote-jsonp.html000066400000000000000000000033211276627555100226650ustar00rootroot00000000000000 jQuery UI Autocomplete - Remote JSONP 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 JSONP data, specified via a function which uses jQuery.ajax() for the source option.

jquery-ui-1.12.1/demos/autocomplete/remote-with-cache.html000066400000000000000000000026461276627555100235610ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/remote.html000066400000000000000000000031441276627555100215410ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/autocomplete/search.php000066400000000000000000000561651276627555100213510ustar00rootroot00000000000000"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", "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 $output = json_encode($result); if ($_GET["callback"]) { $output = $_GET["callback"] . "($output);"; } echo $output; ?> jquery-ui-1.12.1/demos/autocomplete/xml.html000066400000000000000000000036331276627555100210510ustar00rootroot00000000000000 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.

jquery-ui-1.12.1/demos/bootstrap.js000066400000000000000000000053151276627555100172340ustar00rootroot00000000000000/* globals window, document */ ( function() { // Find the script element var scripts = document.getElementsByTagName( "script" ); var script = scripts[ scripts.length - 1 ]; // Read the modules var modules = script.getAttribute( "data-modules" ); var composite = script.getAttribute( "data-composite" ) || false; var pathParts = window.location.pathname.split( "/" ); var effectsAll = [ "effects/effect-blind", "effects/effect-bounce", "effects/effect-clip", "effects/effect-drop", "effects/effect-explode", "effects/effect-fade", "effects/effect-fold", "effects/effect-highlight", "effects/effect-puff", "effects/effect-pulsate", "effects/effect-scale", "effects/effect-shake", "effects/effect-size", "effects/effect-slide", "effects/effect-transfer" ]; var widgets = [ "accordion", "autocomplete", "button", "checkboxradio", "controlgroup", "datepicker", "dialog", "draggable", "droppable", "menu", "mouse", "progressbar", "resizable", "selectable", "selectmenu", "slider", "sortable", "spinner", "tabs", "tooltip" ]; function getPath( module ) { for ( var i = 0; i < widgets.length; i++ ) { if ( widgets[ i ] === module ) { return "widgets/" + module; } } for ( var j = 0; j < effectsAll.length; j++ ) { if ( module !== "effect" ) { if ( effectsAll[ j ] === module ) { return module; } if ( effectsAll[ j ].indexOf( module ) !== -1 ) { return "effects/" + module; } } } return module; } function fixPaths( modules ) { for ( var i = 0; i < modules.length; i++ ) { modules[ i ] = getPath( modules[ i ] ); } return modules; } // Hide the page while things are loading to prevent a FOUC document.documentElement.className = "demo-loading"; require.config( { baseUrl: window.location.pathname.indexOf( "demos/" ) !== -1 ? "../../ui" : "../../../ui", paths: { jquery: "../external/jquery/jquery", external: "../external/" }, shim: { "external/globalize/globalize.culture.de-DE": [ "external/globalize/globalize" ], "external/globalize/globalize.culture.ja-JP": [ "external/globalize/globalize" ] } } ); // Replace effects all shortcut modules with all the effects modules if ( modules && modules.indexOf( "effects-all" ) !== -1 ) { modules = modules.replace( /effects-all/, effectsAll.join( " " ) ); } modules = modules ? modules.replace( /^\s+|\s+$/g, "" ).split( /\s+/ ) : []; if ( !composite ) { modules.push( pathParts[ pathParts.length - 2 ] ); } modules = fixPaths( modules ); require( modules, function() { var newScript = document.createElement( "script" ); document.documentElement.className = ""; newScript.text = "( function() { " + script.innerHTML + " } )();"; document.body.appendChild( newScript ).parentNode.removeChild( newScript ); } ); } )(); jquery-ui-1.12.1/demos/button/000077500000000000000000000000001276627555100161705ustar00rootroot00000000000000jquery-ui-1.12.1/demos/button/default.html000066400000000000000000000025121276627555100205020ustar00rootroot00000000000000 jQuery UI Button - Default functionality

Widget Buttons

An anchor

CSS Buttons

An anchor

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

Buttons can be styled via the button widget or by adding the classes yourself. This avoids the JavaScript overhead if you don't need any of the methods provided by the button widget.

jquery-ui-1.12.1/demos/button/icons.html000066400000000000000000000041571276627555100202000ustar00rootroot00000000000000 jQuery UI Button - Icons

Widget

CSS

Some buttons with various combinations of text and icons.

jquery-ui-1.12.1/demos/button/index.html000066400000000000000000000004751276627555100201730ustar00rootroot00000000000000 jQuery UI Button Demos jquery-ui-1.12.1/demos/checkboxradio/000077500000000000000000000000001276627555100174625ustar00rootroot00000000000000jquery-ui-1.12.1/demos/checkboxradio/default.html000066400000000000000000000037561276627555100220070ustar00rootroot00000000000000 jQuery UI Checkboxradio - Default functionality

Checkbox and radio button widgets

Radio Group

Select a Location:

Checkbox

Hotel Ratings:

Checkbox nested in label

Bed Type:

Examples of the markup that can be used with checkboxes and radio buttons.

jquery-ui-1.12.1/demos/checkboxradio/images/000077500000000000000000000000001276627555100207275ustar00rootroot00000000000000jquery-ui-1.12.1/demos/checkboxradio/images/jquery-mobile.png000066400000000000000000000077021276627555100242270ustar00rootroot00000000000000PNG  IHDRB\8IDATxp纇v23SuNSfnIffaN@œ8 <3HW]3:|ZҊ煅84 /OlO3n1G a2Vb' 'QP(>ʥXTF{́Vyԁ c1L[Qa=*]+P4NQ0il@F=,_MPڪ1K50i&[C svC p<.Jx lTFMH;a~TH zJB[W%hd`+LEB F68 44xoo־;1㩜=-܊ XgqHp86#a>G؂Dqp%ZqD)E MP jh'0S1q oZ\bqVCӟ GK*#ӃѨ|8u-$VCn2h;ڐNЏpFBWmTՎ 0zB~ԅ@=_O? zy0th[K J1 ښCbN=QzN#^A?{;-$Xc֤hG8;&?C  IP 1(MBC8 3up$f"űQ'$XQ0~:g{ ,Mpĥi1$#TuB&v"^C!1 ͨK{0~yx*S`42Nũ' I8BbؠRΆSOB8wCbXˁ(8f8^Sgpp Mu!@zT$)NǹvGR8uĦ~FiP+8NNhjq;at?Si8$A"؃r.oy P/jOPiy4hm42OmNۣ7cG 2Nx5IUSA#^K 6XyI q2Q!\jajs4$G)aĢ]2!A(GXPr!Q T 8U]1_BlY8 !*jX꛳NId[?ۜ7>ϻ?v0, G'FԍnxƶTǮ+ٜmA7F Ƿ ./$MǔTBUŋ$B{U;HpQH#pK3uo|Ѷnܠ)m<3$IHz©ȂK! Wo('Wkԅ=dzpIԉ}kFۼ}3=txG=ڿqy@.v1m!>; Ep&$Amcp F_>em~h!ÃV(z@q ^ J#bTDN t6ą5HU8%k4qvش+h*..{*9c=zc8oBMq85= э_!6;lhz?K!Bw\}kj'=<@%(*b) pVq; J畡qU=ʯ_n\4~LD]cʜU=h,*@eH ߠ,V}TS!6+Qp0R$lS8 pIԽceӃ\HOZLe{OcOGpj)@\:CJc8Vb[3pߠbZ^'(< pg(KF`6S'qi>fRi ǹxi46*0.[ZAo4`4fUq(_G"ާͥW.yù0&gq뫼Ѡ$^h: p(~EYk:n3Ħb8$ kWptxaxq GcGǔT2 J1Aw.$ ?@ q.S I8@p"hY<% I1Aav~8/g@l© IMFE㇜>d{0N@Ob쩉V9XWbK ҅|xMX1,q$<rponGpM zoAB^|K󺇪xI: G I!up+, v a aG9M&2 i̓BRP"Po }zF}hZ 1c9)>UM@RU(f4*#cHhSQ"ȿBpWaGzc 2S}8.)4m a5TsC pMXW !17dt0[BQpS!ҟF'7Nx pۗPnC(Fa!^Ce4AoxaCA\,@O\E_,? a*B0 VCVQi0>x(-i+ AmslyLBp% 8C?AJlMae}8ZA L$Znw0C7V)Fys"[Oq6D8V V 6bD9|vC{Pm,]gJ(6кg{Ӳk_z S\ &,쁡!VW(tRO"$;:j{ZA6N1&Bpm΅U/ڮnsW(t_;9WH؅hr僳9XA[XNYp'BP%z~q+9_Bڌ) !%>@nc x%AO 0 BpBp8BP8P(P(G( dG*ׯIENDB`jquery-ui-1.12.1/demos/checkboxradio/images/jquery-ui.png000066400000000000000000000105631276627555100233740ustar00rootroot00000000000000PNG  IHDRB\:IDATxp,is͵m+kfm۶m۶Mڶmۣ5sIͿWXErzGսsvO)A?|۱ @ ;ָ=Ѹ@Cbq..gc{H)r5ŝ{|þzÕ~8~O F\T{;Z l !Rp%˰qף~H?I74e+c",w߄Gb::7>[ ޡ WϜSdQccHY;֪ лz" ucH-6\mkT-H8CA5XƦ5l)ZKc*$>ˑ.apc1_`-v8"bcLVBìJPx qć^߅ߖg {XZ!%3s9;e2;G@+VS`mN|ZRx)DhQl*OՐovbޙo_m?> Kħ KC1; 5R񘍨k&.DhG_AJjm/qj%.I}u1,-ƶEo%qRkE\=)=S>Nu }vN+7zx%:1m" fHdt;B:H!a-H-%pJ % KUTќ2}Orw- 5<1$Кc_=!{#{7DqjbXл2m;JvlCfB<WC.oX7$0$א<.GR E#t %9. /eC>V Bk)ZC"ZS!y| FCQn;`i^bcAxZ?%;فM슼&c| 9%H 0Zm6͍ X@hxznaHwwj[ƿOl}\g`HV7!kX \cv[[b NVh~t6^Pq/{_9gqNr/VօD8Xq ^= 5tsPc}pUGXRc^0v?V<h D1m<yQ%i[nOG*aXo{!>h?HzXo(H@k[ IP8հ*G5{s 7^ bWz^*XzVXW!y6\,j1Z&"nHīgCk$/)1 =._LUgC0|'oi=t$ҁ-#>ZGxZWP6>t1rz/R1if ?9m К D3hMEÀOn1zaejC|8QM)إ3ڊ>ΰeۻ~ovT !fA5H/E|D2 Vxa dз7WJzT9:;;(lB~G/X:t0$6&̢e(FB6< j9 rWٮ1 6?c:NbIoH8b/-Fr A+  KA|zaz_?ePtu ٶv&Eph#H?? qx$!zUsW@jX!1pZ[4c73 {LmV:q)6aC5BbH@]A4oyɣU!1Z߄2~u!|(B[r^]k^ۋ\n\?hqvC?Z@x־CH7AJ_C: X} ?eQ sӸs|_-2rT$9OUo+t*KWA8~kA|.Ԣ2QzRCkhh ~HC r6b+{"P [xKOK5n98Yq;2ZR}agR.N_\x _ր? OӰvI[0:>sxn>?u58gn ?uƃ8 G2  i ےAз"wא͝ T.<|qd/C<^ n}X }=%y>5זg6f,ֳϨK-stR$*⫦^QH1~ḿSܬ>.Xa?ߏT. x$ݐo8>γmlhߴm^(v;BX CWY卿- q"h aXR̡o.p|;?9clz2/;7^ue^Y S#\IH>}JxD >D=1{ !Ke= Lr_Ύ1߻w\\Eن꼈%!O<($>J¯E=5!ꎃxHϰ)$;_'6௅^puHB4ĉ89CQh )!q$'h<'TE4Q^X!1 Z搲ze^ኤ/i+V{HYYze@$4MջW1l-p1ºX.n!uiUxg \q1\ 1J# k!ml%Hn/Cp,G;\5b4ٱC2;e1m`,SAnEGVzkS=:?c8zx T$.*;hYc F.x׶m۶m۶mm۶mm?ɫ2uOI~zͭ~s4w;}vۉ, V܆h $N,GezW,BE6&`p+:A4 1y!ȀHmov@?@E[< A,a9n6A ScÝ`? `&nG"#;\Nv!#$!l  |A&|í 4)~ hQNɓH>ψ6< XH*߆P%V a8o)4D5:jqN+| w_ ǂqh͈)n/^7,f`%t{_zꚆBSb~x 2Ra/!ДqHs''#t }w;?;;A4l]f,؞3Xc"4C`( yA< KLaLE2@:2-#-!PYX<M6w词'o,$UFEhrCp4`?^Byo'ABP9yASwfGah>F6?yB<]iYk*wBs_;͸)ycfv5lrn1x!(A@5-4K!/W0 6 bEMoD;Ws4U h MIfNl6'2B<+4o@ۂ@[СfA D# v,@sq!y`Mh^tPKPшq9b` _)(ȂKF9L 7"Vs y5(cv"j`)B5 &K{!PG aAg@5f O!+wjp~G4DJ9XMא(6k̵!L0͟li:h\@1T#+;Wi^ئ :dAJ"{ )#f A<>D^^yg NAsZhNEtC;W2(½1%JF#P 7P*CqWA)hQ^FITDzPq5q0tྞ>ysq%ɟ +\sNrzqܡw IENDB`jquery-ui-1.12.1/demos/checkboxradio/images/jquery.png000066400000000000000000000106331276627555100227570ustar00rootroot00000000000000PNG  IHDRB`bIDATxc\cNƞIƶm۶m۶mV:X}YsjԩӝN=k>^߷{Rrsεd E\ bl(`N7hq[`6T1**/I #6\ G@=PQQ& XFנPPQ7X C=$BhC90sCn,¼dȣ'lkTm8iCH)<k@a#yLC/(03~@STb k א˱ 7prk }}Vwq.e!JKC-@5Ǿ8wA< DZ]T:_XC(C0C(l̗`ŲpxsХEL8BЮȥ+C!k7BYl 0=,wSX\{[#mZL o|L8S!nhCK k2Zaiʠךʢ/Clc .m)c!\G¥c RLdqp*,}2(9PjVh: ŠB.$14àlc.1.`9̅V1\KKkBy }!kE(7@ I"ai+(?h !_3d" gbSE? :?axޕׁaRPD{OGB OyDRMB|$9l`r7#2,Mx}%d)|eXfcdPn<\_@)8P@gzu32 y9\ͥai4X:۰>Iΐѹ!+\_{ O{a,JAI`w5s6u2]V8nV1=OTBV8z@S K̵J^BYcn0b X Ә0<(C fWKgG<ɞ2Ƞpi(Ö#J !K \_@F7&9>\-!}C C.t0br,$Mh):p+,tF 83z>܀ՠ(c. l!*bHXʰN<_|҈'W@F:P_=LR/Bp5209a6\euzH&AEM=:*>f`K܎.z(}N_3P 1ƝBo,cnzr%8cnzGZ?+tD5T$:[ɳuP31\es?)Ho۶m۶m۶m۶m۶m#5x":i OLƵ0a{*#$>@ p]1LmǐbbhZ?4Mx#m-q@+.$Xi!Ć;4CS)W8 q8gw J#ĢV,Cь ?PICpU B,m!7̪Q*jFjNhDQXMb0hp뮥b&0R pW!&nCy i-K,hhh&0RtpabB/W?n3hQX"A~mqT#+@[EY0+L`6ɵ8H Q6YxHSvE B F8 ED|"@~?CU siٶm۶m۶mڶmk[k+?O$&}tS}yofz;nEz~ ~ȢِEc 3|ZۨCt[uCc<#ѨҢ\9ZJ`b -a@K~ky8 VR[&ShsAMFvhmڳ9P̐>.v^{Du">#{+-$,E p&ҷXf}H M[GIB{/^o($ӖωD:\P]Q͠z7иu4n} 'Bv#:Z渞#fCc("ꘆKJ+~{ k e܍ƭM9)o_Q'poym _'̔ik4wm1mgE=X9&Fh\o֝F!eE#"h^n;ɂ{v.ɡLGcO¶@1y1Y9'5yKs bC:&~;~uMmqGF5ĺSYwS Pt ah>Uذ&HGyAC_;ǐBǫ[H?GE"@0ij“!z ,ss i :oͳ!RU_Ecc΀jD"]s˼h7+E9:Rw=]w4f c|KbDꝍ {(>"Wv$C9:ohz&W}ƛ13LKi'zG+ot]H;ǽQ;D#+_ FKvq,1`>w*ҩMĆWFeI-3E  9:Yrc0mOEc(&뜊 X=ei#X5qyJosVDv?#)̈́ʗ(hdYC NE>}-6 %631黱$^6^:F{yC" >G08iz7!+M#Iu\{X_i9iњlx5aD$ ^Boa&|4,df-i\E0s̤~(6(qTq01p!{9Ll\E8zs[l.6_ x 5sHǝ]E|\0#oȑa2`"hc ".Ur2#$1,AR<\v.4m"Tx;\قoys[K6Ǚ`#:2 }"U6`䤾IK6[k‚Ըkдa mh"=&0lhО1{4^Etp "-\S^@Um/nJMU `<׻%tU$2Ըۧ4"xLoRu* '"vAy6´s RSRm F1Y6>$2If5͘z'8H^2yާ`&m4Qa 2fvMUx1?'O23Umx(~{[rood@{`7T=aj,4N,;LXHЗةәtB˭sT6$V$`S2?3q0H.; %UEX61hH[*#^j`Mu 2ʚdUmKe Ҁz`.a{Ccž7z\_ԓ%xmwi3X_7 p?%yT/FjHs4t͋0|D}`*RO4Ғq Full0]l۶m۶m۶ml[m?[IwHvg~W:Ϋ~9\z;ExR2B3tF 6Egt(Lޒ8c؅Ґ@c/mB {!A eQ FWDtH%7k޹t[kre= UB[(ҷDz+RCPSForsA]41H-R5qۙMpavFWW WmzķEj">W][y+{ 7ATێlOU,(R`TscNE/[ ژ.-R,Rw[V Ȅ\NFZ΁_[@c.v#/-}u sq؊k#OB.dE6"ճVc(Ly"A:VɄa)iĘJX}}_$6 1b#r,ȏȁ0Ǝ9G~jGGqd|%dFlz#P堟QF0l6ܯS*IA͊Ѝ[ Hk:/¸bj*ўXVla=щ"=%E^Br#a[5L>B"k>;.a dT gƮ3`7]5\3*5nv8Q@Bݡre]5_b6# ["T~T=f?PT ߫ST/ꅩt&}tHইi9"e0C^]p8c4UR/ja"5C44?gQ]Ap hv4p3 *wIt\oVc-ЁkyGi9 |ϝ}Q:!P=Uf&Wf5<txV dMcV c aՅ Ȯл:zaŘa:GpNP+u4XM z+6mglBp5<8?NVY ^[}׻ Q/|!Q X* WLFXR{ơ6c qxQ-!(X psNT(! z 8+Ϙ'8?q!-8! Q،v$f?]~F4[s/R`q(ZHՠEj+} *c\he<ql*+"B]#Xch",e",eY',IENDB`jquery-ui-1.12.1/demos/checkboxradio/images/sizzle.png000066400000000000000000000141171276627555100227610ustar00rootroot00000000000000PNG  IHDRBiW[IDATxtYKq2gv$3;{pΎi$$ IյHr$_E*7yA䦠_J-]8VH)[ L+S!4A;]<qi,8K[yd|GDiEG)qwE.FSTyB%߇(xtlM-%-~[-hHeo8aiL@< QDTC%K FL?1.5XZQMŲjGV͞:O(E|l_dvJJyށӹ""D۠tstOt>.:_:XKlGRbkgDn-+Ȫy@7x+cK΋L΄8H)"Ky&C5sGۢ ht&cXX/-ƾ"_:ڙOkulTmlx u #߆HzB%8* nO2>LwDf"3V#nYFuܐ Ju<(/1/U-1&k=4(sLH9cMJ^> "8ڬ 2ex!0T62ݐCa25)-Wa^_U JA8Z'MZEPzO42N ){ ^LxDKGIF#Lix,&`ŝiEEJLx"q+7zy]kZ^,+&.1`P k(ORp:)P [q! A57]jCkK<s@}E^S4%kx%ʋ)vq~"J5Yը+{l`m\UA%G|Yd/N< 0m^fʺ31#iSE:lP)JS7Wu%r[I_.2Y+q|'NLJAP:|6ZD lg|;(fEXLI4NPy JxVVbP}.)ҨF︘]RY#㉆h $|Rs! @5!2p2`9~H]6frW T<}֨;uJJ!a)k%.җxMQx}Q(o}!߯zceO!"l]jPk]a-G ^r1F@?#Fq{xc(rh$CLiֺd#1sm"Oҕ84%o;S•<{}3KePɵ M8 @%!R(otj#60~ooJGt1eF%F]y)+嵕3 1(23*ȅ8rK"HoB8whnUfŹ,;لtBc@hTݵǻb˼Ht%~ZC)=@:D.)\ ,Q/@5pCnC&AEV@5_h9**@dSJ(*0tz偍d%֭ |S; 's@%m r0B^@&ySA%K.1EPt ׋8#)wB8:,4C@$*"KI~Х'fq4H BجyWҖxI \ Z݁Ql"uYLN)8\̆΢c%am:E4*1G_oֵYyxk2ﭮ lAsA55hTD-Q (/0F7[ :E-No/q冒s b]jx/iYlmG&&9Q[T< ՜u!BvE9 ˴ JB"7I):pLR/f8 psAdl 1p;A3ԋ" *16Jll{.ʹ"diVfxAߡCd1S`}w)ךćnlE'kpT "C 7F| _dxh,"aV9G{uK#_,o&غ%%r}۬CC< \94pSB8Jj)Y\aJmGnq'os]qmdui[+Mk$F#]@MJ9*y"Ph7~B8hoC%14#U*ѤP`\<1aVݶv:f^E:5}Sd%۬TG9^tKM@59T;j9PA%߅H@%w By_h+<\dǖؚNJUWen. *LQ ]jRTq>jC ܃+^8 @y^`7m#b}ʻΧGS ;{Y*kJ\ׁ3+!s}Oվ')n[n __bO^$Ms9D|&G R8*ap#! nuDCDQλ71'K>.wȱČčJe3!e>|!PIC$`\aqs0,Q!\|a`g>m YDڛ_VUFQ x^-B>FYDԤ8O) nUN@5T ]2Up"r88"Έ7WbƙJ6җ}x@G+뿢]iY\ K4W=<~#85A+~9܀|܈{X ݓ芖&8b2}m%*kMl/IJ>*1:'C8ZA,t=)YcR%5Q˲O-k$V(1NcAAA?,[ߥI ZcڬSGb1<&fM!Sƙ<Q:52NLQ0(.+37{y#/ȏIXDAꈻ88ilJ&.%ޣ׍޾)HjO6xZp~uK*hx(mC'f|~c[ťftV93Pa2ޠ3UfWV}M)JoJ<ѸDH)Kp ]!rC@U?~U||QVC(=6V\c~AU{4vfԭ+nј*V{e5Ǭ&ks\Fs \U`?"G/yj;q[`M?l|)5wwwǃ惾k)lKcwtWGm۶m۶m۶m۶޺k[yI'KN7C: kB*[l۴'^d}"|i8L#Nl{ne4 ~gbn^f>aKqW{tν p3D:Z΃<|ÊDwtPyيP^xvy: q*Ёؿ_{ 4iHrɣ&) 1MH#ɽƮLXQTi2]RԺ`m1^'ؗ~ڀi͓^^ T̮\G6TMk"L:e V#(= trC|5{ڱ]v:$weC>Rߥ/4c K Ncj6#X jQuery UI Checkboxradio Demos jquery-ui-1.12.1/demos/checkboxradio/no-icons.html000066400000000000000000000040261276627555100220770ustar00rootroot00000000000000 jQuery UI Checkboxradio - No Icons

Checkbox and radio button widgets

Radio Group

Select a Location:

Checkbox

Hotel Ratings:

Checkbox nested in label

Bed Type:

Examples of the markup that can be used with checkboxes and radio buttons, here showing both without icons.

jquery-ui-1.12.1/demos/checkboxradio/product-selector.html000066400000000000000000000112171276627555100236500ustar00rootroot00000000000000 jQuery UI Checkboxradio - Product Selector

1.) Select a brand

2.) Select a shape

3.) Customize

Using two sets of radio buttons, as horizontal controlgroups, and one group of checkboxes, as a vertical controlgroup, to implement a product selector.

jquery-ui-1.12.1/demos/checkboxradio/radiogroup.html000066400000000000000000000016651276627555100225330ustar00rootroot00000000000000 jQuery UI Checkboxradio - Radio Group

Radio Group

Select a Location:

Example markup using the controlgroup widget to create a radio group.

jquery-ui-1.12.1/demos/controlgroup/000077500000000000000000000000001276627555100174125ustar00rootroot00000000000000jquery-ui-1.12.1/demos/controlgroup/default.html000066400000000000000000000055761276627555100217410ustar00rootroot00000000000000 jQuery UI Controlgroup - Default Functionality

Controlgroup

Rental Car

Rental Car

A controlgroup featuring various form controls. The first features a horizontal toolbar like orientation, the second is in a space saving vertical orientation for usages like mobile devices and panels.

jquery-ui-1.12.1/demos/controlgroup/index.html000066400000000000000000000005751276627555100214160ustar00rootroot00000000000000 jQuery UI Controlgroup Demos jquery-ui-1.12.1/demos/controlgroup/splitbutton.html000066400000000000000000000024461276627555100226750ustar00rootroot00000000000000 jQuery UI Controlgroup - Split Button

Split button


Output:

    A controlgroup creating a split button, by combining a button and a selectmenu. We adjust the classes option on the selectmenu to show only the icon

    jquery-ui-1.12.1/demos/controlgroup/toolbar.html000066400000000000000000000170711276627555100217500ustar00rootroot00000000000000 jQuery UI Controlgroup - Toolbar
    	The Rime of the Ancient Mariner (text of 1834)
    	BY SAMUEL TAYLOR COLERIDGE
    	Argument
    
    	How a Ship having passed the Line was driven by storms to the cold Country towards the South Pole;
    	and how from thence she made her course to the tropical Latitude of the Great Pacific Ocean; and
    	of the strange things that befell; and in what manner the Ancyent Marinere came back to his own
    	Country.
    
    	PART I
    	It is an ancient Mariner,
    	And he stoppeth one of three.
    	'By thy long grey beard and glittering eye,
    	Now wherefore stopp'st thou me?
    
    	The Bridegroom's doors are opened wide,
    	And I am next of kin;
    	The guests are met, the feast is set:
    	May'st hear the merry din.'
    
    	He holds him with his skinny hand,
    	'There was a ship,' quoth he.
    	'Hold off! unhand me, grey-beard loon!'
    	Eftsoons his hand dropt he.
    
    	He holds him with his glittering eye—
    	The Wedding-Guest stood still,
    	And listens like a three years' child:
    	The Mariner hath his will.
    
    	The Wedding-Guest sat on a stone:
    	He cannot choose but hear;
    	And thus spake on that ancient man,
    	The bright-eyed Mariner.
    
    	'The ship was cheered, the harbour cleared,
    	Merrily did we drop
    	Below the kirk, below the hill,
    	Below the lighthouse top.
    
    	The Sun came up upon the left,
    	Out of the sea came he!
    	And he shone bright, and on the right
    	Went down into the sea.
    
    	Higher and higher every day,
    	Till over the mast at noon—'
    	The Wedding-Guest here beat his breast,
    	For he heard the loud bassoon.
    
    	The bride hath paced into the hall,
    	Red as a rose is she;
    	Nodding their heads before her goes
    	The merry minstrelsy.
    
    	The Wedding-Guest he beat his breast,
    	Yet he cannot choose but hear;
    	And thus spake on that ancient man,
    	The bright-eyed Mariner.
    
    	And now the STORM-BLAST came, and he
    	Was tyrannous and strong:
    	He struck with his o'ertaking wings,
    	And chased us south along.
    
    	With sloping masts and dipping prow,
    	As who pursued with yell and blow
    	Still treads the shadow of his foe,
    	And forward bends his head,
    	The ship drove fast, loud roared the blast,
    	And southward aye we fled.
    
    	And now there came both mist and snow,
    	And it grew wondrous cold:
    	And ice, mast-high, came floating by,
    	As green as emerald.
    
    	And through the drifts the snowy clifts
    	Did send a dismal sheen:
    	Nor shapes of men nor beasts we ken—
    	The ice was all between.
    
    	The ice was here, the ice was there,
    	The ice was all around:
    	It cracked and growled, and roared and howled,
    	Like noises in a swound!
    
    	At length did cross an Albatross,
    	Thorough the fog it came;
    	As if it had been a Christian soul,
    	We hailed it in God's name.
    
    	It ate the food it ne'er had eat,
    	And round and round it flew.
    	The ice did split with a thunder-fit;
    	The helmsman steered us through!
    
    	And a good south wind sprung up behind;
    	The Albatross did follow,
    	And every day, for food or play,
    	Came to the mariner's hollo!
    
    	In mist or cloud, on mast or shroud,
    	It perched for vespers nine;
    	Whiles all the night, through fog-smoke white,
    	Glimmered the white Moon-shine.'
    
    	'God save thee, ancient Mariner!
    	From the fiends, that plague thee thus!—
    	Why look'st thou so?'—With my cross-bow
    	I shot the ALBATROSS.
    	

    A sample editor toolbar

    Highlight text and edit it using the buttons and dropdowns in the toolbar.

    Remember: This is only a demo and shouldn't be used for anything in production. Use a proper editor like ProseMirror instead.

    jquery-ui-1.12.1/demos/datepicker/000077500000000000000000000000001276627555100167705ustar00rootroot00000000000000jquery-ui-1.12.1/demos/datepicker/alt-field.html000066400000000000000000000017311276627555100215210ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/animation.html000066400000000000000000000030211276627555100216310ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/buttonbar.html000066400000000000000000000015471276627555100216650ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/date-formats.html000066400000000000000000000024061276627555100222460ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/date-range.html000066400000000000000000000024201276627555100216630ustar00rootroot00000000000000 jQuery UI Datepicker - Select a Date Range

    Select the date range to search for.

    jquery-ui-1.12.1/demos/datepicker/default.html000066400000000000000000000015471276627555100213110ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/dropdown-month-year.html000066400000000000000000000014651276627555100236010ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/icon-trigger.html000066400000000000000000000014631276627555100222530ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/images/000077500000000000000000000000001276627555100202355ustar00rootroot00000000000000jquery-ui-1.12.1/demos/datepicker/images/calendar.gif000066400000000000000000000004021276627555100224710ustar00rootroot00000000000000GIF87awSQ[W^Yc\e^meslzs}1i9qZs,$T [Ѿ 5ME @@\[n)*u/8l6k<2uӸE,inxPU\&ff]  moq =y^`Gdd` G  !;jquery-ui-1.12.1/demos/datepicker/index.html000066400000000000000000000020511276627555100207630ustar00rootroot00000000000000 jQuery UI Datepicker Demos jquery-ui-1.12.1/demos/datepicker/inline.html000066400000000000000000000012351276627555100211350ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/localization.html000066400000000000000000000026541276627555100223550ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/min-max.html000066400000000000000000000016661276627555100212350ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/multiple-calendars.html000066400000000000000000000013401276627555100234410ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/other-months.html000066400000000000000000000013661276627555100223130ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/datepicker/show-week.html000066400000000000000000000016021276627555100215660ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/demos.css000066400000000000000000000003531276627555100164770ustar00rootroot00000000000000body { font-family: Arial, Helvetica, sans-serif; } .demo-loading { visibility: hidden; } table { font-size: 1em; } .demo-description { clear: both; padding: 12px; } .ui-draggable, .ui-droppable { background-position: top; } jquery-ui-1.12.1/demos/dialog/000077500000000000000000000000001276627555100161145ustar00rootroot00000000000000jquery-ui-1.12.1/demos/dialog/animated.html000066400000000000000000000022261276627555100205660ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/dialog/default.html000066400000000000000000000017041276627555100204300ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/dialog/index.html000066400000000000000000000007711276627555100201160ustar00rootroot00000000000000 jQuery UI Dialog Demos jquery-ui-1.12.1/demos/dialog/modal-confirmation.html000066400000000000000000000026211276627555100225650ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/dialog/modal-form.html000066400000000000000000000117311276627555100210420ustar00rootroot00000000000000 jQuery UI Dialog - Modal form

    All form fields are required.

    Existing Users:

    Name Email Password
    John Doe john.doe@example.com johndoe1

    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.

    jquery-ui-1.12.1/demos/dialog/modal-message.html000066400000000000000000000025641276627555100215270ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/000077500000000000000000000000001276627555100165655ustar00rootroot00000000000000jquery-ui-1.12.1/demos/draggable/constrain-movement.html000066400000000000000000000036071276627555100233110ustar00rootroot00000000000000 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.'

    jquery-ui-1.12.1/demos/draggable/cursor-style.html000066400000000000000000000031141276627555100221250ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/default.html000066400000000000000000000014711276627555100211020ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/events.html000066400000000000000000000045411276627555100207630ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/handle.html000066400000000000000000000030061276627555100207050ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/index.html000066400000000000000000000014051276627555100205620ustar00rootroot00000000000000 jQuery UI Draggable Demos jquery-ui-1.12.1/demos/draggable/revert.html000066400000000000000000000017621276627555100207700ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/scroll.html000066400000000000000000000026101276627555100207500ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/snap-to.html000066400000000000000000000040211276627555100210310ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/sortable.html000066400000000000000000000023641276627555100212730ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/draggable/visual-feedback.html000066400000000000000000000046761276627555100225150ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/droppable/000077500000000000000000000000001276627555100166255ustar00rootroot00000000000000jquery-ui-1.12.1/demos/droppable/accepted-elements.html000066400000000000000000000026461276627555100231050ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/droppable/default.html000066400000000000000000000021411276627555100211350ustar00rootroot00000000000000 jQuery UI Droppable - Default functionality

    Drag me to my target

    Drop here

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

    jquery-ui-1.12.1/demos/droppable/images/000077500000000000000000000000001276627555100200725ustar00rootroot00000000000000jquery-ui-1.12.1/demos/droppable/images/high_tatras.jpg000066400000000000000000000547221276627555100231030ustar00rootroot00000000000000JFIFHHC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222 ! -pmz1ju³ܵbdm|j"$͖nuf=gO\+hrSR+Tcu})/OO%S8@ _kfJ+/.vܺ^ՕidDVTbvLS^4"ص*m,?6g9m)e*DA N͘sGI)1O9WYEaѕ穡J!EU6pO,0w L@fu7ΙYM9mkjYZ\fkQTyW'(Im@%IH1Xޣ 8|'?Mm秏6o28q5XY ݧæ /'_6nʴ.UkL.Z~Đv'urwo"ܥh]vw鲹} 4KjF}35u)!vwtss[X]?GJ(@y<-y}8t24gMN =@@Kl֌ֹyfթF{GK?;^2ο&H_-Ϯ=[Jk2ċ4Vl=fʚfVm@Hǎ7rf/2Mn L]-GP9dS]hlz]3y 7\~9.c; B+_ /}^X*˛V@fҺNsӋn6jm|(1`'`V4fΊ73wLlY}5cO%rV1dXNMQQ!EaeU6bH1!(:&|RVu{g$ 9rǢ /|ͫ7-L9eU]1M֤5Y=`Qa]syyjCc573RpY\xi/ \5,1neNr^~]zd_i^gu.  S>ydT߫ÏъFuY8{aʹEEmY $6uJ~X/L鞚9gN3ܥe.UeF:bmFIs7˓YǮ#LK! YMk,QnBT{R=|sbcs2Kos:l^O3oB5 =f h}b̎!|_laHfR+.e!%tv֪˙W+y8鋳WFrxפ $/5cϤSleYؼڜDϕzHӕ/n:\2 ;-rRN:DWk8wLRK5ǐxܚP/}vhxיrı,BOlĬPlREa{˛@a S4{\bm.\\Ey tgĬ69 G=axrMsED2ct @1u4c|\8Akb =I]jIO_3m'C|Sհ3ؙqO63Dldr|~LMe d\CFgs)\I1A (P_W@&Su DœLL1#8Ԯx RAVUn$e_ǧ>,ʼnqJџ6K_ vj&+p#yƌ%YiY5}u4uѪ O(ɏ.Չ2VumP}ԏw'Z12[Y h SSu':*F~u!%cg:H8ړ(r,5:sHeXP~Ϗ_}pLk-sn1VY)?*^"\LV4W "!r a]Ul겜@_K| )z=ƒonX2/ q Ø ߸ui"@2Ycfm\װpNO 2/U]p&eH2)ͦuN^*3EMr?]Zke}^l6%D%6moAMM:qM+^Ly|d/mbHz'H(ߎy!V5/f|l"e ~'{39=!참֯V;鐀qf$>dRz4&{#?lwa'jy(G~&oOfwz@d)=AŁ:gGZS8ļĮd YQ.Wli2 E)P9wx OĪZU$?S'+~݄`bAVC&>4ɛrk e[X=s[η>\c[N a,myfpۣj*;}Ik3%å GaLɅ /5\,A˱\!'˦?͐ʼWMGUrw['.|JbȜŏ>ύr-dC`?}Q0UOI`ϙSUz^{l]Pkzߨj/XJcӇK 5RACSfoҘcP$l`7#<8?`(}e5Y^@Ú:YXt@UȀB.5*]P j,A^߃`xD\.`CTn C35S}HuN7p}hYLS4ɾ#9Ō$ By#'Xxc QLG>-eE68_\JkթL0{7cDn'rh *|{Ks6\؅\N(Ȼvjǐ?o$"T^0;'35EL'z"705?$0 !1@2APa?].ɰ=*a@4 "o'Oc+r 2)ѩ:tGJtkOQOp8 IUQ z8hiXcd(cr aP=1s=]BW򆞐SBV,ɓ&LLptrt.< .<0 [Vl#l(FaCOnaiN _' 01!A"@Q2aq?.bmc&.RȆ5eѧ-\ofF9Vʣ%?ؐ+迆5 <7qq9om&$͍\MMc4!1A"Qa 2q@0B#PCRb?UrGпr>-W)\u6ۜ,S>~NĿ$Ԫ=旿_}Ыm STO½Jئ-[V>7+J]uX>[QV%]#o_0S{: UG*ϡTox񸺌S@Si/!S*JjXIʣ:~l|u?7o>YkPtE<; ?1/iݗاR˿dQJ,;iOO'qƥa! [ú~g-dss!h8i?;dK?rw8kV|>U\NP>tzq@ѡ",$;rL>_UQO}ʨqݜ#W lz^#gnv,b k p*VVe1)*!dq]gZ*E$rxIx^Ï-k>U~OmUg`$}F+[Grt"N9f׃C%F=8nŏcԙ>mH8׊GN13pTBP_*8Zd]!ʩS1E*+b$߶kMԡS}4uHD L.|J:. 1±:G<>Wᶶ{SeU SNkѓ= R6psĤ|1?սh奲eZfFprIIYʪ_od])['s]YpB׋1+^VT}QNj[ȫ pFPndf#_ ⾐p<1j,O*Tմ?+h*OqSH۷s6V*pAɍ \yt(a %i~KE inPRGaz"s9q`0q%Xd3ó/ЩO-X͆1rO ~4kM=4+ث=yBçuS{ 0:cx0J8Cgss|DNfP=4C*Ia.URsTw$vL(pg"<v8;lpw",NfFn圥W{gX?޼xzYgzKЗjK)6E()_IJs#kuHzp;G~Wg(i.s(ӌoGuib?[Vq1q{]27Mdu;"+7wctG+9_)Fpw1}-b*3r䦟]8J7bDO\iM=2K>4J-]-d4>UgJ^j놷d Z} ~5RDZ㰸mZj9}{ʺ 6%EڃSC{зOzu8֨W"wd}qD.¥5]~Q*wWĥ-6ƔI\->BU+#{'Z% XӉk)}99jbvR e-$ЇLPڬi%/H!lB 0> Mv0IbH;iaVE{z|C->A4ijPSZ)DE*S]}t#9+m+[xV&ez_KఋSY 2YPb6Q*(z?CB wYfwӶkb^ I%(6-H~;t%s[ lG@P0j> 1{;u##8.i&;>UUДSX\Q-QeQ.2,eBh v0;N=[%+iO2 @'# 2+ҥJӌ:KD`1;D[bi_ Rb 9TrQnl*iB2rJ*TRJ*TRN(K^Yp%M^3ȸK`\bʎJ*TRJ*TRJ h,C!ЕTB,ԉ| kl/\DNDRJ*TRJ*TRJ^֥JۨR7^&RNpcm>\Ku Q5Jow4GMU ľMG`1`ʕ*TRJ*TRJ*TRJ*!+,8TڨIW^K- BJ"߬_昔F1eJ@h)xcL!KY2J*TRJ*TRJ*TR&fB; 3ȝseDh&{;fhgpw0sq.#%`Ƅk05+6N6]sATV^(_f 3w Pʕ*TRJ*TRJ*T|L;9QU"+!j 5&0똎0ߖjUe 1㛅]o.3N‚?37͊5r`e*TRJ*TRJ*T[+ʉݼ1/n1Q,Z>+cW]P23yPZ G\[eQnXk 6q;!>/lO1@K%J*TRJ*TRJJ%4SUp5ORzgL4t =)V=0rs./[f6̍I@*{?S ljQNkHΕM8tnw&J*TRJTRDL 5^^n8K/[Bu2;[jзʪ3,Qq/-/$1Ub_6비O ձ{M9%x._̲\rg؋ee>sd!:cRDcy"CzY^f@ *֍̸meu oU0de$aLV\-GĢ&3, R^ Z%0n`ΕYZa4W]as-0xnj3b4fEAuVWp!A/YeʠK9H~Ti0ٍ܈bJNf{6TŒ'14ϴZPb%i /UYMbh?e20Dt^' c\f:;eF^ טW'7Txošc5n,E7^ܫJY*4Xw]2tQ<8Ez au[ (wl-!̪g4yqkR =̜*\Bh¯G`!%&yBpD +-̩(1xa4BV@`wǙn`2&+;l2ϻ^ifvݧW+70qB솦)({%zȼ/`^c~aȲ핑>SށsDi$ه:] yF7s/1u(L!xZ,5Թw3ܱY"Ļt-3TH{=aNŠ˩\w-SPbL$|5W4?x&Zysٱ2Ko2a.3e]pbܫXNVc9FmcsWFؘNSAScV8Y%k8GMZ'ij%s:-D%h>ˮ'Sikq,f# -%2$B(R"A'3w!Hf>w/ad6GS()vN2*[k刈,2wh(F[fꡑԺ[bmDmwMyKT,ȣo e.@4K̡us3r>nYn!@=ڋ.#|'ЙA#^zDD r hP=%wUxĩ\]};aV#3)kL8/MEO s`Aзfu>+>j K;W Z5A˼12&U-.xŤ_ #C}KidM m3;@ˇewĤy0`B/@@myF *t4ޙ[(<|ccMF+q2VC0UaVQ >[菕LB_/jr2͏/ >bܬ.1.LJIHtW+usSi^0(b9c|3bw M^,n|LN̶֥[( ˑ-) 9M mN.;4\@n$(*#ӟc2L8]ƛhØ|J?idRVjxeg;gQue0Ju4R,kKNd퉓t ;,kwyX~onD;h@o4q,w)w >Bs_ghcwrMse 1Pj*WkXu%AX6TU+rDQ}%z;5xQԡv/ v2%!ġ9cEFW˹5 7ix:E2WGob\Bqg,(n%ک6 #ε dd >J#Jf gNc.əԭ3P;se^}+2fW[b~bհ;>!,'DerA&;!5 Y%-cS5 B#]ͥ(Ơ )>u,5uMQ̔hHQV䙔[^MrШ劷@]2 n4 n|b%Њ}[w; #+ibKb9Wr9;@Г빞ۧ1ͫ WK[*(dXw-Ubg`o=iȬ1X3f79@ 2X.3u-/DX MQLJp%\e:,xB^J9)~^!ܤU%UVFrxaDdjhfew6[PT& C` k ܂18\Coc\Dtm4ƿAix8nC pG֓><’ eP40-Z. mX2#^5,Yө|l ~#ITKݞ.%-֚w^#Jm; #2:7U3* ?OxX[䣹Z`{qmJٽp%$n&W'I:>YXpYQ 6i Hj;F-YG?R#,ϵK|/ \z'xd: DV\̆: ]ܮCZ\~{5MA#ymA= ބ<' MY S\ɝ5 I5hH>T'$5+}ΑŠ=cJ i( -ugc=^)yTQ' Ǫ@"T>5â2j=EIM1rхFgˑ Ot3eRu7] 3BZ-~؅$wQMwG|խvHv.hԧ 1y#uz^]!1 A0aQ?,pcyx NSHD[b=W .F2!A\hW>A 0م˔!T",SCM "7x#?\U/o*"aT:$vޢJEQ.>ϐ(|1? B1&#*W axRfzG|6*TRPqwܩRJ*T`a+]LB (`Lό*R.L'dФpɌ"Wis|:CGCS!3H,uχ'?YSfAoxؿtC#byLqGc^/rS .<ܙ}jY+;)+W*[¡ƍJHELfC$0~a= ?#}E*q9"+:i05 pfSN= DEŶytpɸ%zw0NL X?灴тHGgDM!ZՍza!?;ϋ7rU xnї-S mmCY"k+lI6mmKܡڿmm˄S'qSzmm'c{O6C#ܴ-ml]f^,ݗ g>GݶmmZRqmmܺ#oS/'ݙg -xI:s Hr޸/gu`R m .uzx^[$({Yt'#oa98k0^8M {9Ifnc쳹M>O̐wI.o%[)tާӨXGK\at_7_ݤ#sIz6 {kvåjw=G2|tvi&έDuX4`X ܛb>Cܚ _w%Y%2=Gewm@[]]YgLnmWgΦdf8y!eoI j3mчf]Yt2y\^a-{nzZvpO*/҇_.Yn9p1m?ztw\o#Ef9dM,&{̍|-8x'# lw=2A8^Cޯd}/: f}o GlBpp&M<;{o:8)!1AQaq@0 ?FuWL8O2P*82a W)7%*ntb^)N&:8.%SQhj(G yfS{ŰӸA "M\+.0|T" O5dip4R}-b;rJ @oYS}ORcP`Xcb EhɈ8Eu)qlV1|EgoO^bYן 1&5e FmB~ 0PqnF/gO:fRJ*T@Īav(hJ"ݮX͌PhW $g`/ BUh0Q+CzXawCX*X6cFc82xaS/j$% &R_9]Tc?% k+ w䦥P3`L`-4+2.Mw ĩRJ*TRAjl$R3Z͇QyW`*5wyֽ@TLp!T7m :֥+~#-K]Ru ib"݆>xsn,Yr_`&ۭh≧?=8s[^r|X&݄G:Mqc๵ܼF;x:q@f ZZ--28ߚ龸Ĺ`fd/@E]A W؏>yH iL uhc [}bx=l-NZ1Rܺ] S2cAP:ZWu5!]0kf<4֜I7W 5eRcva@y1CO>w`U ^G ښWqeSYӓ ZZs]Qc+o7Xa[/XBf si5r)))*(>4liۿV6<P .WT׊%ik|۸X]nת%Zz")2eߛED4ψ gXxJ{أUy8/.Ɛ8"+:%ı.SsKRZrRU f@uIJ_/?9 ne r[MLIsge^_p RRֹC[bO*Y_0!R(r.'g*6sQ12!{zJOqpr>K`U3OؘbٚՊ-='Q.s-rÔt>"0'kyN ]V>]Woᶇ%oű|:R!jzf AK%u*36Yn;Fn=aYH GSq.3[4+?uGgE5ij*iG *ٛ _e c_qi x҈ @lQ|tAEMklY@4Y%xZ/;؃]}KV]\z"ުbo#U }Ds]PW"s9q:N, @X[pKz1[ FYt,kJ;d2EiA g9OAbWK0>ahdngdijK5-| /9z9".>F x4u9AP:ib b|# xYU# Aiϣ̭i<|S46k&鉪67^8>W K:"* z"TUĄa"`+JS̻IK;ro 9iyy`9VT2ί46'rdrL^;D#R`Np.hiDͬh|%(й#f6!H+v&u+~q"߮㴴Z*EBmR(ZS[4YTZ#Se>Eczz(NmTSDl`` 2`qU|Kے_'1Ӆqc%j YrwԹќ5y}L%WgĤ3 aC"iKy' 7Et`$ Ԗ) OR.bfj,x6C%忢(Vo._068}wuF1dq18G؄@0bcE8'.[E^ڥǩ`UN棍ohڿRUyj=-usp4%+i2-gnyxn{CApd([%^, +kO{@vf;QQr~ Fi^AKBIroIxm4h!\#eS^{_VU6Ք/_ijNž8WǩtJo_5 `:0 V:cW5ۈ `06/ٳ]F9pIGz]xlhA_fXበ bTUZ ~*3u#tUAWAXfeN3 [Z KkqB]Իk0O߼;P {:7z-Z8qđJ/BFC ^:eؾD81~&%s/_X%jnXpE|%pKVP? Ѫ|L^ _Ը"#n`.X,W^e1 +Lp1īs^c8sEzB 0 `UDcC*]ih ܫ`" S `ajEVayNWq.M|3&"d250F\$fc/$hwRHlvEm9އگߘAt*hLun8?Uo} Gh7DNZ`+,Ky'yF?d"49f' *4[umqM;ykTm^k_cN5_g^Π6s0V\DVk)ͣ"<4nX +@\2ԧPҖj0]2P02-)F|x5yHrU8Xb;!YY0ōdFr ^DY9,n]YTdKXd 8? \' f&QbX8+Id*0tz[YvfVjY@8e tWN320L}zrU-?PbS^!`U{ :])p *n~fw)%}t1VSmkV~e Zئ5%/+FdQ5!.0-wUOpPFd]Dh(8"S3& *Dڪ#eqr:E)CXr nhڭ43 ĊDPaMˈǸuhsQ!-VN -~Ԡ{)!ue4QB@ω+ JőVw1EVj[e- |hMlqu\El+5 YjӽK$hՋys( PM{<2}׭EK oz8*ī T,1XUĠ[ڋt zK Z_ʈTZrVƤ2BV7_1k8<=P[(& )z!lG&"ؤ)Q,'qh*ۨ[/[̥i`-ݾv1u3 v 6>s5)U0u\mk"(ѩNV"Mֳ&eL+]2R2n]=ܪmaI9 "[s5uIwi )i}D9Yװ"mJߵ>*= PtLU{ӥ`|CH)'%d|D<S'"PxR!;"G rG"`C<=)TG } U͠0s]6bUQE0qkb#Q8kY2lٵhZ> 0;# CDxb׍&Vs5Η{T9c Ƀj=:f;빑ppU~( o:rhj7&K(B̓ߙB^T#ƹ y7RBY3O^Q̠ O <ۙ(Q+e*_ܯlZuB|E.PPw1M5I$Pp7 ` <_ T>m]p*ÀPcV\-_h( '4 :f[ lUǙv6\$£@n̪QT.pi&)[VkdŊC- );bl5 E~U.b]*]0ڵ)t0Kr;`n&} ՝r\HbZ2JZEpn,| q"͞+"j\ClV$-[fEF)6Rtt؆ހ9 JM>!0:y,+JOzjBst(O$qt\TAl Ns!iQ̣1"hWA.`%nf!w0\|˕Wv>@'oY=X #빸p7-~qP!ŋ.Qm`n؏:ܯj]AZ,H a2h`1b<[jXH nB~ `ED* 7IZJ_!6@`N2cg5M5›#gk3@pT,T/moQ n ?Wܸ,N}gॿ/\DXK,L6ciO$̫kEFYƽq ` ja-&7٦Ȍ`!cs]&mXp!IR5A5Am4 -G{|LٍX@R+H9c˷!|՜r_VXUt&AIG艰ڼ B`~a49,qB5窨ET(6(&gr|ʐ& 7WƯĩL_3?5VhԬ^xN^:'*Z0=&JԷu*%_In\1,bҽF`#wW] ƠXE9M"l*B\]aXpeuD;CPUn[ȫjВ%cQ_[|,ofQ޷]ʏnؠ!0y_ u7x YvS[y-$n)ZЇ{uw)}v)g˘n^.$zV FQᄁ亀=n)TsԈS ٢Xa9+&KLeD.,f _uAV g01y # S\0h5jKx! ,IU}cfp=S ޹aՎǪ;A9UY[fV*v65FpU>8AgXƲzxpĸ`ӜzK-8t]>N .qy^s)َi& !*#xϧ卦ѷ⪅ҟ2rCR!0{^) hs,~eAxR!TNYsH@lEa9% 6ˍL@ o4쬭?YVL,<X/Pr,:| V^U<Jv?3] 5 \'Fbv~ K'"muO< +QGXKn &آ3f>ܤ0 tq˟3%eu4f@A+B dp 8#L6e:TL:>+̨$ !G_\ &AImk%s1YIM2"Q7lAeC <g !6é: &僅8E!x3GT倶fF$wVhs iV,3ޠ$u@t?H] ~넶9`TTQ7eg%~)@eȵ>n#٥;V3b,rrRcϘrzQQٶRp$\ . =?Ĥ-0i^X)o/l\DU}*7xsZ*OXb Eǃԣh(jJ4Xi e!`?jquery-ui-1.12.1/demos/droppable/images/high_tatras2.jpg000066400000000000000000000620231276627555100231560ustar00rootroot00000000000000JFIFHHC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ! ΀k` wWf}Q)ś\hmE:YmTO=\h#F\ii%zCƈڠ4_ ̼;F6Mr njD|cEãa;rӂ\|u8\ @QsPӑ۶911EDrLi\#pz\V;O{s<7^rۘ%QJKIdw%80jE[wN{LG|(=N_P|v%8uw J-Ɠ(9FFsgz0 =0dJ!- )/ SMOykƗ(S;qVKUIu>f„ J:G؇=Ϭyxg^ ~}BAg}@ɮ-NJ(2BzlƎů elmŋ͍ ͩwrhO&WEa.Ʃbh&zܲ"z|vMEN&%ƻL9vev^%iИ42zt'ph+L(պTkI'.sҳq^pϖ~m}Ey 5Zzũ\2]蕯Z07g3GM[=tYu8cԕ͆g|g/]=.-f>?' mSF GwžآT(se^Θwn~Ԇ4ѫ&kUm[zفf̨!g)6ڤbs>Zm|,1|iLu`i;;wr :̞Ż*mmU˕3.Lƍ%K8yv٧5omt2z8b1IG%{Ƒa浳-.2 Vフ֔fѳɡl1} ZeϟXbARQt4N*睴+3Q[6!Rvbi~ifsю‡q[t|y(y.Pw5·L3UN̓k222Ф1}֦DTm\ځCvTm-Tq8= eZ4~6{ ;Gz8ӝzwБS&͸th jwR=Tfj8_W<)gS-;pէ&uw8fLY oMkXE)#%mGfT&f^:7m^ c챟3.sS-ֱnS.ukcNGB~idzVR^dF~dT2"mv:ΣJЯbuFZ3d)nez\wQCB=ђVND+!"1 02A#3B4$CD.R-b MƦYZ厡6RZ|}OwU}`O1^X1DcC>>:jx2zk ՕsP 9@)R'La S v3lLyy*X86K_~$-{\fPcaAVm?P&<rWy) kzx;fq1 UMKo{'"ƻO(TG=a[UnccgOġEL2)Df̣&_,2oc3&|Ι+;@klưMr k`5X*%6i?~aOT_}e7\+IXN-Տ&2`i_Y[u7gMr s^KOyљӶ.vԀ aEżbW]\42SR*da(sBA#R+^cpG~I3⮙lUӏK\ -\ta:eSQ"ïPճ 56%m 0bfgoOIHj:agNSr5ҺP% p tRpw`dQ jƅBk+{P7+y*A6%0t}??]eWjj,\%L6pWTC6l0溬vN웜YfX֦Unx*i3uĬyVg0 #Ҋ=:UPk+$'? &kIEO!jY fֱ<&S3zzx߿ڍVmz/ETfgtF{s b%:<!ʘ0z{%huKK+MivUô9.+zȳ6 yt:VJ",8 ~_ H.1LKݮ-mobQr^[b uot$ka{B@y.`8Ubj} kvEU{,蕘tjn:NF.q6GZ XLpʿvEP#Zt XX_*Y%}$(D!SjJA$<ū]ejy#ͫ7͓s/c"6NjU 貲'+{VeIFyH܈G>Y-c?BЎȣ"C(&M;v/tBxEz/({;gU,X_L&% x+z隆'DNϤؗq/ULxx#!YelRmOi(N"bc4'{%*;};J%mR-+?"\XXxbR:'(IHbC(NՙIGs?J?NJ:6bW?y9%ώID8\,J-^tXel['v9R? )> B%Q$%K3'Ȫhŋd'6ZHV'#.)f>:ME g YymK!(dc. [>IPdLxlQQ佋3y<]iwDخi8i#G15 䣣Y rd mHoE(lk6E}~5!1"AQa2q 0@3BRbr#?+rLLQOBy.gѦ'V8&-HG^3XK\l,P|K&asJ׹rD),>+l؊Јr~!7SnɕSQcY?r,vGʽ>dj|8$i&=|j!)g I"J?EO^TEIȦE#mܘ1A.ҤmzGصQje;S);iV9ѢDtE'+RJxsW/_ T mr(JµzGRoO_7ȳ'}w?o_u'tHȪvLI3ɣ SMO2r/*Fn\gC?7&|"`?ӅܿH UʥM8}Kw] kΓ7#=#e?QTCy3fVЗN8X.zO9?JS'))}ror!mL-廚I*~bhLTs7%J\dSdDIHYjY2"̳2IH$`!=uJc%?f7w]K̖ɒ/Y-%*=Lnфt8xj܉^K1SȽ;A q.|ފm[[iشQNq|n J̆UYfEHM)?AU-J0[=44y:vRZ>L(+wnD^MfJpFۙ;CÚK"2JO!cH"*#l(uP:jp^Rpp|CW76bܪ2[#)LȩTJlUE0*D-?r)/\.t'ĮR&j-RwQI?1.nE|E?r{z4KDN2Crm'du԰7:M-iԽ%G΄蹲).w$r'v*y=.X"!nՇm뢼0dzر'!1AQaq ?!ܯA"pa#YpɑX_!k,$r/׏KWSMzeFG7H@e[K#TaK܋=]UBl,g09]>}LnsKsM@'^"rE9==8@"8\dH9tiGl};`T^6MhchQgN8_'Sl%f;s^u EM )yc>ōВlGy&]NH'qtΣ Y[S,p¹A({!}MzA'D}]Ls.Ȳ[nҦކ(x _c  PWPIE9M= CKڴ@:HF!"oL\jkЎU*Q(u୫ 'wUB{*ʩp#ͺ VD˚Js<:*y&d-!ݸXŻq?QcLMiM,טWDRsX%\׿LJBx0ϧ24zL) `ua0*>&PnO=^V !U>ȯC%.KJh`Ñjp_ g_O*ΦvVa˖\Lj` ͩ(a]ˋ_*`aqrc`30f'~VQxj h/ 4pޖٷ ,9ۨ%eqxIT QY [gT_O') nDph 9wqd38 T2Ae߈>ofFY.1h~c2@٤V~"،w [)*c{DJg Z5XsAq‡dS<a5R^#PXvX cJ#7 UM}M<=Fȼ%r &-9Bk o_q5|݇} os8E@v"nU9;WqPvK(@ UkʚGĥSLZT<.nxA-s›LA b- |Lf8<ǔ'P+2lĕ2q$/t{J3M|qmad" 25n+ ḺuW)9V7E VtK, KۅR܊+Di*.h3\\7T{H~"xPS.F0}jZSMQ6TtO}*2HjQ•XS!6iz*@п'5dqQ /4H>.AO뙓t`(%^?iѢs+i.-8F=, OwGT0$%"ˑdy*nIz~+:߹I9K0DXtutq3s/q -DII!CɦUB.|4Q}J~`Z"<9]5 ߼zdq==.冮"Q Nwdx!θiA6Wy<9 e3=[ÈrEʎhҫ`ֽgp7qG_*E2}KV%\21UY}@E̾RVDCK=(f\/Vyh)Ry F+?VQ5.dsTw+RxnTw7q +)F9#ZP< he'F&>NJ0*ZVS3Ht&J2Q/S=-ETq63D* K E*ڧQ8 ꥟UVcA}bqMKSz68gTAU5U Xf`Z.]hLu*KhQoڟ$YDk1HyH3LH1jB)8JcUјW"WQ.~v{ӛ(A\@79-..hUlIZƾ=.Cww;J[H*ɸ0"7Sg bʸ٢ P6RSZqrLar,pīYAq;"bg_.W4)xf01(w, q7]? x;О%Tk0^~E.F:.p͟2Zeȏ"\D+BVMgJ(%]r/4hF.*y!,0'5ɧ0 (;g把[5bЮ|Gkg$|1si@OJ`?E!AR^/sf~ b\?"M-9B%ͻxK H (! S\t@0ipX[KnN!+KW)崛ԩt]MAn9:2 WͯY̭Ys A+`raH|1,E ~5s$]& p9LiT{Pzk eᗴ_3;pSD)KܲD懈e2q~5  M M)Q!fc=4SYeZد Sf_RƱ'+jvKA-f||$вOH1v2}MDA)Ws-G>eMV8'yE;jWvD"\"Tg9%|o25qCpj7V);1rp(k1mAd?ZUap) 'kL% o N]T0GMQޘ$g=pAXymJjwK;Gb*.a}u b1\#;IZ΁g>X?ߘ y˂^ (ᮺ.-/~.dkq<.0t T;f >UoiJw 6hϕTyaU^l.D<(1 ZjFSV$ sG qԥwGJ^(L41CK%U#ޅx&ʥq4f鄾G}A GNT12yJ^KBpXrJ1j?D5~JJz"đ0a(`T^y?2Am4W,F"3OnT+Z8wEVj9*QԽk j6l(ث=`5}\6WS1;bƭyD=%"MLbs*`m]Eaj/ Ϥ̀~5g 2+D|mLw-Wľ5k ,&g kX&0#I-_.P;Gs.K}j-AD<bW$)DDhVIG4s[}S%l/{|V08W+@ ]cYy|K2sBԫpL5 Jo1c]QD \ÖP7 /\̣ ='BJr2rԪgg3 oL-19 Uj! .YY2x7'{Rq,[7=^(1VϺ7C?νOt2-PbK'sW]z QoJWgs4W[Kx٘ cCas|$(<6K!7j IJ©kf}~bzmbf3Bݎ@w*9I 2&yR S*NfC41sנHsK(U69 fLX-CZE6rG':!NI"YAjLrILg#nT֙P `v2/ ȨZ6OvA%7~&'#ď "o'A|1|O?`'#77h[-'loYoC>(6vS6[#J~r\X~Dc=dG̓?% "}\lB"^ cݿn_,26nCa{8C^}.%dKvkga!XG#I1`YNzV_:ߑϛl,t̸2NΜuYtp#<{/|#FY<ncKmoA9գ7H H9 2qϗ]ٺ@Y&HGf?-}9oiI\;n2-F7lH6,ggCwPKOVF:N19gANfr߂Be'fݗ)/ 2~'#C# ςݯlxl.Ϝu=O˖C~笟E6eBzM`zߩ($97-lL/8KrzFls>Zum)[mX 'зH<vd? {"?޷^oȍ]7$O`!6r!,am>9{-.Zݐ{ iE ^_8]^$o6Ye-=8I˅mJ|yw\WBnlXo3V_=j7?7_ mf_8.l|Z(q|qbqr/7t0G(.lŐ}//al{/m -,6̛~YN $ .<},͓y-Wˎq<~?7/xla-eS+^^oWD:dˡb_ `˦GgZ l)/XL:lc̀_<˜ ? ɖO~oE/[`/ ~/2"SzyDPaPcחȔO4y &Xs1OeAnPb6\JO9{9v!AٮS^w(&=bY<_X$VW󃎦*ݡvHe: 7Qtes0[@ˀKTbE;Y&kzʐzMbwGN wL{<ΰF}Va85be؀8;ΦCo7f5Au"y= ʨU~5r=>*IEKz-&x엙_ hY8E1j>3jLD?wX' _Y!ںp;*}5p6=FL/Oxa+yb3 :Ř@ܞ-Օr5WS5tֱ :n]2v 6aZe?Go@g T~2T^"-]Itj`|yxN2̟׉)g+dk6`$¼jJ$7 W38sq472Ϧ67@60GN÷ɄQa4p?;a R{.D\'FF+S5e ;$#"L^׼K1x`eƞMTT돜FW`J&u7Ts6-P>yc㞰D~y`+?x1ROfѽZyކHVzq!FNQ\J +..kA=q^({H^&8X-5gڃӈD]88l{;ċ 1iiCbok/`:;` WQ~9{ŠGHg~c!HX D/3VE71 0j~K <v\4~qV$@.NHɈZ'lb]̈r{y‘z.$<!av>n''߄7(gc5&{ ~NgY#0 Q 煌~f"!rβMsk>-/<5۷GB uMq1o<ޣE𫪈ζkG_p 3?xAhP1ga!^ۆ Rxj sMZ{[Ii Œvzĥb(sroaȶ~2cO&@okE܄ Ϝ=ifؑ#M #[c샤B""e Jtp؄ =^JĊ(IG9@"+T򿌫4׷:pX iT<}|zbcQyX&PAvفA:LIeWZ5&|Htdi3fc.+ 6bӂyaq6muqNLn?=c!8q0Lrh8r3Jsu, $BLJgt>Vi;pW3vhZfw*Gُ*:ŝc#޽'E Q~mЛY &q]A}̴A46f?"8ۻ_0,[n4v{󔵾\AKXhk 6f)zr* (vzbe $sp)MM#:l։ÑW>/>2!{ {ǰ'G CI36{+QMxnh]YTrKGBoѓh=ytqxnƬhj0h<9$oAl ^Qw.;#/ԇ`6c`/ dmi@&'2{HPJ]ٕJT(PH8,&y\ &fu('5ju86P4z0 6sR79ڸ߇*ޟ-n'LB(-a (Mи' xbuT WP (EGxqiupA6%V xր9)os"mb^|x_dȚS;\.p.0mѽ"ACgٿYȂYA&We{rp=p4X׺U*h&ё1#:U8%?1yjUkOC}|*03jPȘ(0֢{I0yZ d  jDx}ark~>p18lB84֜<_ȗxHy6RQu>9N81$HUpAִt|7 (Ji 2?9+ x6 E~$L4Eo[ٯXo(q HޜTm]9e> Fp+Es26k.B|Mw$Nhjμ(gK\4]FaD~p{A|$"2hB кw!\>[$(|7,>Qu%`!/ **\Mą 16O?yT } s.VrpI3r DEʢxF߬$TۯO (~8gtW*;*媵x4@1 4Ǖ C;d"nԔTs=piPe.o!te!@aAܿ/8EBTtWOcDUx<~KLS_<- s1 8*sOJ+9ew/{MWFtW@eHX&UZoJn;aٛh.ʤH8?3AՒSq:Y>3@tRtqe$0sxxeoۍbxp8$xŤo;6_ /n?bR2ۖxAx1:D.>RJDȢ*A6fSbj'3ٵ10j94د<1i/& V"NHD _\D@'70aMXһ/ lB|sq悞Q}h7 kMo[ zx߰‘:[saCSX; "x3]5@"p߼2,tyR9{QA XpTpx mߜ1͓k)K[I@嗌M# sfkÀH1*~{bJOuYS֘j0A8< |b G>?°`f}⌳/O.!Sf0lH]ѣopp.l+m8wTڕ}$)RNK5HLWXR Fް fIVр̋)vԙlx$ ;'"h6_c]}pH;O+ Dm9(I^W!B$mP&$z -A01. ~ؤXމi oWhM7ـ1Go}8F:B\Eu:@W.8:@!{=} ]'| 4':FCN5*P~<K˓fSS0AWYһ{Në&ynq#ebbF2.baɀE~&>]x?ㅽn,~::4[󖚬sJő/*ǥ Hf*qPOmy<#pD'! %iboxZu3 L.㜳I`x5t:D2a/3Zc~x ޳eMs/€-։ոtCjyk3W`` N>;(r=hHB=`@ vsIMs-0[.!*&c+q`|8Ɂ> cD&D98Ce11 oO7*e;70rҧ[~h K-9 e]^y(׈3dԺ~eOvD:ccPaa+=9*v ~zLH&bSP8B ʡp{0CyYRk{ )K3(/L6ˏTGQVlQXvp ,\9*suûεָcegnyw󓰴9OS<㣞BV5 0w6zw@^e܅5>PB=&`8cBg~=aRu.[5> Wy Q^ָsq@$xv6?+.teΠc"}W%,D}Sh/?z!HdÉ#N<*/37tU7WfjcV/ Xƿ9 1jf5b*EOm[̹@Cً+hX±rx-('4R]v70V(FP"{ ,FIGI7{=]||Y - F׹I̓*E2%&lr˪i{]-$f94~ </P'.;{~qHo͹o X::L]Ϡ =b9E-<St? ko㚡qɂaLw(iѳ#8O!8~rq+0f | c^ʺ%޷ `*<>٦I_n'3[;ib>pd #z-%qYb-z9 /oND=Lt! ًP">zq"s9'fmϗ4"Ey,9qg|o~~d08|c`]K]Od h9gtUwxd(h 2v$'ܹ2X9ðhJ(l1ٍq]v/2&ףUW-:t+q`"8w0>w͏Lpf)w+ +j{N*c|p.UQ._XZNLנD8G. !4]1!UD뤚m0dK{XAWgae?|nHu)OlK7m>q */5E{8x n\" wqG1#aCzG-SxM㈆. ؚO>0x6j A8AH77ɑk]012ǃ &BU:\s\ht}^/G7 8W; L.di( Iibi^yDz|55 My"KJe|- =8"sׁW˄X71%C 񊛠_;d.Am9^? ")(WgXoSƗnODk mXuNӀnyG~zP0@7ǞNpAM%]H+ bM76[JGyIm$_o5.zUr" +92+1K2v^ANAC8%+~?xta?xX~ζ=X3 Ldm~?xn9<'~h') pHG>#t'*ѻXS忬/+C5Rg#YȒ4q .χ7üiC"YNȼX-ǹpK0ٱ?ʆsvb!^v$a8Bv}hqPmzu3qʍOkjquery-ui-1.12.1/demos/droppable/images/high_tatras2_min.jpg000066400000000000000000000041641276627555100240230ustar00rootroot00000000000000JFIFHHC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH`!0!1A"Qa#2qBR"!1AQ2aq ?Ұ_(m_WB}x{+vs5וrqJ.-a,@$]y\CVn .%HB(HChRRK{YsG?za^$F+CdYwn>ʦfO $Nu9xUHY\~V98wZ608d!zQG|0ǫ\ԓ<_\,*1ǫEY0.p?J{ekw+2Z'TpefBn3Rv7d^a~*I܁cm)SuasH,;>ծȅ 3DPcbqɦO`FA 9̀j%psAܧYΆlIck\BT<[-k8nAL}u?5I1#WXoѸ|H(B9j꣟eQHmm'zaS2Hۚ|IK)pG}Q #rs+\fFU0X}ji Xҵ8&6WbV(C5_M#-&"0v(GYgiLDS'S)DFݝozح5k?FeB{|Pn-.=UV,@C2ɑ?J%a,~Y?>%[;F)Vm9;c*5L>BxKH2qGST$/ݞOTmt> ^B@.8; Ǘ4`fve.hsp}SI|ϧK+aW{\sϴO,>Cؠ ㌒Hکiq%_60{TV%m?&/hW:]ĺaFj}\ bʇ:<%ڳhO :X(SAK!'3UQO8Aގ?u;p"|6JN (FpkR>}ޞCW(4$S U\Jk5JdQLrg;fnyZUJТi59lQݬyTފJ荠|,F7+eūFZs|:OI3z+: D h~o\Z8Ŝ)G%ҡyD(ITSI1GiPR$aʌV^14hlվˋgt+^z%;4+(i#١AP [WWq:RqfUal:Rh[ 2B j fmKRRoy,q ;urcɱXze*LS X'mNwuH2K}Ui,*8$Ub怹/͙jK "+Ӵɗ2I&L)tKh$Jj'0q&yuSJYfڽ-cZֿ:捙Z2blD{4MoNWZF@`՛F9(S=.|g)nj}ZPЙzS)NH²+!6Q}:5feny1mZͫ=YH!^'q,o!<@JwB|c}9jR9gGȌa5LqN: cڼFiz- .e,6ӓэ0h+ 2ϭfJ73#R\"i֗<nr_gL'M , p;Eivߟ9֚cK$gp+WYHZ[i? tp ~=L݉ ӟ$5',JKSLjvQ3F+9Mq9l޽G6)mJgX=}{1HfB0 $RPt۟oQuD͏cN| [BI2 LE̠]Z(N.uI%bNtr0LIi#=*-mSZ<>Kvtv.T|YEJn%eKUz7D2#L^)H0Ƹĉ#'u(>pO;WJ7b/ZQRjJ_7$HcݙH@yͮz4MljAzҰ|f,RTo-V,ـQ0mK銝+*YM$H-Aaliϝ(Iwrιd-Rf&0&4S٫92ky4Ȍ)WLw3ee)EɍY/mZD (!"12A #@B04{ ` -T*S.*"W(I8zTyF}a25ֵۋOV7xi nTGlpx.j+q}{!>k5"/ƽ>s>S'3i~&N/#+P;MoiQLgp0c˹4]{i9 Er+~X)R?(A =Fhzza%­i"؈ϰm.4#r%FfG&a/ hO;d6jD qDX`a.`| P(J{_AB"K Cz Ԏa$Oq-@@h0N4ODK:eb_B+*`}2]N> Z/Ʌ/[ba*epyMyjE^+K X 5肛Z͍1-<1C[\RD==Vn`$Xͅ,rKXtY+.\j 5 CJ-;u9Ròo lR 2O]A1 vcM~T9:|T1 ,"|Ve\ 'V޲+^L,N7xsV ^V`!EP4*0k,-GJ>aف@DmB,Aa֍L_"!tLKѠ=1Ńc3mZ%™ qZr+#S* .!)f(S C bD/OQp!B*3jXCX? J_.oS'*le`cGЃ2-}T«|O}b{C9,%'Zh*\)&vʰl'fHlYTqy Կ?s7|_={Bg`U"eƋsuԣxS9g'pByߝ!~v3fz\pahxLT#ؽ7gR+G&1-+FxNF*@&GT{K/̫G'(p'P,i4ŏ@AÈO+Vdfx؄"K z*5 @nB\K.peE0yJ-1~6Hߏ]Uq'ZY2Pn!(X09=N6.L\[Lְ'"_p'j`-=o(EZp41n==C[|D-ُT*'h@rl"}J>vn Ms>P_YJ>gi&P/&]eTc鮌 Ģ'<4+q X*0'FH=cC#پGYF+6F\ٚ4X8ȪAcT"lGToUjW5+.|FۛouWJ1 MYeL b\\"0 @!1APap?ckYxhMQ CnCl"A(tgx*tnh@pq%(ES5@& f _y5Fu aG6XO P1% 01!A@a23Q?\^bw>>,pPg,E1?J=ct,qGe#be\='EbkZ֪ZP͕>Ҋ/^2PQz6v" Qҋ϶ҡr8jno1y*h P25BZtYZℎYpq;1š+[Q+3>p!4vVeNéovcٓo8 -1t4.!qE kɟb~+Qb̻F]y/~xee ..}mGemc*~QJQRr Kzħ1pPzgFB0!1A "Qaq02@BR3?ս3+CED%RhgKbSky͗w30(w/(ܙ=N(j.-ܶ d~ Rfܗ"!\Z]1,OJJ}Hni?dϽ#R\?)`Թvis&qN(b7p$~M=?ܰܽ'sԻĝD}/%";z]*M?K-׉'"D&].▫Ú\>&yJ|TRsLd峭mHj\bCW, R|ґ*9Xd1K:[2ϸv-TjNS7.Θ#T-c GqԓzІ6>ئ |14u+7##Q+X1YlYl'O 䑭^Itǹv._7kt#q\-CNɚe8T<4,n 7Ů. | 2^feoLQO%56y:Qܱ^D<" "X&"Kn7?LgGFIȃ6,ŧR&+4SԤ.=w;3) v0Yf m?3)ht}0lV/sMm)sZLz䉒H%m9;c?; M=)wȑOsX;riD} ,͋Lnb& [M:=JW.j,KL3IZe6#Jެ &֕918[e5R%HJdtJ/sXDRy,8^,_VXg:t^i-WBû-fft!ZfL44شyMqIx/z.OJ*`TB{iPR>&)SE-`kS>ɎQ)Wr "NJq$CQ{K:D$ZIhK#4ܖHdA= <nj|)ViǓ%/%3ra_562En@'R B,jҢ 33m8Z6 Nbi\2]fLrD/'cNX2zՉ߻vZt؍ӃK$q_#83LxڊD*OqR0sױ :tF$Syd}M{٧^a.v^v*K==:FՐ2Yv3O5"ۗ_-ɞK6:%=.un)si<'*j۞XLti0˖OV?.CçjJ_y0l]޻$B/KQ:`Y1OQI7,]ߖH-"dOsσ=2]KR6/bTܰ2ڐסtKD[ddRru2DQK1b2i֤EdM/UE)!1AQaq @0?! _ث? nĮ|b.[N]u? <P:h55p%"fk陮r:"2rs0c~ LWyg,=xeY:\Җ߰J؝T5( SMkP3uB|g? T^)s-^L1 +Gԝ{Nr yʖP{e'q*20yD Xsf"hiJ #^8NI*i2|(;8~⠇.ʎc;ʮ7Ami[1_p5BSdE >C2&X0z*bo hb뙶a)AK &­X} ]W'0)]Sk˲DqR =dy+>?l2 vfU{\6Q|ZFh{So)qWls}qYoz3a^o@︉eKЍ*}QA>[AIV{pGE'% ZT(;b/ Rκ@0O:%_,(AwA ORieY Zr̡łb? m0VcMaQJ'ob@`߰ALe\?1DSZK/dPCf_s&VHLsNe bޫ#`Plkr:"#OL`VV/rը)EꥵA\CX7|J2,`μEep>`z>DzMrb 0SY *yKRNYt,o17r"+GSYkA^M*R+hrFnr<QQAɴ[nˈa +oւ-ivEnc PY@L9횲VjeUp+[5G<` *Ύ|(nA ҥlwp'JAʳ h^CܥE *cxULܺ Waݒ+H0 <-V[S2)jPBR[u2dzqڔ]JC*ƀZĵ\F.a<8L ˨uX; ̀f- u)%4{gÀp%Y,Јk2/:sW1!y7PQ,ĽUE¸vT VTJ_HqXn+Q:XPi9f=TVRNvGU`(:>e^ggŮs;oy" 1v\k9^Wk"6g>*cJWwŌu1#Vm찋s73W6*、[}e<4Ӧn6JrsJe2{Bʨ*R(pKa5W9\^ظSq+)k:T?b7˪͜¦̡]K8pJcQamt4qa`aE>jbZI(Z!N eȀ(g#HQ^oDubQʋ@ږnc.Yj]]WVsq'EiYXqD(\*@l`+"LK8Kr&wa%.<1C<-])Q,\Uٸhf% ;|$?K #,YQ䍚5Gpp0KW3b.w2oRWFk:,o Mէ( kO3g,GN78 TEbb+w,?2k#unSc6J쮩}1;&?/-6M Ԡ`8oJ2ɉYgFj˓$pE[m]2Tڿ\KZ?#ōd })M5TK3IY~%` EVn|䴏oVN]e|QK{Zl_u|J;uC?63!Zԩ?Q8h՘#)Yd91:iVp¶hq\j j+a}!v?Rͯ,G#[bW^)9f+ڇ˨&"ưun@r+ N9M~cHQg'p?юor#(T_XVoN8M=je/,n\(%ʞ!EN&c_&Jajpfu vgJh1eJ5Qu-H k /Xknq/,4Rj6u<1q,|Lt˕34^َQyJ7'Uf}?+2Qҏ;ŷ3 k]R`l[Ը( {.{x#]krj-y`TU_y*n)|J_Xipl^.a5l6RW@moT}p WQ"C»moR+wq}/p.~%7Q bcܷrXD L`_;^PŲapkaĢd䆬cQ(W*b7<͉z~ q&-7:*%`WuluGvKf, ]4 W|GCeW9jh8Ek=T_-4w,A|JbtA̪yK2[Z,|K)qsI i,ЁCj< "ZӸQgS_ Y瘟lq ln~`.GәaԳe/;Yw.dω0wiF7+s?,3AXS 9>%%N/k9`& ]kš:V, BAmeRWvReM>V'9B}\E]8ao^aFYXb4o*o]*U6IA[3P(aRj5q_r:1 bs?,1.NxKn]/NL6"T*,yN="XЃSf%Z\W-1qnW"'j% 0+`q,-sN8Lc}b0J}%LX}@+طw׈`M2BSqlarbUWkj+]fA Jbfc>%*B7a]KO"/P-*n1Mz'Q9m?Qf4KPo,8fQ >S!i+|-n6uԩq-!.ͶZxxJBð3Iܠ|!sq ,ogȣG4 m_XiJm%YwU\Cˉ+g#6rK2cpyEA, ˄W@ L ]B 6T^^P PLE,LbaV,"o)uW-+B<,W/ƂᇽJٟ `RRqSLc} ϲPLqU(کMb@,M]VU.26qZ.kOL SlV18.,_L8Uk[̖&Q+n1ݴ{+78`vbb0q5E 5; JH~FtfxiU\FKW(iT i 7;pER4S v\ ̱-dLÇ@x S>E4cq|jد3G78}f$(hf|MVD-|le'ss!I:IJrSq+Csԃ25mɗuUӲ_6ΝgS ˶wC/ AlqbiA¶s5\Uޥch5J3{q/cxCd=pA EՒdWp l+|8ATqx/u/HLJeF\9zz0 "ʆqKi%P2Vep}Kjt#ڽJS$huJSsrhǨG=@W%>GaVaU D37^5;kQ#GnVʯ"wr~"ihxbmP&8) 7S ~sƕv7>9]ګ9 lx UX/0P3PUێL u*7cGPoG#`/oS.sL v1+epm\K4*mX%P&lb%kr6{ `f)M^1UaRux.25xNк]G"wt<-~c]4|~24/U) BfcEK[OlB+lF SL] r@. .TʀLw*mM ̳y^(xƠ S#әR&UW9Zab#p!]!ot'1Q ݧő*?w\NF#?\*g.; ^/ ICN]\ `\~h9G?} bu/Q&M*Z-st @z9 EmԄǀ^~f6АC"`1V!ws8} 6Q|:.i ~?OD0 L"TdTr I:ㄞN8Kw/lU{4IrARav'7)5;L8'HAYܸ)0q$7S75+0&.Aٰ..Dᙺ {<)OIOU &\WPh.('b!zOC& A9AbbD!\_G(Bv5C<[,YPĵek` ⵍb 18]z4D_ E[6A~)k$LZ7Z>@NYO DC^(Rk,Q ,˲dSw)~J NP|_RBeҹ } 1(d'O-ǗwI5=; _ݗ.*CNakg8ApZ͂I#lA{Ev,Xq(N\GҞm%& ybD߄zwgcv'P1d;c ξ% sx=ToO {;='eEtHR1p|!1AQ 0aq?I)/g:;OmM?OA.r\|,svgV;"YXoK,(B}A'189$2u%継4`dѐC1Ld24Je/'?>K˼ o?)Kt8%|/rv;9!̆y-e!y&>Ƥk |e3H>7ݒGL/aAñ{Ζv;=e!+~2Xre|ed?[vYB&cf 8Besgۖt nCScyߙg,A?8l'n# υ:dm)o?7|xy>g~|t`-8Bm]~ee.D2BoFi'&2Ą{%m_܄Xu$ۄsǧάu6u3)jߙ&X5geفfs #2W u*bxXo'N0C=zPl_s|!1v}O"Ou,~Y+x6 NǙ&vχd|2 O-O[><#Dcٳ2?1m^ ϟrb6sϡYfA߃0Y`N`dϛ밃&<>mL%~7C~)C08<>WBE }+X#G w5BL2dɓ&L1111111 ]B%+Wk:}a '!S5GCU)9|g .!j~]@Bp[}5BӭYi/|sp)1XSWh&L2dɓ&LLLLLLnPj 4:q3x&ˌmucU" wxbsx Ǐ0蒸Њ¼kX`U0F!bz΍L>./1I!₟ydkL:l"9 "M'qDpR'6RLTЅc#:Āe009w'!y"NaA> [1|ɓ&L2dɉ|(&m/eR@A[^Me}(=-pϭx:3SIx%3xP@ٿxS0zV:p('Ӄ{Ty/%CXx0k ?P ~H;(4kR9a OiEJn*y |$=OYN:#E FML)ju}8b? )2nEr Ѯ 8Tt|1;s0Ȁyх"bTٳ4BԌcn"{>p0+s5PxɓRGa\z.,S90e흾s^V)ہQ5 Vh>FϷLa@ Oy2z:}沖 1dRLOoxdÿy<:t P u5Ap*F/;Q&\GrRi_FU ;of3IDq12{v q-C|-Ӱ>ydU6T}ܢH-(:a/xe(MqzX|lxMi cx+fqD#`>EbGL& QQ-px0(.R_! $¿eIbk&6'?oek`p)(qH;1'pgX%V5@Ŝ4pHic0 'e05 ҏ?X {9`W尌Ku(#h/ F$ߦ%4Ql 7D1ZAt"Mq:9≍^۔]" ugX"pz}9fA"}aȰ\cxN:xyʂ yW!_h[.1Zu=f4Wp^JW[VLxrvos^=\#78 1_i2 Tc@ty5{*[; C]++ax/)w!\󿃬]` VuxtQ(u!ҍSӈz8G#F&qy3@|}%Ϝ{E;Ŀ]3y]b,'}Ix2@KdHU?кV|c)e0;be +CxuxQbPg -]`#64cf$\U& 5ɚktSJs9vLHCvU^dLTd{ DMjD)޹U`Laڳ"]j0RHo[ Ghhx4z!<1w_EAo!^0B+U 8_wz@  X9dѣH'9<`~=e!| uw--(ɳZ0"X߬lCn+h%ٺs@{ּЀ|ETzTi>'B́u? 7Xelnna,/ےJ]>q(.&оsCI<>n(Fcu1W&6w\4( ,/5~ M_}ڴr֑', vYY4|U*|(yw?ZL|o8o5n}bdJ͡"*z"[8b78q #2L ii4p-tQ8n؟r1/v^STzvvMx`E7 ukR 6#mU.CVol\+c"_!)WE~`D\Zt? & ̸=a`49ۅYt[k7 YIPߜ+k 噱~sBٷ 9(%6{mCћ-/;2kª9?>qdI@Wxr}EOn4S>n- 횠[HM) D#gX#)cGX}NJ!񓠏E)q7Cv^4ZbA&\m7E 8*f4er_<}7;2E9ӀQӉ UJ c[pޕ{[VH A6WDߟ d0q}_ &Ô}#V|ioƃb"pKN%';] y6drлz:=#ɻ. 3Tta_P{䓣 +} lr1~@ᇳό녎wAGܱNI"@dx(G5/}@pKz]7gW5ѽt9oأ cژ NYTlS7gK{ߓd(89 m}G/<bCA%a_YM]`Ѵbac/427<6Ox2[ko$DӲǬ`4/1YBcJt8]}`"[C`zb;*Ϭ+9 PC 7_7*D3YɛK\9疌P8/񛊇 כ`}lX zqm 4Gxȉhlpf !2`Vz6Sr6Z*UqVT}\r)h=bF8\WCܿ tF[֎ΑQL#1t$}7mA%Cd#A5sHmfHn@63p +6vcƨ˲-"P>ma٨G}`'HvQk;;-C͆o]y '($nƸ)Dވ[M_'^q9 u g~hO.d@Jե=*NFl$O|4W\n] 13CNƟ i9e(P !z ;P}ÇpwֱE#!7B&szӖNTk *I6cQW Q{T$?XMG@.E3Jy\vx{|+GWh/4qĊWJ0ZIa2EJPˆ >ޱ^nLYč񈘌ȷ΀wE+`Yo"7lNYa#G}u 9]^?%ML߲>*œ!jƲ:Qy-@)*E߬ɻyƥγgy7u柂:V:U~pMb9`c@L[o4ֺѿ )z+x0 h,.r?g\n|x-Z|c&EA&N]bPLHS\󬈙+ۇl\ [0wF~<˃5(sýC5kd((z<;6Կ^0;L0 [.EGTT;qY\`#$J:pc E/>ےҩ> )*Ψ~?lO#DU rR" Bv/Qj2:$#.$Q{Đ>4DJcmT@ތ Os[ɻr&:2` FzDN6Ķ=Z7Ry@!;ݿ0^LT."BF~a/X#5%ؘ^'SUT#0ںg*?;i<8p*}o$ VqX᭟.@_"8`]㬕7D#߮A fSiaJ^qrzs8م m˶9)` ! vqhq/8Dz7 |<ƞ^v@7+?(64gTxĴ:|`. /mL~LD g3Ef MϜe$EJMחKutѧyig O)1C vs=curꚯ@3hqSIwSc.<Ǭ-~>0tͥH ]^ qи{rvE}*h) Pf#o)7e-MTgx{Ys|cC^^>$5}ʢثƋ4DS^3UvLr|P#Qx W{4W?QGxЛatxd. =N>r(P6}tKe(bQI7}5i;"epDRh[r 97ÿX!P^?Q=`P'Z9I&rOHSgrO)u0 !x (G(dYX]ķ^8sSZXHZdEWh]i.!I+=cL̓{ %mpݩv>0,wrR4M \E27_Qyp,0 {hfzq*ܔ,dM>pU)~1W&{r *gҳo],rWﮬW81 m4<9Y7XڇP]gSoŽ#,!͸U_ys$ݸX>5o_*Ih9G~٬$w{a"Prha ,b7Fj\]8N/C&˧lt k. dU嫅1›CSF͸\|Pm]Ǽ7P?Yћ&|C)J=39iF:j:OĠvdQRwlӇnM7LBxnQFl]~-pT'`mVoˀmz| x6?BB+?Wt8`cbIw`aUڻ0V%ߌ nXHm"}y; K#W2Rv%d~q hbuqN2ã,{ 57:cpSęg/1D )mwtljy~]} )*g*" 3ߌR:* xB=ਁE!v+pNV&qW>+9?#eT>ʗW8.Pvx L\ك{/4ow4y,vK @0Q0O;AN Ay{4Fo;A|GJYyplT+ VӟyAK-I`֞2z Ey> 9HTWeO>LDUu` |Rirb10 vy|;>aChGe;~ W

    Jʭ>SIiWҌ b?m|:s YVQĀnA!JZMQ9'H 7Y} F̌5;cdv~3 $!tV:#޹0Air0SqIy7ci@u%V;8-s'q4 n,Ԓ-+lPD%NGE& %e=9k2kF mm! :X^((8s,#dǘcsI?3A.2s]ۻpό.qRLKo˩?Pvh?+lr# JĀ>6T"6u捊|]>jCF.r3ړ*܍\CI;T%gplcZDi+O98 z;lXFl=*>W2Ĭ<:տ #ץk'FOK@ΩI]1eRƪ: Kio I|PlkT^tBbY#nZFFuo~md `e :_jRB?jquery-ui-1.12.1/demos/droppable/images/high_tatras4.jpg000066400000000000000000000604461276627555100231670ustar00rootroot00000000000000JFIFHHC     #!)!$%'('+.+&.#&'&C   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ! &5UaPsAVJ+@E|6Ʋ,:Y 5"YQh((%m5\\PP(!@DF..(("5usThdIJ D`h* s<#VvJ@@DAUijdV-s_^(4DRD,h !fK7; _$:@[`JjA cT^zDoKcNҰҍd@B6EAŠFYcbXQ„𸭹yo.m9WU[+`ywMu@ bbP\\YnKK.T+=N΀@ Ξ\_8Ǥ@A@9QkeFl][9܀e^s?Z:@BA`N3#:%\q]hkd@u#?zKz/N@.gDjO_.lǼ'殚8}lwc\Fnqvwv /sx6WfzLE9bO@,y//S<;ROs-'p*9Pnft.}HcBݯY.Q~Mc+ڲY^ȥ_2ι1KZ%E5CN__OZԸ͝5{-`oQ֖}N9"ik"Gsۙ("He\[*o7sϙLwN$M$s*EB%lvlg"J٥ii jQ{͚9ev^vѲӣ 7.o FJŨA\\trުղ1`+`*T)ۛݛR=9j)HkBԲ bKdA!OE4:{%'==i2cШic<jķQ?>-V"]nJS鍚Zl^z@S)J ldmjG"eu|`tWw/Xk.҈i%5Za +%|lk>6yJ>K;nK;YpmM秸t001*D=!҉pjgAً婍9a#3f8K l6 V͑5lY'>}ggo{Y]=6dk2fz%wη9ӛ˽JloClwùn{w\U^&JESIlF)nGm )[-f~iFL=^Z'#;[bmBYS9քԲ\ъE;] 5d4I^ ˭LJ{Peo:&H[5I5aH8oK3fGʲ<:]>Y$ԧ5}ՃY.[%9܌Y|гtkN=fjO5Od=l>9FCeCFߣpRa]^̥д;enyvnYvn;V֞NڲYtsH/IDӬ%fN%.!"1 2A#0@34$Bp11111鉏\LLLLzbcӉmq1ٕU?NS}˭.D.tnK[?Nff󶜜re[ra'`fh5Ks33333333333333 u;Ez<&JPg3j33?Nffffffff~bc KPuφI :0}$B#NtZ.ىm3d6l&"bs9}9s9sPRjL 9\N/11116Ͱɶu̎8bbbbbmfٶm+:S"\*raS8TxUCz{ ޝat6M/PJHQ^zZݍSKǵTw M̯F&j)[W}™njuJ WVpzkOSԩ뺕E~R^7`S aNY3:=Wzj qIڞrIU;(e?:mg34p;M+[[xlPL_>WFimVmJwjzos\u"hV>Ϭ5iW~koAsh"8}lt'l79ONl鼬U+5XjtM%#]*41͹wZRNٛZm|؇!f0  *b1Fa] F sjUrOh5$ZQmuZ[{6mNĶW$&^_V=,~@ukLm%xFխ٪XhXrⶶXɶMlR24#-Ȱmk~E *3yh@P&ŔY>=2fL꯿PM_!]'af*QnD;IPtMjmwU­irS!Q_fZk6CK0Z/ϯ:CMoRuw0[!,pk"l1[pW1g%會Tpa]߱!f$l;*oRI-g]MV>}wdϣy[$V|C 6Lq,R|/ {p,֎J Q|v)h1G#සs+\Q"ї `',0ˈ>ӛ(2Q˼SO|.Oɛ38'ұ>'> o"F#f>Z0@q1EON':NѨ:R] abK*V-X +ƒɊ' ,*TF5@!BU׸_;yT E_-U J;]:5}WOv`eK`4Í/sD$3aX,xǣ*pCZ7/eb݊5`홥>+yi'/s ȀdbgLGn#2̱VVͻGc/?™H~WueqınՉ%v2b@Y[n8})īk)+Y%'ϩ0Ϳ-9\.+fPܰţsU]YJoGhcl #s+mE=AgoV 6ڳ;bg8ݶ(.Tkxo^#-bȽbZ@7CQhՓ=ֺUZ8[ h8 n;5b۰Mgm#5"=fV۶ygrS m UJ >7"*Ku'ɫeBoHUB5DEQP& ;Z’*D6m{%h,mycj@mk?n;iی{eBGs~6 n f WevV՜}fÐs]n h S(ak)XVrOTJ^Mkݺ gbjʍ/l/jMwr͑(".M~@_fy46ɼWIi[XY1-hk 6EΤ+-} 1FQk`36dS즻Ǿ[DiXqeu%C+7Bb[2J|qbS^|(W"TgJחkewlSޢ=iMZEUz5UFPToj D+[@ZЩm*fJaY|R"!s,SiN s/ -ڟ'0KGwm%4 %v^Si_ԵS{ށ]l+u559IET]l*HʛaFTyT 4U*n-ٱXY\|ܬmMuj W%)}N.>A3IG`agܪl=$+o`)5~Pf1X*VoiK6 Oh!E;8e=Sj*(3h7&ZZu.p{c.*m5-,uFmK<$˜;JqIEkre;dGyaOm+h.2lmSUslvӀnڶY[)nCݕPTmK=nٕcm̓ "%UL ӣ5)RZְ3XQFrc>@0_7\cQjҺDs3Ӎ;,Z% ] Z>  NfUگ0<cs@W- !01@"2AQ#Bp?a7V-HwƗ4&8t4YJ<jtG@]GGS#r[6 O>{&osU!oWѵm0{Pƿ)bp3IL)Ts-KMC>Fs w +~|L)mV*S{D^#݈iaxQx!V6666.'QA7jr(7(m[FA!} / 5(4@Dd# uS(2B B!)5r{06kGlfNnSGܫmH@/BU&!r,T)]i4EL ҂()Qr*(5Fcm- )BkiS\!:؅@*lx(.uDJ'X/)! 1A0"2Qa#@Bp?//R8Ǎ{.YeDoo[H_2[8௎B>W#ضݺD5ɲ$buwI\9~vSJ$O/VrGoH>D]\ hyYCӑu{!/.eOgx#qBy`]d\Eˏ(J-+/#;->keЈv>t>ɺFG,]>2-X? d蛸k$[WRYgi\d0i*Bx5^$d9t[Qde,t3KqrV`D8x<}7COJIi࿸>*/c zTo~eܘFf$mjQQ/kyGvgFVOmYv&QtŴ3DpF3O#K*]dE ͐fK, dZEQ<؄R:DИIQ=OY97?ˡu{5c&7Khtǖ8`I1 K%;!1AQ"a2q #0BR@P$3brp?gGiU1>cub&j7:8Msa >3˧OTHu[)b :8YU5*D:P(IN3m0_ڈKz%xͭqՂOWe# a_vG B#QOU2^#LMIiۄ@7"ʎ,PEq1ѹZ^UMBwDt_ KeE7s2qK|EW SXZPoE`ᙂv3.bUrFVb qg q]JʧITtIQT=ϕUz*ꊎUi*ZF}²TnLW iG4-*ȎFfUJ\r 5]삾U* QyPTsSu:FfH<\bBcLnM;fdJ#"ul.3((iL.SHVMT6CUS|NDDQhvm)SJL.d*N]S(j9B9@4PTe vZ]eSE˔ D.꫘G[)v*YDYp#G#'n /[ P*!QJЉ-)u'eehL벨J#ur6C.iYKm^nM!w^PVE n8)׋N(>TjUʐ(_+ʂ! R (A 1Nahud4RH_f [b#y+謨fv Q=NiDa`V!NKD#6 VDB.d6 Ux\]ERDARtK-M[SSU Y tzf8Z_5BMk>͐.210.uh@12F4WWPelu8yiUkZCт(cZEARA)Neɋàl.R"db JZV*E~KګU,Ĉ҄ΥO &xUϲoZP Ddun?s` nМ\Ik|**C"^..1?>2\)R[d@LRtKEi7MMܔXJIlr\OA-K6( ZJV..!Dg`_~Q8VQW V1GEt_Uк18U$(3 h-"lpЭdKn]OϚg<6"ɽWLe]{(SW/lQv!:vu xDIelFBakDk(_qJ2ďM!YhDm(hGijDqSUEu +K*!S]RO[aPY~ꒆ{*#5(H*^B P*!1AQaq 0@P?!W*WJ+_F1coX*R@o1}K\r.\XesE Wlew.\r.\aV;l(g Mx "紿r\~.\~,aBB/CYf-TYo@ź3ǡ.\rG?b.\ƒE\ =8)߼URɍ8O]]T:&Z:CS1R!w^JJf%eO&R= ED۸1/J0hu({I,{=oo$Y0A w.9*viL@*=J,/䨺кx霿8@SvHBBPw._-n73/RJbP)K.NHh RT[)X< bJ{f-^%';l9E_. iIǟ\=F#&ML *xe٫#u+x9p358FPJ,)8P;AlS wVl9(x;90?0DG WA8tZ=뻄@ YOY|~rɿL͙̒"<T`uEh|4#|˗.\1EiCrplfI <)#T.fGjL[1-huJmDEa{P_;g%fgZf x'Q ^abA".Faco~s9Ksh6ŏ}ϲlc;2Heui*c2vnSNwSU7PkZُ0ubyk6mf8@+hJ0Z:hciCfo0GDa=ۈۛŸj2mLGmep3_p]Y@ qj9ͧX~% ZĤ"Ҵ}uv/]+,Vr>YΧ?g`;H1D`pvͮL_hj'b[9K-AѾ_X\|6S/q" uw8ć y mmϼ& _0v)"Rnls3$YQ@_=Qɖ `l\Vr¾ (ԣ7(aYeS7Regª5s( ]AsZ/Syxy_2m؝y rW \j$c  z*e<2nCZUd:lO3t<\G&\#.eW f͛m- T﹝֠yenXGݎ@cf['p)2 , N[)`k!97N)q6#\ ɹR+mmwpb㵫3h،|%Ь=Fh%4Qm- T_VFDuAV'oZo'){z Y[A!n .z`ld*S/U}@>nY}^C+?h'K#Zx+e2y5&2P0Дpf@ rB'=pymޘ4^%F"J`^,&p**Y1V͡/"|Q%D:?rBT18U ½ޮ(3l0FsKܑCɀj[OB}G@$ɹDR߁J(7P\\|S [FWN* 徧-1ơtZ6删/o`({!p788y0M..wn"Yw/XHVG>%ODU$+ψ8fpbΗVufq/n,Dz8M`ʀ-{L]Ai|Qy)x!/_)ݏyxmJV>-e fitn6Ǝڡ/-qep|~Rvט5in LIi"p.Q$)Z<0e5O S<5Er߀+QqX`D29aqVݣ̾)q8 (TQ 2V齒حa`0r]rV17 9+x3AqXg%)PV{_@(>EKDҗ|+9%-DMS-L5q^^]{!]2|M~HAtC^w+b iStqqa"p@pф0,81PNxmA@YaNT9䀶aD-ih,[e9"Y'ȆImz:N im8MO6AG0p/@2XeF_ YjNVKC.gSS_8*z.615QfoiX&`# @X&иͧġAVS +\ [RSLЊTk3t #<:6eXf̳>pC`P3,̲8b +):~AmQ]i-jI>Y \qMu*ߐHK1I1_|]QWR0އ$l>H&SB%rXRPjbQ6ֽ26**61%XY3NƼKIT#$Ph5(\Ѫht%:\` fA򘁰A Qpoq+H?qHѼQg f? "΅1Rm|W)z s? |YJĉNd jf¦ȃ<̀dB ̨.yiȈN# spJڑjřs,+(9s _JA.i̍5fL`?eȩɆH%D ̅/K h2MU 2axkbATV;'fRI0, Օ3D9⷏4,BQw\e/wS)fjʬc=կ×Hmg)jPڹYq+Zl=>iu~U O/tA4I_ gzkslO+Qs7cư}H>H,ZV2?NEWE}<^*1T#ݼG)!1 AQaq0@с`?++LW^Cpa/TRO^jV*|*T!.0Ð*eK/pxw!j9_Be-{*=J·kQePE=}@ AL|i>.\3[a.{6>( oچ/T0\ZkY?2&YgQWwV yTx<=sa]#P[}¢$=N0bW[D|"hZctJ z;_;r5&3mOfcߍVo'!=F001$vC0w9'qǬc F={ϼ0J=D</u72Mʂq9g &pن0ڂ4ܺ'7ļUpi:DiM} %`Ux{.rp&sUe3h=fCk:XNC4V+)K[ aJ*&>s׆$ Hv?%^Ccȕ\c,EW eaC=Ÿ1*P˦$|%Otc) % 21#+QpJn !ȖBm=J6ȷQ EXifTZVV.Q!umpJ$ $k %anwx;R8bΧRKC.p-WK%ʬ.i?#!1A Qa0q@?|meضmlI3 /!6ݞ#or[>C |ͯqmGe}^e'S3nA$ ~\d!|ׄϲ1ߢiɟ~]#0bgr?/P`Fެ9-͘MǢm06 -a$gvos{#搹[|a. gCe >/Dua>\]_!̀yleDsi۷M;pن}_ M${K;jvAa}]6or??/BoK>dAKkCdm&/D_%< ˖/m ɂycϸr!#=2`H5u"6z- H24́`Xsb'IL~O[`17.ace7~\?^t '#NϬ钃؏ŋKA[ [!X>{yz _VOq%'12 'q1䷖0܄myevoaof.a;#nrqq] n%鳗BR#@w%/N݅a'lblY?{_bڅˆo~il[%Kn>PvFXu :L9gvK Ρ[iZ)qOrdʁ3sx̃ذK~_#Ɛf[qo!$l{$Ceo(!1AQaq 0?-fOI{s1b]8Ж7jV7(Fr@Xd lV5xBpԡD.`F T} \\r˗_UjT%KH̩U~\b8J ~~a,aL(DeNAn%;q*0Ptz?\Yqb˗#2_5 & -㩉[Kq _t#6*eȂqJh7+}u_ŋ&g(a_B~ 9 }O!K" ^S=Qeaj9U(W-FVo~%ՠ0־Ҏd74n0Hó>5a啈10qE0}E%˗. ] ~"9H<ӏSq@Ust.l1m;;JKѡwpXQb6'cV0I1.k/SxmKE (P,O ]T  *^(%Kq}|u0ീP!p35a(juз P#XzֈD1-D [>p@[[C:AtC 0Y"ܐyb pnWJ&]C .igx`gS؞"Ȑ"nNX_}ĂeX*&=f>$0K1>&~W#uX.(sEeKw<@7 ]~! ^7 zCCm1.bVQO){>%%>ʎ瀁pQԣGRJ:&Z(!T:h3eH2 ŶXwp!:Jt,(S]70 n7)AKg>ryrs:[Tbao{~'K)gtavw}q* 0Mj,Ye ,% 8vҳXضQ &ղ>z|J.s%7Y_D9~89jDɘ@sϨULХɚ1Ԥ/3WeSֺr|eUU6"l 9uUځ[w T] g߼Õ jaX(((crP*(My\\p y-lF4=)kO*UC_,/vycN :%Ytѡ}J|GQ_eN!D4ﳹb\5WR{`y(_~,2F+vA27%k'W`4°U6̤q0 ^"-Ģ(y\1TX9 d03R [D3Ld=uJP  XF oaN#( XU,".,#kO0 ~ (%36b iN2X84BD*¾ ,&E+u RFS~eQ/_ .MC"U|A.cEv(>0m~!G',ku"6*q%Ee&U@//FBcJQ Q_"vǼ@V7GE\n8̻l a͆PǀO@ͅ3k/&6V(7 vVh!RHGv2/mpY4~H H "*.[U0*5Jj9|B9㲺L͂|Ժ=[5`߭eTauz! "A9Q,>b66 8liܤ!9ӉF[f,J-ZS)hf,!GxK4||"F*WhppBÓq1MڼcX,()K*%.B>Lr`55^ԇ0=]s^`&*R\CZeF^ cN_J1`] f:Y ߶bd4|EjRc>噩FggJW LnڋYUV+-pjmg!tD`/KKraP^\ l/R.r|J]N^å[]BҠ/ B5#n_1X_(,,Bv~G*ٞWk|Do+KB3$pUu]g/( k[ o;KTcC :Iѭa9*QǨo!8um(UI*K %v@ ɺ+„(ýz{,:#,7og!Q1F5_b"nh\d }R+;wz#pPup,2yp9*a"+~dsG Ư@q˸ȧ1ۼ+Pc4^f)^{ 0v x%iKU6.1[+V0OKŽr:sCMo2`4 aҳng&`t7*2Бψ>.ӛ&-lzf@s 廒Iܵ햣u`[2kw~sVeTaSO,PBy٘&~řJEplKcDV{0*X- gi6 0?heKvmkv]k5Ф|ղ4VDh ,Zo6 ~& 4޲flN.8L~1nNb;K,7ɟ1ObiZ9~|4UAxay⠷{~XR%t @VCᅢ! UDd Wdn+Z`bUԻtdV YYATnsOu Kp- $p6-'NkZGgۖ5bv}׈_Mna֥@ WZuZҘ5 @}BgT1¡m7+Z6AQeR#kZR6hO̥E@wUYW&!JlZe5IVs\;qpc &,оd&i#՟Ԡ*QNzw|uWEdkR:Zo̽ \ӮsifdbstM z6 xJ姪0 mz=~. }@y ռR( 02ȣk19P2ɨxiM׊W5k"]p^4s(kΦEo0AG8 PMv5xw@*I NPKnzft`) 8HSʾ܏}T=/t58ly]`wjqg<^83y0'h7tcFMU h#(f~4d7;_)| 6ݺ;0eb "nMdCqj!?2xU,t92  WVX/Xɔ|9/_n L!Ee"È(Dl2 ;Jk8ϧSJ!;l Q,4╱&.p!è@ s<6JفkD|'kC^?UF\ Ҝ9`o T doo\8 wfϬ.fq1xO$4bCn.ɯ#b+ur c \oY$SB?v\γ*ܭ-qU@4WOB2W,/Ѻj9q\ZyRE}0Cm^.,ayYgAͽEh UJ.fߚvzPkL\ K:@M4]F͜JmDxb35b,pXD l48hqVuPm|?jkQ*]AdVFbY7KPA`(+ƣpEQ& ݝ8;l\,2zV@}}2&h1CUEk)=ے >,yQ1i}+u }UmW^j;"Ek`kE=Pڧ7[KS =81Y;WuPicĪԺC Ubג"il-I v^ Uvl:j$Lb<Ūh̓m9o&gܫ *<̳t[Kꨔwr؃\@TƳ(hV/Ħ*J1O{aGmU[UlBSGS,l+(C.B1~;%2u/S Zbeh5*/wp8:i7]ħHrp1xk$O^u01 zB*p-fpnqBŶlv\}U]멎^^jS<5eQP+,#ADIf@D6]FRq_[(0_C윊Qk6+WX& !emy")Xvx^a@y6h-BV-`BըDqtБh)_C* o )CbyH3NagUh5q(׌,,[cX׾ ,е ]Z@.Q|>uBlLkA%ıEKSGtR>+޸AOqJp#D^8M‚{Tb +v Wܭu۞ MFB޼h ұhj,eĭ b{9B9l^}FHk2٬`f!>8$*Uu"*:B|̙Ǟ.SlHKavFW%+TxBNV'M%>4N}N4[h=L6^\qZ7D)]@0*h>BcMe|[j:2Ώ842ohE--c(Tnqb[7"v@UsyR_]ꈥ3Z4XU= _;SM9`Kv )1-514SN73b2YPoEV3Ga?*$Y&y,7R{ePrwTk(y#~1nWT^^e1p %{_RR;S0*]~!:xp|UBՍ;fAqLƍ-z-@<2n~%AWV>OK1\mA] YLO1Q j"*.Oյ腪,f]X'|Dc0pw*[ ߩ^A?0tlh ..~ heK>)*0)=qeakFD,iT`YUJ=ܨfH ׉?{!-Ul:~FfoZJ4#*P6nUŶCͅWEy;l9}y5zp):/fu+]M ģL\1UFXMc C"A*u~3d3yc z~PmurЌB,[[sEc]6]2 RPšb;?\zJKXKfz-˂ֽ@(yJx'՟y*RjupԂ}=BXWظoIǬjquery-ui-1.12.1/demos/droppable/images/high_tatras4_min.jpg000066400000000000000000000047551276627555100240330ustar00rootroot00000000000000JFIFHHC     #!)!$%'('+.+&.#&'&C   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&H`!8!1A"Q2aq#BRSCb*!1AQ"a2B ?PFqק[}0NCBEΡbXB$DL$E7|w;b C)L#U2$I;4.I6 ~ζI!ri1CH$S E7Z3s JkOKȿ5=pXޡF-ZͰ0᦮X,DP-T|IQ\+~X voT]=OSjak}V20jI&i)KlGN)=2eZ% }Jdq z_VuDZDy#HEc :ts[kI!צBg_WQTAHkب!o|i R$fX7Y V" QXon=oe1y$#Q9u!71 uIpq1i,۟_!ʲڣOf"|QF9a'aJ49mU-DTNe%{\ߌ"!1Ҽ3NzP|b9|7=ؾ{%cӽcE;3GM9j'bE$ࣺ}=][Q~h*#},(Gɉ@}qe9TϻQ,RHeam7by|Bys(_ 2xl)WTӭA.)/ ܶ5^qHV@~'TbeOSSЅQVB7;0~ϫ71e3?/@`0:1pRYe fĐ[^bL V<pQf뮱s s\txv$ossTI4Q<:8e16V<'˹OG>|'ն4,9$,gh Oe_ NcYp]m~J80.EXb$v? Խ~IӜ(Q)|2c{cweK,BpO 𢡊gQX4%\luoWGHTÙf9H;^ہ e$}m`/Φ*X"8&Fe.hʤ`.ه77pR}q\b@F \%|2ҁnO%}p wXy kD=L |ֶ`}\M+iVɳ)E]<[}vp: ynM<@Cц^ة$N LK6-JPoM49MbIYk "0;ۃl9ӰΧĐI7?ui|eWH ?*ukqbeN$T}D0Oe.!9Sj*7;\4$s|x\eKVx+t&ZW4zۍ0"T!CJts~&'ؚz:m[rGnbesw<[K]Jg]4s-#m̢S}㊳3W/:!1΢@^ݱ|`^~,+&e'Ϧ feԓ41SeU7{Ú JTR>䌎yig/xV2$$Z %ts:bk8d o;ok۞0<\ν4+DT<8K`Wo]Te{{RK k+ckA|hƔ[R^֗ܶAƓiIRuM62LPxf`<ʷێ8TMPMB,[b_opU<"Q)+['팮~˒+R L/LK1#}MN]UqCz_[ -'~ Z47.sΜvԐ!X.F=g9 !f-{Ϯ*&NꎦtyN&Voks,hie@"$IˈhVmGL%6&UѨ֩dw+pI'Qjquery-ui-1.12.1/demos/droppable/images/high_tatras_min.jpg000066400000000000000000000041431276627555100237360ustar00rootroot00000000000000JFIFHHC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222H`!4!1Q"Aa2q$BR#!1A"#Qa2 ?R6ZW6r+.J(I2pr?4$HWvH=ϧV<^"څX|~RFg#GiyAK6na`It-\3ViUen;\Lqb~!Nj=-]|(>-hM]+I_dXՌ *Y:V\41^$?gxqEj{Vz5]p1bY\ |s2'TzFkEKY!qIKv8&ǪzT͒9xJ c).|wwNG9% Nڙ2w" 6qGWڧ彨hϖzE~#Nڗ"\\}f4d$x`9^2/՜叿zO*Wц(z)jڵG$Pmb P{"awҢSJESr<&cS.ҤI >AɍYlCnP'(Cy5)F+)W) &B֫3h:TGfu_ +[TdEeeyVebR7280zrx?cHcAǘM[m }Ͷd2&ĐǴ.x'shbݏUPdZKC`-ׁi 2I'$yXyfS'=W y%kyTvC)CR{T8=[8 \Qמj^Fa+JLd~ …AӞƞO یwi6N7ǔNcU H_T$6 kᯩ ϛb>,Gx ^iv$ *iRb۔1۩܄23ڵ-n;rs)6&#\|}$t#NiwL/g&I۴(N#V,$ [#A^ &Dx޸?qCе[}KG{[R0u=ǽ*QQhi-HaO"ssh|TznNsum8Ȝi ?Ļ-t,vǥi ~S ytaْ1jz~Sg t@؄d3`*y?kcrQÏ CuQ)n1jqo,kvX['Ң{,6 0#O|!kpv2g=+,uI.idu Ѓ5x7&5޻& U˒wna&F) 0-h.OE;✝-Zڅr/u4ErOH \n:v$/xp|?h֊ecʿ$g" 1&q.$SW- LaV8+ Ω$s%MRq;Be-]K2*쏛ΧjFab> Z!eV;Q֗vsj,"r؟ڣ 'fkk?Gi&8LdznIP ʧ5Km-l#jquery-ui-1.12.1/demos/droppable/index.html000066400000000000000000000011201276627555100206140ustar00rootroot00000000000000 jQuery UI Droppable Demos

    jquery-ui-1.12.1/demos/droppable/photo-manager.html000066400000000000000000000146011276627555100222560ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/droppable/propagation.html000066400000000000000000000042421276627555100220400ustar00rootroot00000000000000 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).

    jquery-ui-1.12.1/demos/droppable/revert.html000066400000000000000000000027341276627555100210300ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/droppable/visual-feedback.html000066400000000000000000000036671276627555100225540ustar00rootroot00000000000000 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). Set the values of the ui-droppable-hover or ui-droppable-active properties on the classes option to specify the respective classes.

    jquery-ui-1.12.1/demos/effect/000077500000000000000000000000001276627555100161115ustar00rootroot00000000000000jquery-ui-1.12.1/demos/effect/addClass.html000066400000000000000000000026021276627555100205150ustar00rootroot00000000000000 jQuery UI Effects - addClass demo
    Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede.

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

    jquery-ui-1.12.1/demos/effect/animate.html000066400000000000000000000030201276627555100204100ustar00rootroot00000000000000 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.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/effect/default.html000066400000000000000000000054311276627555100204260ustar00rootroot00000000000000 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.

    Click the button above to show the effect.

    jquery-ui-1.12.1/demos/effect/easing.html000066400000000000000000000054051276627555100202510ustar00rootroot00000000000000 jQuery UI Effects - Easing demo

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

    jquery-ui-1.12.1/demos/effect/hide.html000066400000000000000000000050321276627555100177100ustar00rootroot00000000000000 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.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/effect/index.html000066400000000000000000000013171276627555100201100ustar00rootroot00000000000000 jQuery UI Effects Demos jquery-ui-1.12.1/demos/effect/removeClass.html000066400000000000000000000027441276627555100212710ustar00rootroot00000000000000 jQuery UI Effects - removeClass Demo
    Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/effect/show.html000066400000000000000000000050651276627555100177650ustar00rootroot00000000000000 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.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/effect/switchClass.html000066400000000000000000000024761276627555100212770ustar00rootroot00000000000000 jQuery UI Effects - switchClass Demo
    Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/effect/toggle.html000066400000000000000000000045741276627555100202720ustar00rootroot00000000000000 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.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/effect/toggleClass.html000066400000000000000000000024031276627555100212450ustar00rootroot00000000000000 jQuery UI Effects - toggleClass Demo
    Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede.

    Click the button above to preview the effect.

    jquery-ui-1.12.1/demos/images/000077500000000000000000000000001276627555100161225ustar00rootroot00000000000000jquery-ui-1.12.1/demos/images/calendar.gif000066400000000000000000000004021276627555100203560ustar00rootroot00000000000000GIF87awSQ[W^Yc\e^meslzs}1i9qZs,$T [Ѿ 5ME @@\[n)*u/8l6k<2uӸE,inxPU\&ff]  moq =y^`Gdd` G  !;jquery-ui-1.12.1/demos/images/demo-config-on-tile.gif000066400000000000000000000002541276627555100223460ustar00rootroot00000000000000GIF87ad.#'%84-<=!60:+)?2,d1 $dih$4E,E x @PШtJZ4;jquery-ui-1.12.1/demos/images/demo-config-on.gif000066400000000000000000000005171276627555100214150ustar00rootroot00000000000000GIF87a d)-02+6)48':%#<ߴ۰޴Z=N=!PA?8ߵs6;u., d@t@pH,Ȥ8ˤPZجvK(͇@.sz>(CSa>/PIH!m"F DB$ B#D G'YA;jquery-ui-1.12.1/demos/images/demo-spindown-closed.gif000066400000000000000000000001471276627555100226450ustar00rootroot00000000000000GIF89a }}}! ,@ EU$؛F WqP;jquery-ui-1.12.1/demos/images/demo-spindown-open.gif000066400000000000000000000001511276627555100223300ustar00rootroot00000000000000GIF89a ξ}}}! ,9BR1$B!;jquery-ui-1.12.1/demos/images/icon-docs-info.gif000066400000000000000000000003161276627555100214200ustar00rootroot00000000000000GIF87a , S`'vJX(r5[UtRB**ċRp T$\f+n ETFѸ5@`LC3#!;jquery-ui-1.12.1/demos/images/pbar-ani.gif000066400000000000000000000065141276627555100203100ustar00rootroot00000000000000GIF89a0BJBJJRckkssŌŔΔ֜! NETSCAPE2.0!,0pIͻ!dil)ka|+ qlJ cպfxL./f϶}P}zy|¶žȝʰ!,0zбGxw'Zcy–at%痍;^'"(L*GZۨp<-|n auD>G u&KVyMdO[79VG u /ng=d|:~Q6dNHHA!,0uIs=j\8) "a[”Ko1ߏSbTDBxTEuBa}d8<㲻9Oxe}^|HH!,0xIs=j\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺Mee^tHH?!,0uIsj\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺MeetHyE!,0wItj\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺Mte^tHyE?<!,0uIkuj\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺Mte^yHE?!,0yIαZ]X) "a\cIs1ߏ["TDBxTENBa}d8<벻Lx޺Mte^yH?!,0vp8;Dz򍗢$qK{ޕ_Ҩ[Gd"!E.\^0e8<k3Kxt;t}KE!,0x𽵚8`vHhJRา[™1ӗk龋̩ ,*೘H,q`JȇwW( X^n_>#avHA!,0wɷV8`vHhJRา[˜a$癍;^ %NDL$4Ҋi\WX( YY^+nB7PvMG!,0wɹV8`vHhJRา[˜a$癍;'"Jܚ#K$4Ԋ%\WX( YY^+nB7PvME!,0w)j4k`vHhJRา[”a$癍;'"J|$G᳘Hrze\M[( YY^+naB7ZvME!,0Im4: uHh>JZx*p<xmKn1bQr\N˦J,t]f[S Qh跳]/k{;}6kkSSKK!,0xIZ=c\8"b[”a$畍;'Ģ(L* jQuery UI Demos jquery-ui-1.12.1/demos/menu/000077500000000000000000000000001276627555100156215ustar00rootroot00000000000000jquery-ui-1.12.1/demos/menu/categories.html000066400000000000000000000021151276627555100206330ustar00rootroot00000000000000 jQuery UI Menu - Categories

    By using the items option, you can configure which elements are converted into selectable menu items. Here this technique is used to create category headers.

    jquery-ui-1.12.1/demos/menu/default.html000066400000000000000000000027431276627555100201410ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/menu/icons.html000066400000000000000000000025561276627555100176320ustar00rootroot00000000000000 jQuery UI Menu - Icons

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

    jquery-ui-1.12.1/demos/menu/index.html000066400000000000000000000005561276627555100176240ustar00rootroot00000000000000 jQuery UI Menu Demos jquery-ui-1.12.1/demos/position/000077500000000000000000000000001276627555100165215ustar00rootroot00000000000000jquery-ui-1.12.1/demos/position/cycler.html000066400000000000000000000050771276627555100207010ustar00rootroot00000000000000 jQuery UI Position - Image Cycler

    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.

    jquery-ui-1.12.1/demos/position/default.html000066400000000000000000000061521276627555100210370ustar00rootroot00000000000000 jQuery UI Position - Default functionality

    This is the position parent element.

    to position

    to position 2

    position...
    my:
    at:
    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.

    jquery-ui-1.12.1/demos/position/images/000077500000000000000000000000001276627555100177665ustar00rootroot00000000000000jquery-ui-1.12.1/demos/position/images/earth.jpg000066400000000000000000000722321276627555100216010ustar00rootroot00000000000000JFIFLEAD Technologies Inc. V1.01CC4   ( =ǖ5aBz\-La@q;N4]jݶ.ap-ʩgG$?MF+07sct~pbj]^}&gNmBT4c]_48259cʗYY/Sw*ec.&,כֿq|Dzս=x}T17[b\mLG;`ʹt'ҧlUXhy66isOZ%;r-usr䕺\wp:)_>glc::q)Oһ5_k{cKߥ׹Z;2t; 96 }m&cq^HvTs_Gƀx?{z)c}:t>WoZGlnDKԎΣ5͘kS,_^_595Ms 3NaaɬzYϳ_Wk5%|nm2Q{|9deLŪ R.W6yն4h젗IӃ]Ėe}piX=k; 4wQuR~;z.o,^{ߍ8*PPu@(H/ f|@|Z7Zw0uDz5]*Z43T߫TЌZ1WV_Ϛ&rl}4zY/+;jݟ^7F%Pu@}j6YnF9~NtgWyP>=:xjVm.۩biecr~2f⴯|?ݎlۓz uM|3:v>B= B3`U]jM=NjsɡIC/EzMt.iZr#ޛf͞kqxO҉tj»ޅɵr"~6:_G'i8]ŊlvHjf]kM6MXi&.Ύ.Y}ةK}n>ЭY6F[rJ~NdzqtVs9>k|˖uU zlY @?o$2UՑ٥s7mLͶYoKSy)仵;n5$mw>Ľ_7VPIzȯ5E@ 6,P_{;=R:/A%aᑢ+6 QEu4=~~_ubu{|_z]{'ۥxƾ{ϸ]._7n73{3̹=oo g(Web@kuJo]Z1h%}IfEyLd#hNl }#,WVyW.C̐G>4-֌Tca7 ~|X;5>_Z\uN.ɦd7Vcy,xm~--I{Yo8Ï] G_{mNs.K7>ڏVy+= >,V{׭M^aS43Is _~کG, z>tg6ƪH}˸/zL=t -޺cUnfW&A}>%YHyzy[m*YItH9%̚[|ϳ3;}$;p)YicMnփq$C6m-@ S7]侢R j2#σ(6dpћJ&kXme)y}-gs&q(F8 0J˙T y޷mcc3f+7ZwN̬Z 7+ƦS8keåt-0s jic sMU N>lcS&[ S2c570j*ScU+"|cB/ϋPl+/!1@"0AP#2$6`LgLNP[pNXS¸/33zgZV$YwC[.7:t_ƸJ{ 6YӺVI+)fӅ=0SױU Q5kvYABA_wÕlH.$uÒhWh}6\;1}3qm#4J"|vΨ˓bJY5LZlzÂ-.M!*J'pO"Γc yjU 8AZ -[5վ+ na=l10vYcZJ_A+ YʸvÌٟ8/nJY' q3_bȢ@|1nEާ+XjSe,5[&VVuljsngYΓ+;Mjr`@HG55lh-> *&{b#q\PMSk_w =@NZKQZ:)jj|;.n3K4մ_Ie,|W{fؕ|h+꤫!eY>ؒ *m+U.ag#ojFBʪLk*V3z:ܟQzzgN6:v )X~8X*?%4+Z,`Hzc"ecE{Pq%AZ^seWvWUf8Num5V'Ӂb!.\8P*R*UBΒ} qaʱذ6K5ֹ!)3Ue(k5B4mO4Q1} ϷïH4l+lx՚]/k+ +%nek3-Oj.=ZuVmeBiWٹ8'C063Z5yg"aپl%O44xYj`g]hTkykp/ 듾06[3g!86I9M^|ѝِFѨ2fK=)^u2dr͈XgVfwH̽9H6 !1a"@APq #02Q$?NlfG<`ȷ Z=P/?j?ZuDlx<,Q/ר.}Oź䖺Oį%|*im6Or?b|籧%ߟQd6GLͥ&j"䋴zBd?Ȗ =3AR\%pMƒ'R!(Q0k+絕ed# ׂ)J85yze(B\ĕ_^fa!G`zN0l؆iQ";hS:ئy/ 53T4ᕷI־CG"`sXCx"2v+lR 6%~G4?3ŨvGFKŗ (L4XRP.֨~$k?h,ԙ\ V+ڹ]{_< uyyݶmKמt{s-<*E>,t_FYN!C7[`%oē"ƐԽl?_y C*'5P,pZ󱫟R;ŶsȦ"X4Iԏb/,3dK{|&^ vиs܎#|I]ܞU˟r y4ufz5Y|j%4xs#矗}4EK1DP""HqՒ Tv HUZ8.}D:/n%mF2`G%%Y h]~kfN¹<:1e{%Pdܷ- # E9J0KR= 9,c!oIz<"5?dlESUєKv,HϹvrvYhRܹ]SKo 5Z|Or[A{LX#F~(FdM.R% Ĵj{ҫ9S?k}< uX TTKOW9}Y\ "25GSۃ8;68  [Q\suXd*hp`_bcu n9B 飤:HmM 0c[B !1a0A"Qq2@P #bBR?Æ[+{l [+oӴr3tti}ѦzOSi u{^+$皋[^371/wi^Zѿف &4줥iO6'SrP&@.b|XBħ65ry~E%)--E) 6BCG)mly&g$ࣨ"L `碩~RPQ4wU4u1b{-PJtʻA2Q{N?%,-,{5Xk)|*JmҢv!.9λx&OIF+#2y5JP6T\%]#G=V5ɦȕZ%5TW,e,_IMuëG,褉O 6UD#"QmAZZS TpIZVٹWytR\xJLz=TQKZ. .\9?ޞbћ*].}UE={5l|M=r暭t͓қ7T(ϙU|>7B|3CdSa0]&؟M)^&n5Hōuᒈ3bf*nQ'L$zTY[weF.Ȕҋe tU0mgcOyyWaMPJΪv bӟE˃?.#C\nxaꙪD* '9QcRdB=jݵdtɴ.^Xz*m'ܪ' Š5lM` *i6Ψ)B,T99gTqSi,A\Vr͕Dzw#])];tiFG!.-B=ԌY Tp9RҖg5;,uB5 ZW-P3b(7 '(tv[&mTEDeP9CgtTA YG /M*Y ZV|>GxgQp3?BZ3GAga꙱UrgEC oÜԑJTGr檣>^':'.T\'\W91Pվ&vY̩#ik'SY}Q9s\[TӼTn5Eu j3â2 sPb2Je1!AFsG mkTtrm=Q|N;v]0`Ϊ\SjN05SHl|B|Xk{,䛩 l{ q Cj֦ez`SQ98]0iLNKBc$iQIED.SqYU_s ?.'^݇Ӡ*8ٍP@vT}4%9渧 1JuSRv՞i5Q@\?,<~h[>ߒAϗUYg$ƣ3w٩ 4edF'-.jdMr&5#1]{[kB!Soퟺ66˪= ϙLPP+<mLƞYucX-2긧 3UNp/h2&sQv渄@sJ@ΝSAN™R:6D"?j%52IеBTTPSJRه?AsɲC`l4g8XM^ؤ.{liMJ`!TC~tN#gp9(n8lD{y-vWZS'5\(vOUٜQUkX% X'<^Üa֘1M/g TU=#jmloϽ  :ѝz*}NOSYq*wWv΋ns~k'B(G@ &0-$6M!9Lls%R4Ju#+g l΋^=z'ퟲc\9AɅ=)丏흝:+wl['g-de-6ZS|N9Bj N'=W `У]As@j8qGO?kn NgfhE)m(ˤ*ӞJ3D]re{wl . XkU#>F%1] "l]G\ >\*6 ꎐUsEM&jT8=&Ah]iΩK7?bnz)αT%gp}]CP9.LlAԃ>j@yb1ϺmϺdE%4U0:*V3~UF**ЛRI%unkrpRLjk\nz)x_x`Rq 碒El,gEs/|"3x9ppVxٗ ׯaB#$Z/燘~j\: P#\õJ,{*vpC~ȷ@ލHÖطEj4dp+̨o}ҕckΉ9)_,% E[1E": H*T ` aI/[t"عT XiՅ;[pmr+!N,;ϔ)J.xN'U5f*UO3($\|IRdFۛsY%O[Ӭsl\ޖb| }-\2.ߥk]J֕aO$h:WNm z$cPG@=z_*$RmE|qҸˊ+XtQDSl5V!P&2뾕o\KZٯkTY؂;?=Z0mhָL Zm{!:8,biѩߥAkj+V_qk^C)`_ J [czr>$-)0XDXx@H"*oA[(ΕdnJuK@ GcRG!brk4nWO2~.z?j{Rmor-:F MźY9r( -¿S}Aޕ'fLr:ADFֶ8LFA"LJ ֳ W'ݓ@~}ʯ-3ͭXL .2@-~36mA.l(U€|Te2@t~| 3JwTڱDe<k;erY|mdf KmA+k0&X *E 7&}lN|]4rtPu=k2|ԺjֵLLls(+[)E?ч*I &!(8=%2sDel3]U[Ҝ[UM' y+|lKZd!zTT( V[V^iO|dP>^*L=:i\ p?ᜟڸ|LJ7m*񾽇Z)7'ZoVj:NVˆ:o3G ֘DQޮy{_θ(?/TQ X|<ДNehZk]ѐ,JP^G=h{-Ty<80ʄal߭b q$j-z2>k2aaf\*a= 붔fy T+ݥ&R)*, 8{ЛRʼn+1fj5ڜP;VtZZ7[ZU\1(tc^< v5ĔX^Մ˧<( `k{۔MfjАFXr)/2mLW:uvu4E;.(; |< :Nvt|Rkҫ6Qvy8iDtP~gl*X.ĠُæuR@aLjMi%S ׹KyRdrU V[ 2l`"ֵ[/8ۭ<ٲfG\(O pկ6654xBW&͠] KX(8?2 ySq L}tAoh[n<7]oi$sZ j3֕V][o$"6Z ,k>&uG*ڰuCFnL4;:kV%|U#rαp>UlܦM :3xX?pM0pۮ: FUsKRjY%Ŭi1_ݼ.+c?B [g!H9Z B:[J-׹:Amt5Ée|(n|Қ)T#lt%;V\,9u&CR1lJHu#K0ulHneh؅u[Eg#' 5>Ă Af;EMoF׈x.,I=CXibu*1w߆/>H[9+ޟ#ӚvFm^P%$]a$2&9 "7>uxb * 0S1|JFQ0KZ:lkH*-L4Ҕ`Kmjx$ʍ yގb$ (`eXȉcSȒ8ђ;GA!<;z͇9&}N'G;Zaٵx\i`}+MJ0?R?a?'g7 Btab{ކfu$}Ě,lP0MmމN0.P]c0{KN*/P;ւᓀs&?LʗV9|CEA(2vU6՝W.?y)z8l"ui끅\

    o֣BoZM' /2혏:BIJL LOݰGK;Ԏ(Q` LD\zF +|DiX-ljxe9w6VF+ *ӆM82ĜٹYIdS m_}FS^]zY!^ tҭzޤ+t=0x-ˈN1nTC~1yZu B BxƬ-:0n ~&bdkc?#s~8< "eh.7h?7SJIœ\z֣"'Nu/,R&Ojβi΢lG.#Y̓Z5VF|P/ڎ2LO|C?Pt|G6'u{$Wh"%_֦K+VF7%jL*Mo=kZm>Ve6h 9jfbԌRA"3g2槎xG{]vGR %ڱ"?4$6ܑND6X"+km4,o_KRJ;XL8,̤=7\LG\,%iP<8{Z6/M[ H9Najli"G uK~2ʯU6 Ν Ar!:z8H([f5j׿?[R;P˶S}5ֹ6*6#^VZj~(BI#yc+ >%.Feޱr3ܳS,dB,;\ j!dѕ)($%PkWG[(&؇ҽk }/֔qÜl6 ؛[ʯ Al;$Bmֽ. 50w#q R^VLKK>ltf+|"/@_od]lwF.9f6JkJr o +ujiVe R$w, I9/#ڷ8 2/נEHke$s*(R`E?*yMGJ V k\sE]kU9FfQ\[ւW k\kb ^[f:7+v5hh5Nd9j(!1A0QaPq @?![oǃ`o7?ӏ}?8~,z3rC 8絩vC4odnzYh4P&xT^_s䬻y\>0NgK8v#Fjn=f[ /UIoȉ/9Qd=\eo`H;:ϕJ̯]CrraS :R'\@bL*n{(ٹ[_umÓ.3z;whuG LR5bP.˨?!< g׮|RYܠr7uJC\1Wl؍p'-zKcs0s?lMrPR,EjyZ# fUB噤.ҽR(ٔ#H7h,Og~n>ȫwÿjvNˢ'튑o3Ål,Yb1 '\mpK'48p1݉*֍cpȨܑA7)psx:2S05&`^AߌT3WTƥ؎L[CBi~怒:򷄃&ic3}@9d pquں*rs3 X힓 >/Ahʼn{DhrAF.I/}N7`fJ}7tmg5nFW`0 ;%7۲dTzz|- ; qYzÁt3qy\.볤Yc"q,,L;ȳ51(@[v88G:hi`.2E2Pn2pK᯦SKq9'UJ$,ic ψZC}o]!rT ĕ =BJM0vC9ʀK =Owlrv! ~=.eXE}~3OD&psa SjaBHn+'N۹+K9`1)8QO7y3ڂ,,B>n0d4XkDkKuQ %;+NHz1[`)79IW/;<0bCwӝ.錁^Ü?t~&XѯG9eB{ZqePǺVs7LK|oof\\M9ڒyCAH|6Lki;W搖E%)4>mCVThܓ.,R#z&5|! 0zdnN ]!!o {U,!ExNӜQ(i쁜DY!3,v`ƭp T795@n?1?]q8q fY"8-sُ#~(ݙ!3vHk~[Bv9O}[p0KU|K]ל;^L?(;Xrt"m l$+ &l^>7#C|ZgCpÀ?{hd y<ؑPNY1ÖFAָٍFyRUzN9܊cdY1FQRT|aeba㽇 f>t9vpWw  V`95h$Ox]Lov#4!&m%> *- AZ![#.*'`}\7#1 CY)TYe\h^Kdð07F7Ὑ`{Ck\!P .aseN7V/K'ie/RA -e+.z` դWUTԻ[Q2V^eÀ{Dc୛TP=we~dEWv@L!,7 ȒmF) RhE㞗CaTS("9#˵'X'a0JQGHD7)>bil0g - BCxw*=W<=6'鱞cedsvn%NpѢOHxji%ay_q$6G"5/񝺢^(_;)%N>lB (SƶͺsG~'њJNS"r~>+ q-feͶ6|GjUYq55.ͷg g:lW6C: iS!zm __Kkߙ}㞷?m[_>X}Ǐ $s?6$=jc 8M[C ZPBL%0N V +Y")ړR+(@zԴqZZ=@ ήu` I8="D&hSBPGx,CY4>@ut;l#WZ^s. a,Q e,^CLZ>~~ ac;OU xqq  _=~etkqGb-xqLG=l|)e!V_4w*l~00~.jRü: !؏aN6z88Gð.Z۵#qqɣje>K,,2'N.+RrETqsa"ehh-#wvb5H|:*G5]*@9[ ?lbU|!-{-a: 6(XZheP|5҄J5U7Úx뱖_尕i6  [ ('㋪〮>#k{60* )l=*-+G ۛ9Ɲiב'2FpG&],4;AJv{~!Iӵ0`GŎ3g%jiMcHyz}z4v˷ׇ.ڂ,#喷vu0ZhզwQI?x&1k90ʢiBZW'iڏDll=20eXl/. Zldde-ñ9d`eǬ"4""4e[p7l%pbb okʸ(ޢ?]CRA>ElrPI^[&leh22l~нAļZ z=q ti`q|8AoQzP[#r񠦳BvA8%1xu#/yheCiu!=lEre7:e|+eܑXcK"GnADQrT,/#d9Ug*Y0pYsuŸ6Ѱ%effPI8?ݥ҈ɳ;%4lT @hɀSȤsѽ];Qm!$|h04i)tv>%H(rbH iDz`,_aZ7*1!pZFf}Di~dRB:;{M~!nvN8 uEGbAl}Io+DB,$6E/$vNY%#FA C͔6D6B ^,~P>MZVPCL4GKE0B29:7LlEU].Om R  \{C* M @:] -<4g Hfu,H1Dx,1+p[|BE2ah^ݗNMCVDq 3#IɌg i 4I6RKe 7( yC xMqƨFW~7-Ĉpma樋  1K Pe'S]$(>]#FV,c ͑K Ag Qֶ]IL-@Ãp(OʣQ2*7'o>|xGjp#<2"N l^PFPtYIaEJ]ph3@2|}AY6nQ2(Q3fA!qqCcT&X,3L]o*Ik-{IF@;{ KAo`4oHєW@Z=RCH`PH10IqulL@tMP Drm_eXh~ 'mmQE-"CFt1danf0̈́mࡻ 'ЀB!D3z21FmT!#9Cg^ ~Z1y&@3J`kZ9G XEf?M, Y Мvu_Mq2Q\DvWBGoj0죠\E=3r[ OwT Є%7 3eu+J_8ӥE-˝Ui]:yK455 -TPr$>(, :y8B'B d65AI "K>^>&pѼ#P\1"Lq6l1~YϽq jwNL; 6lvye͚($l Av 5((omqfnwe6aE@AD$ &F w]DQY5FS!  RT6ӷ|Xop|}~ k7C?DL#Ò 5,'PE,[ZouPjm b hb:g#A,p)WC3eEʣ5OyA@Cke >Q =]c~@0щѬ7Nxq%&1cD cQ䲁qC-ܐ:&[! (FNʣDMٔ(6Mۭ j.(CВ\O1y%Qi\*ٿFr q$݆fDLDE5@08rX "QOWB.$S`m2d"oO6/)lTdܢ%Mn<'O]vȵ<3&mDlʉ6@l0N=?g(%g7/MMߏ+!1 0AQaq@P?v]l[?]R(8>$)H C`r# QQ,AO20qsTFaS|Q|=&g K\Sub#h&@H`^ `A4FA@>ZO@iG4CXf 9@O4'S-'rL Q7<=P]lW# `S:+nɬ>{' <߄ : (KhB)`10CʔM&<#mHP FF 4 0K}s- @B;!%/"Wb3b *Z |""Z`s1=2 {CdXmf $ dxX%3Ic.?T"FPfS!g!`C.I:8 qQF&a!71( , (@/- )2#"@;Mi֌Sn@W2v؁Gh@<<-D!/ @$A#bl#TPM]  0f`FK>ij@-,$Ay(м>s.dYL3z(lRuB9Xk6lfYcRbe! (E80;A5ҜJR|z6 NEJ\kF@(hFd&NvGVPԈa iIt0D  ĠCj¤a3 @T;,692y"@ y;pRmD0apA xUc@,\'.s +8 S'< =Mq"J" ;(PAƋ'lH!kH`ԥ!uRt0J66O\0@@ɤW4"VQq,}tE5bS6 kT4TD Ky[̸*wXڼLԍIS 84 6L`!NADBu 6F DK6F-/a} :(6 6+^aG efQ%xޱ+!73ڱc׮cj >:h HQi$2ssx1 H Y` 8Ȅ?qM} Hi05#eA 8 'FdJ$ACSK]*LpLIU'%X7 Gl%_"N#l7 @hPf鋮 JXVmYKJ`H0tECP<ŏ'55( a$ cג $C*XLT>Ϯ~Nd1JBcbF(*AeML0i 8 ]U)4%@"bc+=ha)HVi!P?LCK]*Z%Qq) 2Yi(59F)@1c":'p E Dci"F(Q%/" 4{SL*iA"AETaMԘ)(@@=.C@t *5EA?l3C4 pB t qjIwF@|KFm.tl:pž+"$ɫxC B—c^E41@a.k(yDP08 (d2J2Sp1,]_z@@{O :.N !=Wlzae` >* ( K&&#80TkFm$p]H:&ڜ,mGP: \$!e1 e6@ ]aA^ah@ +!W!AAI=f5Py |Jn "~` -J8XG Lh`G9"Ib%F|H ZSth)֍fr.!x:rHd0>ÃyJ .0>ȹ'G ȩ( N/ PdFX¦,!!2-zBP2%]? */&RlRh27 M& e8/?q=t/]*Ϯ\~J!jquery-ui-1.12.1/demos/position/images/flight.jpg000066400000000000000000001015451276627555100217530ustar00rootroot00000000000000JFIFHHLEAD Technologies Inc. V1.01C   C    3 Z\(,pqKSx'br'8㎄8A7 q9u$TF HpGRWGpQiaŠ,(F(@N0ͰBq (M9&e(XhR Hq4E pŽ (8-ܧb4}V'㎤aq-=YuUL/))p*jic$K->pQÅ!ןa8|(QETѝ9e4`dcjRKÅBӇC&,q-J~n6 (u?hͣqF) CiTF?q,WSˆ!0p0ТS)dm>s3ÅQ1n>udrh`cF K XJZa!o7)ǮϞ<`,>6$QJjq_:k}y`!:Bׯ3w"z4،`1iܨzH)S+*ضAa<:8xSHʾԔ%8xf-u~PuF"M 4mb5(knZ FIqUzUPdKܥFK(|2JF^ce}\DDz9L0h8G%## 0 ELޞ1Z>^p5ƗťERe^]&SH\_X%+**y?y窩M$Im2*,2|8󪒽(hzO8~;;(~wC/je)me%P%v4޸/a=qii}ZZ2ZԹZA"%bqJ͵Y+=^q8ux\^w ÇHާvj}JN^C?}^[|>OL2B2D8,%6zcVܻf~;Taq\(?n_cN:HG:5O\Uzwf>DYx~ 6_ڟyq)CO+Ϣ6=1?Ro=pgNY-$4XzL~Xѽ_YVx0 #$`zնYWz2Gtތ՛z~}/>zy=G|3{rEViž6ME,Nh}E~oחZ}Jy]G̼ucye]J7'nWi9NzlnL1tHRROŸ+@QwK:7l|m+Mvg*7|&gMԇBJK~מST/ ^kApШhj>ݰArzC_Epќݙz49mI|ޙXf5Fgy%$ %YeiDouFis2 pWj@4Pȸ29.|4+ =mL˅?^NSf}>_s, *&%Fca:,5RQ]KbJA8 \EiAMkuRUƿ?ͼ7w1B`J.%`4COD}ybJzJx$C1Be!;΅#$8A:po l~az@{ѷ`G뉱=\=_dN%b\XD"dYF!V-*Ϋnxꬠ,) pC8 F(AmE=g5:]'iê7\%I?w>lyjKqڄrb1GyE9hi,06Fo!Ҿ‰QGSaÎF!1hFRq&ne0G=M4/'-둺}x;|j=|_ʓșN6"%*Ly.q|r : %()i yagQs;jK+_{a\AsU}/8C{h>w\+OSʷ68偫-%:8D/r-,e#2;rS?6LWDܴˢѻgڧٚ?ɦtu xtKw8(~-6JvqrSY8|mQÅ֠`@6D*ThE!!…p;>tZY7æ'9TTA)cpU8AD5Uh^`udD54K}1:Ɣ4AiW;^zs%%ľEVt(vA0eFFq1,YÇ/ p!ò>tt*~Ӂhz/#U H]. 4ŕ>h>:]oxtGœPG 4aԙd$#1G9TQ87Iڲu/yyuiL%yԢ@ޘ38Ohxþ\8i #Q`6p)q^]x.V>!apiYjM^y]Sgpb-ocWmAL]\pyoT Eh @/~F)DBYUZ1L>kGƧSGsM}ZcyKԤB6": !8RR1ppU?\pǣwf/1xX17Q\/n'A^̟ _+ !1"02#3@AP>Llra {ޠE1,[G.zs,d+57,ԧ0,9VqmL3!lEzm50{!4K}2[Mp%5\exfFIs)ObrnSyNJD5R \?/|qV*WQszuijZU㓕&Rz܊kYbZQҪ}w6=UKJo"/#~z/# (VTw;wH%Md`j蟙ۍ{̎+Hطyۜwg ;J1͐P?Zeb}O.VۃL^԰(YJwj✒:mB.UO崥I1/e/,oƳ>WvjoppZ;ieP=K|8#L{ɏfsssssq>5q,5.LA{3(-n Fh;jbU]*$df喵|J3Jwr<+!uBqu51A{Vj[fycT}:G??s+|M a1vbdUBW"&2M{+uU]UCrZ) 6xef7U׀F1;xij| "f9L"ҬIhgy쾟=eXMmfToQ>7SgFpK(Xl8= H6y23m-njtiI݇$0%j?gf6zZ1JXhd,ާ_APk>Cc5-m#L\0ܢ-d N pcx?Pe}s0WYYB^pը&uNx&n=V`" Kʰ.c` s+Wﲸk^|r,&1 ޥXHEwMC1uasL&^7Z}b,4OMKtCS^Rx:eG2U^2ol$07uǖ'c&Xibuvc8A^z4S{~o,Bՙ]SPF3ˇi RSwhXkis[d64<4iU, :P|5XݡAw(NfGxc[d)T{i0G2 9oLF巢O*Xq|jMXSd丶[³r֦{CY4<bB#|Eni?%y _Nve!Gܪ)zY`;o[to  O.ũ k7Co[򲲉aޡWK(=Ws/B3=ȇ}eVyV:If!ja]'_xukk* lF xz\b-#[J&uvS3S~NdlUf|1Bzv٩oWUO%tޣWdԪ J4XbZex#|1m  >SSI[ #e\$q ʘ,7˯9 =7.Lb5NInd'8{ kcdv:'2y-Odո~=gxaF?Iw,RQ_1 ndLoFW*Lfiح-4c{,`n(Æ)-OVjd%%y}~7u3|TjY(XoT٘g8ߗmU-PV+C?ʼnͯc;w nO JjO懂UEQrifhը"` m}5 A7OxTRrʿ,q\1ez U.(yu]nZX7>jx1Z Y_xs%Zf@Y255.²JCSjjkذYUeoxeHTܴh恙cLƺ}l~ )zڬ+,V,!s `TzOSƿS"jjt&xaҫML`r8 N?{:j,>u aFl3Zow˷eZbkK<\`5c0.ޔ[p °+T-+-* ^&:&@y0 ؞m(b2}e d&34LuN c{> u7k"ʒůȘb!y^0^] 3_mmVJjE%." l_~J0 hy-7x8Sԏ) [q3/([2T > *& 0-MMMMMJVuyEٍ#lXŏz ^j' !1@P0AQq2`a"?h:P?Hx@?**L(zx K*bʯ\6m[csa0~\$G8?|J02}[d*۠Z-ȜjᎂWZᤁVyuӡjq?SC&dkX +Uj4Sf%:^~&!'VjHkŚ)ҢM>j?<[#5^N piq ݿ*XlB FeL:Y^lMJjUqWgj\ví̟c*d*>zp稜|cs2b*gmCz'ufVULw;Qj\ݨRDm}#Ͻ+kf"ߩNr~j=8;'*?2odb1#%C0ac7B0  _A C#ZwLL76NVJj=Q(ČF#㧒Y,I&jH…J!|"DdjE12_5'j_G}=/pmn3',t J/bls"DYOէwu]#ߔV_9!1A@Q "02PaRqBb#CS?j3yt{4w #+c!Gn^A9>/q'§V pQᆝy*?4^co[N)pMc[hCYįhET ]tM|Qr)v(4""8 ]{DLRm¼ŭ8q[d(6;784I^Ak-28k<)ҪRtBO\#-g9E2nS!{@tgqEJWTtC,lDjB< 3bj5 _8-`f\0j>3cͧGG8BM-cse`nhd+i 8!D &z,~"p)-LMLu~RƜs[ Z[ wٟ$KS^#U${⋯⚚*Ϣq-'c˟P&<|,g+*pH|1 HکܪN$]j`n2<NV9+ !ENU(CyӊjL)pۮ k"S*۴3 ۈT{z? StrT:Ns)^!; ͏U@EG.×m 1A,M{"Uj{Dޣ#0o qGۼH!h-?mto::?tYf ^"p9*ƚ&:T*yE87-wM@ k;%Ž'-NdhB|ESugڛs^s.0sq~gs?BTlx$ANanX,+{_O;E/n)Thm~M?!׶:f:}HVU6?ߒ/W|[[[skCs9:}T>Bԅ@WBzn4#QN& lԁ/bi︟kCEֈeF9Fiζ*ubn1k5، a}WR(P2`A4bJs{*o$wW=vW l &dv8!uJ>Qo/e]Oy!W*58&0"p)n4ḆGZf(}3QBZne7]1bSi0$_Kv,T{V &:cʎT!'.Ue}kM k.t`̓HTg@ݺ49~81Л^%5сBL/*x!3>JU%W;}dVTn~Djt gU*U0SU^_xVc딞a1UJB3^_]CVB[ÂXPЧ>mTplS%g\Bf~cXl"I>(T<*wUl*nIאTq ֳm.B$8qVVOd׎@*AJ䰲8Z;Qn4(vefUs\>[|dɵ\hF<4O&\e8NVMmꁖg}5e IfrV)j y4 j&U.LJlC[~UZd ʋlᔭb66sOMڒ}2 b*sN;-iRB mD.o/0BHtLGBX 1uYOh/7LT *fUT0B-Fp x 77g8i B0cbIf:jѽhwVPʘ#&s[5u\Jh*YهT!̗ut׳Є#6g@$NVk+7P`ϐ'Jq&ElrVv"N t)<Z91^Ǵ9pLV}&#sCQE1Y9Hi g/F`a*' ćT&, b+0eM uV}aT/ YV&8DLSKj%8 q;c#Zhd tfrF=h/Ul]]+nUQB';,/₇?gW&k:Ϋln]{N[E CW#.r7\F3|2qUhLSP0C8~V;PhFPbJxjJtya/p2ˠX]h`W;1`5 \ Vʱp_ε+,U=P3qO'+Ip9VE9'n?E q)Q9n>or)!1AQaq 0@?!@B6]>x\d] tsU+DOKn}.xI]cvIDAAt_%_t4 'Ĥy\O"## Iu _-Wd/PXidqKm-J\0M֫O1(  Ɖ7^z>S C..R9퐧jFZtA.gM`U|whJUP݉]A@ 5>M.GݗKlD({r]Y> W!y0\IvȮTͯ - cU5y{ =l9.1ՠ$/3e  K$t 1UzhP$AhIALQz:vL[bokꑑsOR7k aKSLe*NZEo"% ,j1 l໶5p*^˶e\}@S A@^ۇCXFވxsv\Q/jΊ9s_bBn'L4RGm$;0eOwQ2d h0hc,jJ*2̭>ܘh'bm.q^LԟI&V "VlLB@k]y(גNGӉiq*;ONTq'.g%VbB_m6=[|k!)^* /ws Uk[i6{[bbbdvPl)*<zvU\?<2|f1hԈ-X: 1 8P%Ď֗II=<0DИ ʪ:Y=S)9%1;4 WqpHFذEm"LLO c],]V9￑y-~%9>Es^d&O{62ø&o!Nk)nтRDÌ]d9'Wejy@^F%PoMFwhhB?qUcw%}@т'3i蹉 ԃڅߦB\&ܗlȍYQ֗aH ͈(feSo2vLsZ/KB-+K4d0D`j6TjjT61f(dWJVtC~E.:p2x5Latc5t@kE"]]Gk/ȪRO;/<*u͓,'MC' l/$=5QGl6N9>NrGJo'ԦNǕ0ۏ'5Nb֛EuE3vt:AoVK@,$m[ 䥡9a: 2 BE`6%J)5G4iGJ~ʞG^M5-˟m}I"02 y?pEnpxM:el,-넓AKnB&1j•[-%򰰗O腳yWgjo5tj^ gW*y?,,:vn1KB81y{PqYjP+>߁hF S~H'@IIG"es~"J&*Z VxȾψI0RjO9Hen{2ByYq4CJ๹fU F&_ZԑB ,JY΢Ahcu똕vRINk)r5M9d̑ n?nϺ V""H*JK]04=eGA=}pxz^'3 QAԔHǕF=Vϳ=Hyf%[1bi+P%8v$a!k6 2R'Y %?LgDΩc)ZKh'bD*ZKoBr}O슉m·"Y@ķhT7!$j uE-Q#uX6h_V|eʿqA,$6'֢ĤMN2Zd1YT"=uyR'}mQD(k"i8ó,2H媁VhEZ#- ݸ|$|!!pWZ=93QY`56tg,еUR.;P06Ip;Qt7B)b (=вV_͌E˃!JNe.xn ?9ȪAEZ1^TrgUDeFg)!MUu,"BVKGO!K**ɰ!׵(e夡I$\DFՍ%xKBoSJ i^W4:i`'/zfM8z/ 45龫U,yVbp] ys3Fp}dғ,zط&6싸Jbr8,7y(Fy"j:eYT';xɤr|GГ|X2ag. 4?d<4KrQ@شDV_.{N3xpmʂyY ,HHoy hthz UMJxֻT5'TLlpLLS]F7Bt!W4SMf-Bd:tu4!C"8+ٔ\\NrL}]1LJviבG7ІrO)jPr2+am\XcN"c%OLCC|e5GB p,J13}l$jƹdK!tOD_ pݑ#Ъ|,V?h35?VM%ź"3 5I:bi[| tfBx1y-AVuBtYVhֳmYUR#N3NU<9_ ӆEa8$JYXYB‰a2ͫAs\&WpwUW\N $I_GX'|_D$`vm8&?#F IZG蝐#`͜C3;He?EXuD\ 0 L6"9g+= ҴƳ"屉II$/~0TA 4NX[BLdъ$ bnQ*h.j'~BnnO"F"_V8Q~|BWAU{g|{PT"D]PՐD4"S}e:/+r^06$W@o#r6<]q@ü%Ģ!$L̟E 3A~ |r S: "ZY97B̒ O,/s"6]{KoσTw?t &CE)_FJOVǨNUюl2Se_'VZ؞kS%`k< %ƢC+6$[ď1#i4Q6UtuN]Q^U(dj 5Ԍ:XC)]'"_K0Q}9;GI ]|^8m ZbD]ȍ7qDo#6ݑnwFWPJF& b3[&{q!)E}j-\ z.Q [7Yyi^83ҹD+MD./>PB" MבIlM$n쫓5!<2; Ej$&hhDκ=D‡l;N_e候Il)t/tn˗eQd+~}nqBDݝţxlZ||GQtA]wz V(ͱ'\F,,$ۯ($:qkۋ2ȑGR"n/jW$mcꔒuY.ؘsd ^hCz-[%ٷd;V7#e߆ ZU3v!D_<BKUq@ F5!-Յϒu414;:129gARDy㍊m_/OIT>FD407%e+k0O0Њҝe穀ILM@0 1j0IAOāRllA4 q =ז IH 2V(!1 AQ0@aPq?D,a?z]Th{StvN8U(L8{vU]$&4 _$sʄ7mI& ^7,r@Ar@ @DvDf{Fҷ D%mn3 m qW\6"."@8! h _QS#N 71`=8{UEP8 DPO0V0"ގA%E0'H20vo4,1eptb_ՋX:'`c9iPCk#a,,#(td`-@ULAp4Y Ѐ0?1E (KD;PsycA"\}Ԏ54L&x0[^m FϰА( 80䈬bo %ms %I.='& ,h⃞X֪ n( ov7T Qe`Yv ``lLc2 TChVzD4scH lBcHfgD7|rL >Ľ*V%E g""*UCQTv4'b@!DH.#b-(q#Ё!i!Lh:]&!PmQ7bC"w~ֱxspUhAC6.x4)"SGd=|AYȢgh(/x <@B0#@a (BG,y .ocqhKAvDSȨ #衼$ W@X #Md㇑ <>6@y* R:v(L7B-cBbs"g ̿P6 h qJ 8S~! Bh1 . ~ᅮ<*OO$3kpwcqރxd dB2! am g?=ț 섶~_#nqG3ɍ7?(S g2 ,bIRLjQ'Z&' WD=1k(4*!1A Qaq0ѡ@P?+)go}9k {[V5@ ĩX+Ipe(PJ½,e e|GC?P]ftsb].\=8jRQ+}*˗V}ܟ H2>JU57 rkM`?MUөgfb_Hk,n\U4;R맱 NIxxjW 9xYL3^z&͡f\vvp>J;{S`:٫seJ*TXFNQ}:эt 4%ʔ2S&-u(U(EyO~+|x}]T ¸(M0@ V._LkZFZ[VQ%5d[ϴ D ^bX\}6ZKѫ.Һi;& sUJa^߮,DDTҍ{Q*v. e4S 9YMק5gOF.\cRCY^!_3B^J}RfnɆ9kL+ByFMF i*V'XḾ;@!`h5"Es^N*de#= cM]O!w0IXJaD6MȚQں@THּ@'W6ko4J˳'q1"nEdٖWk<obJVo6D/][xZԕZF 8Qv鸂:x,i3g3Ӧ\ 4 [Γ[1h@uN]*d0}LLac#f 6CwpHiY~Z9=S wLܿX3;$͕5~ZsGû{,'"whj*/~s46y\h1phՓRʂ2p2S#x ^g,paRH*W˗/4ዬ@D0m_8?&|ze̤פ(n<Μ[̭7^R}S|e ~% 5u۔S:NgyI * oWS99Gs(hʙ4'gnL(d9=::0McSΧTj J?1ttv|m:**7^8n^rdu:{L͔Ir,-\F9A/Q P[~4MxPn+Uߛɼ@3 iD|LS>| ^\OZZOW8\H:.MtxhbP/4#PL.7 aF\6°rv dϺZs.%Ltb9z5Qx _PdmiATGhV?IԈ%%qe1GH],9PfS\#θ9ddG'51ۂ ꘽/?E(ҥEcSɼ@Ɠ5.IN#̀eoSΞCIۗGՍpB#mmW}o)i=oDI_Q=&ZsDQCHeʜgM\?lÜȝbl|}!ʘ\9M%i,Tr\ E3\Rju(8V&wFgCөkRsj}$%:$~ <=\lr">xjvTwrvQx+GT?qE ݔ9.^?6GN}}Fc"Z/Xwlw>@g|f`ϖ?k?-/bi:t765['= 埳+h콐ؔv+_nh?uS^y~d~:{o0//vb<):o_X{ĵCO1/KBgiI\HO-:ra~_(o5O^P&ʏ"-ׂ+a3Bv_kjC!?'iOv fn-e VIskG(_t|cA|뮧e+jŏ"jn7sy}{El`}098忴SεCɀӠ=y>r.yt]P?-o쟱%~ jeSkf&2ôl(GS6â d%#^R9?Lφ|B}lC02 |,@@rWTg4_LTgٹn,^l:X(#h(Q@ ä2*j3 CA;Wpuxf13Mb R_#C_3|T_F}= -m:}cDo=ZֺNgRl&OߟP Dp!]kXŃ:&k»Zp>b2%h=0kR\]n#9G(˖Я/.xw:O7}&8j/SHx0 $#%Akz_&[\lp`@(VwW(!1AQaq 0?!BT*B h_!htkT6Kk؀M.;4ť띳(80 0|C{Zz5Frw sHQ)]}K#|Ļ0|+#X"'*5t5t|4 1 *8q"z@=IP%zz-WӺ=a̦^w}Lr/աzM.4.uŃXt:65f"_eք9χ@eYgލyAlV|2 |Y)B ny{?h[C8;,q"J*JʏHB T@W Q]4;򼮫a*H,lZ5TS;-Ҍz;"䍁u"mt@UZqiޠ?S - !uxIKyZ1]:ЈieS;gŊyNW KpkSeHGcBX|M7/Kzoأ=}<y|;FOC!@TR^v0 `@`Cwv8Zi 0OEiAP{̅WL]n A4Zs@l͝xw*ainH6pșޠG u_b2{,qq XGق{71)/jbK߄Cx-2%JwESiH l]N{L`HTe1 MJñf cr(erd< m0eע֠0} FCKnL2@P j D)1RWUt-tsվLA. l:H^9iuvK5|}@C}.#dҾGQ0 -'gG bM:b~ՇW]X1 ȧ* CȚGcZz͠Q*2iK}c*& 8UXZfOmLi AL ,5C*Jot/ʆjՂЄon[#X_ ax(Yojȑ8W^n1jQ% աk򄔙_Mvc.1%6#?L.!{2%y%,@M@CDr'sb"z cב4 %DXJP5ZVvX8 Q:MZv"!2 3 2X3jJ>XM`.rG"U2#cbaЧGZD/oUwR +=S5d0]* j6 Љ.bo̿avKa|+}v[]ca)3zT81F E 5U;6 =-= >s[x?EM_S2a("F:]D.{1 s Y91p CC[ ί,%Kpz5 !ܻy ԊRm,:YhE"ׅ_0& ip@uL}Ə6 2B\]fGqP0ȏ){:qw_nf04a]\@,jM 4)?OҠ켮^:]+c\oڹ]UeIsKe_.SAYĴbi ^RՍ XK (q^շ|gwS1;lvӴg QFSKh/r$JS4<#r(O(%?#O" q 8m6- rRA![@Sl 2wҨ rZYɟ} b-u\<zTE͜l9ӧF.r2Wx\b@~w CE+-un j< # ePWCp#20`ãBޜ"HK@M@@pըJR.uܾ~ѡDticJ PƘQ7*Dj-ʽl'Y : ̎H`h0TLDoɃ/" Fyzt={zRQ,L..k]8K8a;t0rK;A(=;`kh,n4l̒0A|z0D@tBc5m p75<晖7H5IJV`~vYB+za[)ÀYyWX{B@tũl5af@`i ޙ_?570r/OB|>qF[;uͳkW'?rb*%},Nhpl4 uVNpF1ݎ /'G i|/%թ%]"ްiK:QZUL]:l+ sQO_#[_=f*((!  ij_>v(-uHxo!0ui#8d( jg3_3MHApnb[y$qc#%IxʅLhe+148S ڽP$<k.Jl9;ڕȯ,(b\{~2u";Cƒ\3wy|viaڎ ˦Ǝ2JHԈv< j%tà7-$tPN֛JiOBZ5} 6 wlE[z<'MT$D]i\ -jj-`|Jմi[iL@(?7T}#o=vy}M̓D &q0~ M 4ЦNpSz9X֎Q j2S=#lb` PFbC0{B b\k:0hvGbz[@_60Fᘬu@7vlb3P҆k[;o\ %XU[X@8.%.7{7+hBYB .!":. LjQеVa,9# 1˃~+BOYe5;MUu@WznXn!X3agjf6EUucںi_ 콹,!X:ٗ #;W}!H)rw̲GG1# [N ߳3Vb1Drҥ2 6Z@ zueuevw4Ext0kj^Ě*09>%w1SHA+t#z صN+IB v9 x59i3,GԨh#eyz^5DcHN Ť8I{B@5݌lq" $ZBYa* Kwg-P,«%.X`Pr6[hl{uBE-uK` jg`X#Q,Kѵ ;Qޥ(+R -0kr:7\P.ihŹ1K"eL5'}?̼׊V9.Z5aY3Sʱc5UWE,xGsQ<02U*"pi-:X-ܻJP(U*>6w%IUs]eg0 Zws*3F 1^gƨ'*ה|rwHD~Ӑډ3-Sw~T;h!grPG`>ƌP'.{BV).\!Ac.ufvA|B;3e0J7S\_w2D)H3w\:`[fv&+튏D ANzo xӴ1{4D ТJnM}n5mMM?+Izn:!`4/9mz2J:_f5mۻ(/E2?ce2YiV5 +X&kK_auf,L !j]i+G*IS 7>T{dNϗGriqcGUr} p\_1ǥ@Y1N(V+ R׃SN Y-Y{hxiRe7Kdt :Ʉ蟸Qp&jJ]Gy$lٴ}m*~@yy&0JפP7`xrҶy"-8N  {U FPzˌ8-[+I pp4STE{o6 "SA%mg'u0⣢LI,Vl]qS>Hab@M~3 {j\7jt%n27b˙ox-ȊUP5Z kBִ@b8`hqTQ/URU;ٟڛBX{ sD8cܦ;:9r~BH\/ #kZʀ=~q=@&8Du:w>+xǎcӰbU|d7>ңleBf\((C8zC=F3T=Bc+oqH'볣4rq|QqR\ dM 10mS""X0Ϯ݀`V"a"B u[vj:ٴzĭRp]qf*RpQ!RӉV#ef䠮K ./U!!Hpafqm thތZ; qڨ/(TT^JilTXq}akh8Oz ?}rvӌp6I0D.SDo1AtvI(1VBk:xw~-p(P%עb)::ÇŢ\J_zVaF.  B#L#K~>@. ujuK HKLJ] kofhaL2 .*QJ*k4͑LFdԠd;62tM eX4o7 VAo g F-Tksfd,__X7QCu UAw(fWI.8}a]Xq*{WN83Z_g;+8G#2StAfJzp* ) Uy7K}.ɧ6S< `;Myk)m!ˉ Z)Yڦ\q;$#AW ʚC*ѧs vҲs+,'G[JߘܯZmN dZ\&i` {_G4UҩZ1 \{u:W5 0G)2 UoR^ҩ SWeCɪS ɩ(D}; !(AFRtO*l/p!@P+QZ@MPoAпdJE5'kG(!͆u!֥f0돸=%^~KeGYVk0] hMl: W.;7rJA65[)oX09mh ?I&YwRV q+7_kRv4v1p*SQ^}} ?~O_~Rb @ctMS~"1L(h'X8MGnED5 JyEN7pfNF և`NYPuݞݓ(%dDzڦC"ߤFvmGv_)/ҷzOJɊ_@^-Skuv/b,EQ` FVlK,F mkNihj-[VՕb̂oNvy }DBsIۻs?>R6kpe5G2+7c~Z |=_p1JSGs0_3-h.Њ.M$е-qjfSd~L wۆYӑ8OLaN<5OEGCF4e=K),hf{DMBM&] W) "QĨj Y˂V6YΧAL1oF[%etrS۞%%T`y>?ߨ0j 0(GtxOYi{SHz/ {Anh܂ݹ~S}C|JCWiٕ-5'>>O/0{_5a:9AZj=229αUkQZyULĤ,>_Jru~]z(fkFo˪}Sئ&JQ VD/]Ľsu:jk4l lލf/cY#זm. 5}#`{9a%]A3H0`˯onu)9L!.^zDjD>pؗ'A>,̭U]ސ4`]3&R,GG1N~ ӈ:._ *^-:=v&%L~f }Gnj &i.EwQ|q=2H|^fGVZVvS}Ihlz=Z,xZ3]WW +r8YRV$mz-3)k8֯4xnxlV*Ğ2Rj'WT2|\CңZSܤ^}e~!xL/|XJ&Y]1 -1H̳O \и]}Ԅ&~ U""Yq+7PC~Uj&:qP80AY `ʺR8ίM"ñhgW]u"ŻTˌTrCE4^S)t:8p:@<@Ȃ]G=U6B4/ `D(rN;ތҐ-#},` ތ!:(|g mn*z@_6z Dw @{w\P@&}Bjquery-ui-1.12.1/demos/position/images/rocket.jpg000066400000000000000000001003321276627555100217560ustar00rootroot00000000000000JFIFHHC C     a, ~sO <%6z%z=MR'Dm PCK[UW$[Y/Eaפ@(P$2,F ^9YO_"c,UD2^!!4S a9GaBSi0pQ(0in-#!ixl6( \x~RSDLl{|r ~{\*,uo2`y?3$D'~aǫGjOԿk5ϝ%,{r'^ T̼XԿYVjK9#8"f<<p{7MMTd=ZGog:r=x=4ͯJr],lr(Ryati/;M7F/nO"MnM2WkVg?Ku]ܲMwOtLˉtr^*bTMLm|3'jLZHtr e:\tǪeiRƴٶ9GTB68spfsk5Ssyޙm~Vv7{\54uems-~ꔺ ?%~`ˬ /^o ZGv1 rj+zMer\LvhtnK%Rjy^MS<sp.tͷ$-i_j{U"ƪe䤼Լ٫y.u,CsCqϧCa9oy;-<r+<-rӸ֑rz+)P){AV9|ՔhtySϧ~nZlĖ#?iط>^z?az̟Y9&eyάݩ3UfN?g?@NlK|oÿc{6,IXEH9KW8rg'N=.ZvV9R.rvk_}ǯSӱuLRׄNS?.*,,vvO͡禋!=7=T]aNj.:xcVѱߧSȂ*f e)H(^_.han<5tbko]ӯ6k9jL9bKI%Mݺ^8$|Ilaމn`./-k/<'3!W#dmz%(`k<0S*8oBɨyۮ+:1i2Buq*!ׄШ(dxW3ӛ(IX8H^<泒}2!rh4 UȆ{c^:7X1#w@x0_=^2xF,֯T͸ZvϝV9OÕ<#<`1H" 85-Sϵ.LUΖ2j^:;:$;#ҏ)ylG7779NS7ܦ#=D77Ђ{g;l}'XL. 6sh?s&m7zm~SsB.S Zl{zY9NP?a jm8=~'ylqbgnz-S}vf{D.bX*''}5ʲxXNhg67.ss7/ɴ4!SpCb3'gX{f#`z{ P>ݸ0 }q<ӄ,85#Ҭfh9@+DZ?̛e;p&?_uxV N_'\,C3Y:TV*Q3u#p?]Ka:o nr",ҙрDYn;eeSfg5DA'%+[=?Q9I Qlpj'AX" V9MckpFǕXDDQ-Hg7%`IeURGJh-gF;Z?L|ȷ̙υWM:Vk82b?RqfMqsq^DQF[h2C,[Pרb2r-eRx\),]un7aXiRm2%gZJk\["UF O$8WAϻ~FDy8$¿S')ٚ2ECIun\kϩ]&] D 0"5 Y*{6z*g7G?໅ Ӕ Z)_ؓ=.o^@=qSfvL"DXJ+RVȷw ۮ3jYnizz O.̭*Y[7<7klaw8w-fWV"Jqt"U{g(RMBPTVVx넭F#)]@pψRd;/58ԮQ+*J=qiu*e1(ʵ OԦ f]ˋUlэ2 My4J֤k_uU-1jbW&C5vqk>1jmS}Ɍ]Id䊧xJhdZYn7aWULZĦ%Zi LJPB{VbSZLGoxj7I˲ic3Ϙ6mIURretz]EP 5Ǵ(b8J&u.GNU4jGP 6{ XsF/3-fB{mʩԮsS$#ة8-c$D[-g4bщ>Iݹ ?0 V}W1N D픻UgoLM/SL:[Oef`;ΰ=OTN;Y1 ,+[k19;hWH(y㙙xIdd5ޟn FMt݆I{`N2z1 8 Xvuܺ^hs!#٨U83(,:jVjΥER'ks_ֺc0"V+sgZ,0bweq8H<ޔT:3.zFfuMmFTyەWj*r"lŧZg 1LV8l/V`4lfZiEjkdv5c%Sh,s )2%aCttaUG v6&Mxy+8߳S`jޘfYxBJ]s9mBy (%,ӔŮ׳&r#&Z`еWqLƧ+&\O{ H+_%x~zt y fb|kz.p=D~8S[P"fŽ =]`HU}C qj ,+UD -bUZ`6zg,6w Cٹl]pTˮQmhzv~Ōr *ʫ#k7hK/t9lWE%C1$WD>WdrDWj{)GGmLLL<&6_tQ/Ho*#k9ǐ/|6/llmވ!CG'5kXceڰ-ۢu142%EQXQ5#*dD7b6B(оMYą9gQcbDy_h%YO yضG6ts_WgE2=S)e2LS)grnOe2$e2L,C?' !0R1@A2q?G39gs?G39gs?G39gs?G$If}H9'rO/_G39_/hZ-EkQXHR)iE"_Dz,^V_et~,>_y/]lflF,lJ,suMzح2+֊Y!f!g8GAb\zrlWjꇍ鸼,ˢzy ;8Q(^kщe^eJ5x7"lCT<xԅ4,F9J.Y^hQ!̢BimeُzV=Zt,.ߝ+PYb-/얹-KF$4(UފǛ -cslFhسȉJEbYcl"[)^D(>")a$"u aa,X+'ȝBXDžҲĄ/6юB4KsefnEQF@m(H26Dr -Zt^T,֘,J-F͔m6K,Mi:$܄(#hmYeYeVGHZUE!!DP6) Ї 2*eL-+cff]ES,Xn,_{z>6>eVih fmebF7iFlDq3d%ii[e<3#Ilkcti g^ؿBLYe,Yg-$ŢG- ,,4?.҇]D!1AQ "2a3Bq#R04CSbr$@PTcs?!|<]<ʮ73>͇u9uN]Q\guK_1WJP}+wu8/| ϊ]I.W]C~*WQzB/u.75\CX(H]D/C~فDKww>j~u\VQˈ7j\\yUsV T~qQJؿbJujzՎUWSjXw*T+bؔ[Uj%jjUږʡexT*ڪٯ^5']WT2TkʋWBfWSR*TSjlHFVw 899*Cn/|Z2^#;/7BmJuD /{566ҞrP%WFcy_]5tʐ_E@ĩ1V`A.l:S&kf3h8atfpx-Qm,wIsSHrS^JRr6dԚ*|RԄ=Y*,up +eߴh ')bhEY{6*z"@jEl'rR)-8+fj_E@N]]7:Sci] GJveO!De.lwZŚ~ !u}(t6ԔϣoިM)\Z|*)2&S O )^[%!bj)+0ڈo*D ;EW ึ-0XpW"$Lܡŭ5o?B| J{}٩ۘU/*ڤn_u]\ibPlOz hj2vSSԢCk 0Ects7FY d:lr#zUA_U-&iZ[fXpz >(g~C빢0wtSf)؝JW*JW dg T7HnXq稢FQtA@⿆mngUr'KnS%OKUT@wG9`oz"S8¬S%eM@z-i5ٛE^J vb64]*&xjM%0-tA3%. w06CZaI +<—OU;}Dhu=f=7xl&J1a;x4{c;p.n Lp5=7p01v D|M%NgbQtcZ{{UR5H jt:Y3AC-ؖ7{yp)Q7ݮ!hq \@>b$Y?{c C5z6I3 `n0rSY ̨{‰@VD}a=:P-πZCsUbNSO$Z#\7-%W)ٿ ;K-f# % 犗DPIkKf^a([Ѻ#KXUZ%͵}IxPggDR?HWXb,3fΑ@Ҙ׺ԁU]{?5j&#MN_U%X`3"7g{\T4k|5jRyEIJUwbe]kljsg$;3:1QCvSt7ϑ_K^U/=A !D3TwXoE4o3]]ڹ䅓>Z&W)I]X h+3#@>ߨsp2)lop6(yض3D+!I.k|+ՓxTUi޸.3~Ee(!..i Dwv踫U u3L5\vBm\Y/tbTʹpcI7#m+.s9.8 U~.:ڃngp冬k_I @[,T_EXmV@J @wE3&mü:4C`pRtChꛮʣ!RS vprhQwb N*x7FqʠRxuڴGIh`& o(FxݖY ۇho!r?FS[?6nNi+M.BcX䷼ɲ|f/DyT J4bt^aBvkO2A!{&iAd9`n!5j,s9*rlN<.4C=M4ks{GLPcOvrG4vAcXڅi#Yp'GяUhqShnPw_ܭ>q*n`l ;rjL١$&VO׫4&Zk ?Ew=t703 IQEk4{8b9Ve>%JÈ0˚Wt\R{9W=.i鋓ao9IW|WKke3 -VMRnM % ĪU q*įWI\EDFq$t! l7^bw bSD18Lݪhn?$̮NkjFeŸ &3ƅJͦ$$鋦&WMT2Q䮽o g·j C"L)ݾ^;*VIlHAl&T컕Ns- 9 @/p_˒˚cil؅rmP|B,0VaD+bEȹllw)GQTX/|)^,H$zٕC7fṋx7E}ь;ԛwIn!~'Ip |0wVZDF~'g .]{[P2+%vY)> U`Mu%NC" Xk4tpIO=-:ø+-JAwсwYM+J`ʅoEcr.+L#.E"xwmڱDZ*rRPP;PZ+x>VwX7Z>IR SbSsFbhtSES> f'L6It^Jls`qE +4r[%G4qUZsVZ e5jfԸfHf.ّ&p7y._(QgJ'cɨMl}y}KҶSҷvѢ#23qRw.jw?ΧGZ+" ZN2g/R'_J??'!1AQaq ?!7?}!aG!C[i_J9O{?;?;?[S?OSԻS]K& jO`iL=N9#.Jvq~Fz  ?d?s' uw`z/d%eC̣&CKxu?2+O0}GyHKܣK $o3D̖Fڋ6cKw(=%jctxcM+>)v(P<\^|iW9̶ŗԿEK$[Ss$gz1,Eٕ}zԿx/ @W@P!_${Y \\=Sw@/GO-G|{]F/(rGZ:9Y38"/reANLFq@7M)VY0[Z5 %`Lg/S^"[>D^yt'rbJX7?J 0F՛z`T5SLh NrNF-`t+"fsYL$`t]Y~mrsFb-Xуz%Ep-{l}PW凚NmN@U& }O?Jc<"r썎iJ 8Iщ6׏Xxڿlka̵ަx]ݳ%'U-TK6MsaRuyK c`~b@")r.a6ٖc&GzCizC>c\ѱk0[K(_3XkBqMaS'ljtu|p˂9R%vUZX @~ߋ {nLA,+vAq{V6/s>aqGgmVJ_wp|rRhV"cw0ԩ0X1%eS] 2P=UBX- q-.c*pݕsKŬ'PAAʷY:]o=L+l7<0I**e \<2 YÉed?SWXnX^~;("+3 ^bR|qpŠ9T/שf#` (C &`t ]\K$WlX֢z?yv#LH f/WޭuT۽WXSz! Qk{7  gىCGR@0eeA-qT"*̂=i(l`;0}<)%+9XOMG|m-{Z.y6ģ̧J?eEY^K(j -ЉQSJpF14UʫU+\oY2UA9'Sc+BS=VJSN~D7zq@>L,\Sf?i2X<${G0YT nAeH \9.[j0[s.0&Vu@eD pᑔ]jvJ\<xRilBnC,u4X»ւ8 ǡ)%5%Wq4r{,zS~8A{|-tyKw, fHG|#R0NM]5_U%9~~s]7eG C =6ܻ+yHX%p^QVe/pv]6oUJCO=OwrIm,:= Ŝ U^^bJwb3ԬUꦒ3f,;HxTB|#p:Uv%ķկޔzsY/? !r6\Z-@/0?Aq1IQi l[.:nNW_RD aX }?0{Duy%ܺ19i/; (<EoY:Ub+N{^v;#*O5 ҥe2d _’ȰeFxfkXaX_lmܾbWAȏ™F7SF^zثuw3/h3TM:Lʆi`+.L7Q.DeÖ>VQE0]QX0OY7 YoCYZ_8QvsL -܊'~byl Ir5,_)z&5w9@a+<=3qҶ="-! 'J%c+4bas2g^s\Ah^*R%׉@eOvjyMoǭNGW{@љb D.cc1 ?@R B[*r9pUXvԘarj% L1s,,pL`% ab?i/YehD4j #*;+&<fW8eKc6~M}' 7#Mr.U2݌O-4kRpYj4Rr?%t#˘gDPx!/8qQ`0N+ =ra\AW{Xs }e3L{M76v T}!|779/6N\=~Hm|+ȯ..>aT붭+B(s [pޣC`!+ yz%/<˒>Y,*efP(;0^HOo#r's/OobRn(WNJ*] Zw{ŭo>n#j٢qgDErb}!\uf_yf&o\A\1YK P^2R0wEA Oo[+*_Ưx_q]7 [zCG8!bcH)hh74o6(8R0^UMq/s*l'*. ؚaQԿ jg,Ebޥw: =H3#X[8Ѻ^*z=fJMzqDW%9[*syK{DX$7y2ZzE5b))_CD]%"LnoW^qY߃"Ҩ2sFgϘ~& k%i&_/bi  :evzocSq`f]n&3\)bFSo;G W4 s\* -U)JC/nOmqRT*{4fJZk0v.?="AܭyB1lEWUʭ J%l+->a]xtb;t-q} х԰ƺOpebWߩApICoFL1J`/a3c5,h/WGG2۾cU-?3a jB0x +-^@$I$鸪+'^ v 'G] sxɑ`(\EjƢD]Zڋ6%`C(\~u,r}*ܵL^Uk^^=!|KTvW!6Բ-gh*yfd"IgIrM+ŸƳ J9DQrƞ!U0e%Hp/6L`C|12QW. 6Ew2 թX;WL~LX !`uoxˆ(73zWܩpܬ!?0 vC8L)+/n,%Hj 1EEXrQ9ꡀC%%3 xYy}9Au((P`G^~r\ 3`ܭ8. ])J,!^R8}t>1eeX4aUSbPS+nn+7 3(j|v͜GUfO@z]Tz'>HZ5-;EON}]{KhܸWDzדZτMz^+OYn!c9(̃깘ՙvkD(cSd]'NW,tiK{U4ܢߟyO~=BMMm j_qg Ѭl++莿rҵܹפ5k/sݽFN u0紣?7."15m%dН`7v& ]fxf+j& =H9288rTG; ]u1W{?7 02 _P^Hrd{9!w3tm{!?t9TDPx']/n .#%1/3g:]zfWL bW:}-eԹ ̴;PI^7 <(/7Uyl(Usw j??A})WmC9Na}7cmQs;մu1? -߽|]ȖKv,h ED#3(L%r5Uf2c}ۯ鴛)dv). dYArkvʃ=)wO=TM#Q6jBhA#l|eZ< d e[ZMv|_@cGoquϣ$}\?8F%BhfVHdS G5{tSK pLO،ck|ԒDSMДgD_H;% ߂bmр~UQR&kF,DT;7n-a Dી@;A贍Q$_L-zeHDƼcC&dkDԬ2 9 5z_(1o@OMf@LEv*o\$xEmxbF?~$7ЌIKڹ߿Aa)܃MdPM>Ђ&%ODtswUma:(ֲQ#0-Կo`D#.oLؗ f>EHb;R>i/$; -tg9.H7U Ҷ8T2J&!1a AQq0@P?:::::::Bz:N?t'O)I!:_Et6+_Ew3+2{'d$o#.d!" c{yn߉]3)?&!B!lOR$^ _)!cQ. 4 ܈R׿5|T7A'V`R;BBHhĎT#ѠRfl!2 ׂW$qؕQI3WY̕s>LDEgKd#pze44^pX Ђ—2==~IN PX)I,]!iV" 4X:s #6)1O-Ol} _9Y~ 7=,uXc&3O\͌afAD6DT6Sk-}xS>qV;i8ii=A\:lkfU5;,n&Xdl>3E)Q!ω5O LR7E>J+l+VC@Yi>`I 9Gble,j `*`5e2kXY2!W3 ,QX9rATZRf\VЁpZaRx%qUHz~1Fĸ8cEQ7QI cBk7GHG0|Z!(ZbTHkb ї(bB4#KАc׊A 8;9.I2dx2$y8 Bππ%$=b* Aa 1522X'0 LnqTJiz=M& B7fb򵡴RBZl| Hgx^ 8E̙9gƨR_ \1TKtd—Jf%"5`Ȏ^HhL[P0”(n *bzŏoE{1n= 6 x `e>#b)zeU~ap3}cQSPJ4kƜ@H%. d%r9E,LD >Kߧc3.J4lY44;гbzKG 9)bZ&))9 ̖%ʡ" ir-Fr5 < }{ТAL2Mބ7p(- ĨKE**[ąbGN *!욃U DsÑQ= 3x&iJ7FT(āĭ= 2|wA'a9/:e~w;֫u?l?T|?}>_G俛8?&!1a AQ0q@?흳v;gl흳v;gl흳v;gl흃?`Ov>X읳vNt}+_Bwt} _E_ *_E}U𾊾W/K焾8/OEG7į:K_:ѯ h!BpVVKȑ 4B@&9Wʫ×qJR)Jr~>e)|)0^ïj ӞI;tX=%C䌌dd~ OU1 ȷu,@\z>Dπ= \7)5בGCBth؈C/e1^F'(757aXb!W"Rj(6쵍˂F>A 0$BEٔ1nV|d6gbCږ-ԡCo !%3x9‘4$C|hM#оq;ACL[8*—eFfl/bB ”YXJS,TQ pmr!y/3PxKGiAAxBFMIӁlTCF%+}_-0B2!v&A CT4lm7KHN,A"20%C,*qpe'hXXKx$ |"FzĈ$aҐVPZv Q@<\7bepBP \ M&͂Ӏ"D ЗF8G:F5|c{E>)$.0bTy,x{ƂKP&qpC{bP|`% 1Fc# Zq FB Fqڨ~bQ %|i" ⍱[6-k|xO VdJ&-3erE>G,7 9 ~ 54ncp&)Ǹr*"`hbIX(YΖ`/X](G9 D•l'{(yޅJ12OC,5 o/-!W 17po \!$YVr4z5# 6VX04! bƘ=*1X0Ȗ(;BQBlh8^ W0&\1z6jiiQͧ{zXL&4UYk -%ɥ]$%s.< 22k8?3G, o&RsG"{bAB"A&12 FҥMj%LFEr.6l+McgȀK lNmzBmi2 <5M- ؏B@InPܬI9DKLx-ZB/0[hѯbiD ݊'LaLӡ;>ob%<}H?O~~_uO_%t>?IM?G?MNE|~ׯ~藯z'zO_5G^><&!1AQaq?.;HZNxis.!_:r3>#TkJe8̵,75$tT|l\ڟ j/5#A|FdcEK})mTصoU& E)60#3$UleCwBF|IAΐpe#lvʆO1Kx4[wU2U6G:TY*o AUvWJvw7cKNVc\kp _ 9Kb '\E!D(8q-j^8(:۝{^o QtW+/o5}1?nXhh}ф3ld2)Y(ugC穷>9\߹cXBYkAN.o»c 1nЯ`y)WPkH!-=p/|\|Fj5 ĭ&:4ݿ ;+֔UBŒ^ ؀kVE2̬6ˌ%s"X-D(QUX 4RC'>ͪ -)I[:+Aw9ET`Q_P&+\A*PՀ`H [X@CX LUdykg[ĸ4lv*:ͮbWߍ"[Zia+ 8a\=.1_c,- D2ZZ©Sr@n@4 zXbm< A0ÉjX11{Y ݽچ @/+ɓ* X{ Э%2-2 [Hz)B $ET+qVQ2 SJ?/":y(Y`r> M5q~^Mj̿46NXkw^`!bp1,Gؖ%'nb< Pet!5VqbJZ+;[=9)bǘZ!}jXtK.Mj3xֱQP> :NKth}\s \Z U0=렠} X^IWv\Nh-f@hS < /\3 pU JN n+¸떡 Y\!ugǿ๕j(ıvkл7\w3Wzpg!F+ [dVfTY,|\VkW<,@jV1[5SQ#dm.㈀nBMWr0mPѯp5 n >%%ٞc/:s5GBҬ `l}1: 5ګƠEF 8u E/sB]8-.)ĹyQ򝬞w22"<@ŽW/!RSĪC*mԡʛEK6ߩjmVϨ)6@J8U5AK+n} n#+R3] *h+5tӺ^: Wj#8u :Dt.vl-(kTlA*5 f>1 ]T:[ S.>#qN K5 T@,))2")9ĨK/ ˨Z^+=p7 Zy 8GpSn3OAmu)sc]~`[m",H TnPΆZ\.^sh2/ocxwJ3 rUR2|\%[ǢJdqs]M֪so ۠‚U>hS0lZIjs g,CBKFXyeV6W'}=*t}Zbx_ʁ`_Hrc!P\fX`8eo?mg1˨ج"6+lWbޑZq+qa8㭳C(bMKSP`vfi[^0'7hn~a-_P4#=! !ϐvjU)1. !5/ N\Uk@6\)fr!fz ϸvd1 Lhl_y-*7-Ĉ2U _)q)sxJT\^}s;;}\CQqV}+ޮ7 @[YBULam=Z;gQU[;0@EFp,'Vy m]qpS/ѯV-e\ bQѤڿOGюF V\pkչs#O+ (;sfnt* 0®xdQPrk15X>%9we(͔Qf)U`Leg Vfg_p1t+cE:w+YŇwmWHh_l/ [r\ʭ]*1f5Xs Y}c@#,D j`cd70t3( ";-Z)p/~֭`^}tveX^},Ix{V|[ܶ';kQm'_ R&5tO'y8r,j Á7d " }Jܯk Z|TJPr9վACHvz@{ -jD TltݧT){3d8o,iTs)r,5Vn8x`t4yJ]8v&'SiW{&oEwW{kwX# -]3eL2Yppv_CdV\xl"] kUV4zs1sUJ8,ѻRw="fnZPX!44\:U #()_`REJ0VcgXզ ; {~(s)BINl#w`9#,/N*Lh b^@[2,Dc5Pv5{"+ۄso$a^sce`B\PO@PօAs՝cEk0`S$RUVdyEZl>j?E(j*~" ^Na)`Tp.cMCCG0k>co˳_=L1"gԸܰ)LH#B,iu `%1e3f>3Z.hQEcu%*f̼u.QR2hҀ b^?M\g#q"V  )hq CR߸mlTmu0CkW.] B6T hS"Te՝MxΙ,TB,ݕ2겛\y%͌#ü` UfVEޢˀPr,('(vAei*CuA+x("ڏ *2ic. 6GUZ";&r9&(XAcpu2^3%Qz+N;`P9Y- x\~ۊ^<, ޓn8`:(A* E*on11s2+O96ۘd@mڎLԨrjYLWQB/rԳn(a] 48Qi]7ݰ50GהmTpġ W4y ҏܛ2RrXq`7Yf?2VT0 Po%/Q4-NmeS ֍J9uP/8;j\ *+[fv0EB(%X4Sb0&0s'm )(`LApOḵŘb]3vx Be)bAk Ku+XV[akC;Mc0ݴ^mE9<:RbU諺ZXkLBمIօ;VUb rBۆ΃J =+]ԧv6w"Vט{@T`!ij)iP\j=%%s [Kg9xAb2e|UMBg3PU*֚92mdJ²oҙADurq.WlLx= *(ύV mчnck/p^Xjl}^"w}qT8Z-Ere[?5¡yquxA`zs`Khr x06*غ~%QV6W4<ƸW*jnB+*?ܧ+7DʂHLA6%(ibT 3iԨn5 }$ZBqT mzrO H,D,NÕP ^eq,O0Gf\1Cv}ԩWz^;62R]}yh.k}')Fs-\_c%N^:}̳I[_;TÒW !v g%/P/7-eoMAh-d>װV58{QG@\4)y!LA:@o, 6(&3*T9\!AC'nk#3c`+ #[C$h[.+G-̤1qT¡S'ULܲZV1( [TRr")?.p7^g4VxQE(MHG/5eGr쥧Ԥkqn9)Wէ`|#v^,1 f()c?+ 1C&/$BS}hR' ԋ^oەb F=}cu.iks\:-՟*)v;K >_繼UhJ Ul!/Lr+&uFB$ `]xLTZV01ĵā :J}](a0`z6;# 9t*HkO\̎E=.d01!2MY@5Ķ*Ì?RRmjhhsϛܧ7ԡ6|^!_ZP(,Yh4Pb$%pR_1Q\Z/+` _@ O9<Gxn-6D"dc^_y)-ך1HjP xi눃ɷn3`|, /Occ|QA/[ZXJ8@dP|QA3Va_qGQb% r5qgW'4.ZRB!XjP-3B 82XwM H2T `gA oP6Q8 9 GLfU dil|9$/ho&{7#LV-eoE'_{8)4Qk\ cZQq$Fcݸ "a,Ĺu  `pb-]> nX*/17F*(e@+?><-fǡke<1zHZ}D3gەڳn'dU0kp7X*AnLSv;H-5}kׂh<V_3N]uQ80Wj({Vˈm @`ʀr\b;t@mSn5K=o%ޚ,_@-⬳uIv% J3mkiP*VPȥ c$MlGJ\?(2Zr!U#hfj0PZq&6aT0davy|J\}t8hۘk׸h%p@:(նe\%J @E1-`S%{!_ 4/u+U$2)]A+@[γ QګOsyWbLH< BYlnW╡b*n6,Mfʫ2R |6QsFKmPGtyTl:}LVOk"=-v1%&h }̣d5ͼLb6Vq4Q 2xfCNBQ;Ju-K}z`>y5kZ)`P +RUZQ,ViX^:&v6uztf{[oԡ0ysn&qQ e,*Wy~eυY3T:lsZg")im'1&\Q9uKS2t!#7QqlAf!z ]$wKh2UU Dr B ,-|qʶVs.u"!Q~dnn*$.= GAgU az%ug9X/ `g$hE7W6bX`. b?EDev4Aq miY  6TAH5ViD\0U`q qWweE!pbzh( :X<7DD/`;N@@d>%]Hxs7@paCyzeȷ8(e"f f9ujG R7). 9#d[x^tce UF+\ص,CRbI1VZI/I h3*`t榼~T>AY_QA+e p`'Bɮ#%[G-iQ@CgT_pɏi8@6E < 0eL2Y㨺_j l-y"!X׸"7: R$y \ko9#0 UwW ٢|sT}1(ɏTWV[>aѯJ9?$ &(/~RL.&0ha[\X̭@౫e8XxKqע Gx\+E.rH)rPw-M})u9ɢK/F3kx8s6A *..sb70gwWй/#ťU|4,R s/'.1/!B29 @zME et@e!qƨZߒHl@,&993"\PrRȂ? 5~M` UtjmTZS8{fO@KmK'#o Aٟ0r˿ib uO1P-"PiA k{HPY$AfR;,Pl1+cFʼnlq ̵ĢJFL/g 2/I erYqл7lBIEE*`j2El9^ \dnU药 VP7)WeSъ],$':/mE)nOLA#Y`vWZ x3gP*jj V`p bv ?qIly]iOp6j!ac5:߈Cf LyV?>CʃWn$]3sGCxT0K 1h.34 ݸU1O~Weu,\98a,䜝U6W8zO9}a8)Bm[əp_0j̾=ʀx%bqš3 4_uz"2bx:UKJUy\0&#ck3HJ}E*)"%Gl]W aC -.7 NK?4{g?ii8^;aj__h6s_k46?/?jquery-ui-1.12.1/demos/position/index.html000066400000000000000000000005101276627555100205120ustar00rootroot00000000000000 jQuery UI Position Demo

    jquery-ui-1.12.1/demos/progressbar/000077500000000000000000000000001276627555100172065ustar00rootroot00000000000000jquery-ui-1.12.1/demos/progressbar/default.html000066400000000000000000000011271276627555100215210ustar00rootroot00000000000000 jQuery UI Progressbar - Default functionality

    Default determinate progress bar.

    jquery-ui-1.12.1/demos/progressbar/download.html000066400000000000000000000050341276627555100217050ustar00rootroot00000000000000 jQuery UI Progressbar - Download Dialog
    Starting download...

    Download dialog progressbar demo.

    jquery-ui-1.12.1/demos/progressbar/images/000077500000000000000000000000001276627555100204535ustar00rootroot00000000000000jquery-ui-1.12.1/demos/progressbar/images/pbar-ani.gif000066400000000000000000000065141276627555100226410ustar00rootroot00000000000000GIF89a0BJBJJRckkssŌŔΔ֜! NETSCAPE2.0!,0pIͻ!dil)ka|+ qlJ cպfxL./f϶}P}zy|¶žȝʰ!,0zбGxw'Zcy–at%痍;^'"(L*GZۨp<-|n auD>G u&KVyMdO[79VG u /ng=d|:~Q6dNHHA!,0uIs=j\8) "a[”Ko1ߏSbTDBxTEuBa}d8<㲻9Oxe}^|HH!,0xIs=j\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺Mee^tHH?!,0uIsj\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺MeetHyE!,0wItj\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺Mte^tHyE?<!,0uIkuj\8) "a[”Ko1ߏSbTDBxTEuBa}d8<벻Lx޺Mte^yHE?!,0yIαZ]X) "a\cIs1ߏ["TDBxTENBa}d8<벻Lx޺Mte^yH?!,0vp8;Dz򍗢$qK{ޕ_Ҩ[Gd"!E.\^0e8<k3Kxt;t}KE!,0x𽵚8`vHhJRา[™1ӗk龋̩ ,*೘H,q`JȇwW( X^n_>#avHA!,0wɷV8`vHhJRา[˜a$癍;^ %NDL$4Ҋi\WX( YY^+nB7PvMG!,0wɹV8`vHhJRา[˜a$癍;'"Jܚ#K$4Ԋ%\WX( YY^+nB7PvME!,0w)j4k`vHhJRา[”a$癍;'"J|$G᳘Hrze\M[( YY^+naB7ZvME!,0Im4: uHh>JZx*p<xmKn1bQr\N˦J,t]f[S Qh跳]/k{;}6kkSSKK!,0xIZ=c\8"b[”a$畍;'Ģ(L* jQuery UI Progressbar - Indeterminate Value

    Indeterminate progress bar and switching between determinate and indeterminate styles.

    jquery-ui-1.12.1/demos/progressbar/index.html000066400000000000000000000006711276627555100212070ustar00rootroot00000000000000 jQuery UI Progressbar Demos jquery-ui-1.12.1/demos/progressbar/label.html000066400000000000000000000024041276627555100211530ustar00rootroot00000000000000 jQuery UI Progressbar - Custom Label
    Loading...

    Custom updated label demo.

    jquery-ui-1.12.1/demos/resizable/000077500000000000000000000000001276627555100166355ustar00rootroot00000000000000jquery-ui-1.12.1/demos/resizable/animate.html000066400000000000000000000017441276627555100211470ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/resizable/aspect-ratio.html000066400000000000000000000017101276627555100221150ustar00rootroot00000000000000 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)

    jquery-ui-1.12.1/demos/resizable/constrain-area.html000066400000000000000000000022061276627555100224310ustar00rootroot00000000000000 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.'

    jquery-ui-1.12.1/demos/resizable/default.html000066400000000000000000000015471276627555100211560ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/resizable/helper.html000066400000000000000000000016341276627555100210060ustar00rootroot00000000000000 jQuery UI Resizable - Helper

    Helper

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

    jquery-ui-1.12.1/demos/resizable/index.html000066400000000000000000000014321276627555100206320ustar00rootroot00000000000000 jQuery UI Resizable Demos jquery-ui-1.12.1/demos/resizable/max-min.html000066400000000000000000000017701276627555100210760ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/resizable/snap-to-grid.html000066400000000000000000000015601276627555100220310ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/resizable/synchronous-resize.html000066400000000000000000000021531276627555100234150ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/resizable/textarea.html000066400000000000000000000013521276627555100213410ustar00rootroot00000000000000 jQuery UI Resizable - Textarea

    Resizable can be applied to a textarea. This allows the user to make the textarea bigger to type longer prose.

    jquery-ui-1.12.1/demos/resizable/visual-feedback.html000066400000000000000000000016601276627555100225530ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/selectable/000077500000000000000000000000001276627555100167605ustar00rootroot00000000000000jquery-ui-1.12.1/demos/selectable/default.html000066400000000000000000000024761276627555100213030ustar00rootroot00000000000000 jQuery UI Selectable - Default functionality
    1. Item 1
    2. Item 2
    3. Item 3
    4. Item 4
    5. Item 5
    6. Item 6
    7. Item 7

    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.

    jquery-ui-1.12.1/demos/selectable/display-grid.html000066400000000000000000000026521276627555100222430ustar00rootroot00000000000000 jQuery UI Selectable - Display as grid
    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    10. 10
    11. 11
    12. 12

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

    jquery-ui-1.12.1/demos/selectable/index.html000066400000000000000000000006031276627555100207540ustar00rootroot00000000000000 jQuery UI Selectable Demos jquery-ui-1.12.1/demos/selectable/serialize.html000066400000000000000000000031011276627555100216300ustar00rootroot00000000000000 jQuery UI Selectable - Serialize

    You've selected: none.

    1. Item 1
    2. Item 2
    3. Item 3
    4. Item 4
    5. Item 5
    6. Item 6

    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.

    jquery-ui-1.12.1/demos/selectmenu/000077500000000000000000000000001276627555100170215ustar00rootroot00000000000000jquery-ui-1.12.1/demos/selectmenu/custom_render.html000066400000000000000000000076411276627555100225700ustar00rootroot00000000000000 jQuery UI Selectmenu - Custom Rendering

    Selectmenu with framework icons

    Selectmenu with custom icon images

    Selectmenu with custom avatar 16x16 images as CSS background

    The whole rendering process is extendable to make custom styling as easy as possible.

    jquery-ui-1.12.1/demos/selectmenu/default.html000066400000000000000000000051371276627555100213410ustar00rootroot00000000000000 jQuery UI Selectmenu - Default functionality

    The Selectmenu widgets provides a styleable select element replacement. It will act as a proxy back to the original select element, controlling its state for form submission or serialization

    The datasource is a native select element. Supports optgroups.

    jquery-ui-1.12.1/demos/selectmenu/images/000077500000000000000000000000001276627555100202665ustar00rootroot00000000000000jquery-ui-1.12.1/demos/selectmenu/images/24-podcast-square.png000066400000000000000000000006131276627555100241520ustar00rootroot00000000000000PNG  IHDRש]PLTE·ܙugÆeeeɑʔѣ՝鸷,tRNSIDATxU0 2bB?J=aW~:_~u>U9^o_ݮ'px5"CvuԵC (@:O&h\ v8"_`3#%7dCH")Ɂu"R?IL(N풶dtl/DarCboavXi4/C(LIENDB`jquery-ui-1.12.1/demos/selectmenu/images/24-rss-square.png000066400000000000000000000006031276627555100233230ustar00rootroot00000000000000PNG  IHDRw=JIDATx͕nqF|{h9)m۶mnmm;nD5td'K$UbXlo1`,C_C ]N OC ]:dG :WGЅ ̣-1X3 Cۋ8"3}^IⱧ CLD|5 pNӅ ~kA>j<ns8F.i,49Oў{vхxgÄ'qx&a0 0msgIBqЅ .ܛ`B. ]X5С ë!E$C@XD"1яj -*7KIENDB`jquery-ui-1.12.1/demos/selectmenu/images/24-video-square.png000066400000000000000000000007471276627555100236330ustar00rootroot00000000000000PNG  IHDRשPLTEppphhhyyywww䨨uuufffeeeooo```]]]jjjZZZUUUŀOOO|||III999XXX...QQQ000sssGGGtCl/tRNS˅IDATxE@ @4@w|/ooSx^v$+렩,q0L-z> 0"q#DQ(sHd(,MCQ,P~Ρ MUE% 0@ww30|1?B#! Bw-;8ñ8dòڱ֑q]8l ©%lgœiڕ헳syQ0IENDB`jquery-ui-1.12.1/demos/selectmenu/index.html000066400000000000000000000006501276627555100210170ustar00rootroot00000000000000 jQuery UI Selectmenu Demos jquery-ui-1.12.1/demos/selectmenu/product-selection.html000066400000000000000000000035251276627555100233570ustar00rootroot00000000000000 jQuery UI Selectmenu - Product Selection

    This Selectmenu Widget demo changes color and radius of a CSS circle. This demo is using the provided callback events.

    jquery-ui-1.12.1/demos/slider/000077500000000000000000000000001276627555100161375ustar00rootroot00000000000000jquery-ui-1.12.1/demos/slider/colorpicker.html000066400000000000000000000043011276627555100213370ustar00rootroot00000000000000 jQuery UI Slider - Colorpicker

    Simple Colorpicker

    Combine three sliders to create a simple RGB colorpicker.

    jquery-ui-1.12.1/demos/slider/custom-handle.html000066400000000000000000000020061276627555100215660ustar00rootroot00000000000000 jQuery UI Slider - Custom handle

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

    jquery-ui-1.12.1/demos/slider/default.html000066400000000000000000000012031276627555100204450ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/slider/hotelrooms.html000066400000000000000000000023751276627555100212270ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/slider/index.html000066400000000000000000000015451276627555100201410ustar00rootroot00000000000000 jQuery UI Slider Demos jquery-ui-1.12.1/demos/slider/multiple-vertical.html000066400000000000000000000035351276627555100224750ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/slider/range-vertical.html000066400000000000000000000023341276627555100217320ustar00rootroot00000000000000 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."

    jquery-ui-1.12.1/demos/slider/range.html000066400000000000000000000022561276627555100201260ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/slider/rangemax.html000066400000000000000000000020231276627555100206240ustar00rootroot00000000000000 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."

    jquery-ui-1.12.1/demos/slider/rangemin.html000066400000000000000000000020251276627555100206240ustar00rootroot00000000000000 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."

    jquery-ui-1.12.1/demos/slider/slider-vertical.html000066400000000000000000000021521276627555100221160ustar00rootroot00000000000000 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."

    jquery-ui-1.12.1/demos/slider/steps.html000066400000000000000000000020321276627555100201600ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/sortable/000077500000000000000000000000001276627555100164705ustar00rootroot00000000000000jquery-ui-1.12.1/demos/sortable/connect-lists.html000066400000000000000000000033401276627555100221430ustar00rootroot00000000000000 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').

    jquery-ui-1.12.1/demos/sortable/default.html000066400000000000000000000033441276627555100210060ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/sortable/display-grid.html000066400000000000000000000025331276627555100217510ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/sortable/empty-lists.html000066400000000000000000000034551276627555100216570ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/sortable/index.html000066400000000000000000000011511276627555100204630ustar00rootroot00000000000000 jQuery UI Sortable Demos jquery-ui-1.12.1/demos/sortable/items.html000066400000000000000000000036311276627555100205020ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/sortable/placeholder.html000066400000000000000000000030451276627555100216420ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/sortable/portlets.html000066400000000000000000000051431276627555100212350ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/spinner/000077500000000000000000000000001276627555100163335ustar00rootroot00000000000000jquery-ui-1.12.1/demos/spinner/currency.html000066400000000000000000000023731276627555100210600ustar00rootroot00000000000000 jQuery UI Spinner - Currency

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

    jquery-ui-1.12.1/demos/spinner/decimal.html000066400000000000000000000027441276627555100206260ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/spinner/default.html000066400000000000000000000026521276627555100206520ustar00rootroot00000000000000 jQuery UI Spinner - Default functionality

    Default spinner.

    jquery-ui-1.12.1/demos/spinner/index.html000066400000000000000000000007601276627555100203330ustar00rootroot00000000000000 jQuery UI Spinner Demos jquery-ui-1.12.1/demos/spinner/latlong.html000066400000000000000000000024121276627555100206600ustar00rootroot00000000000000 jQuery UI Spinner - Map

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

    jquery-ui-1.12.1/demos/spinner/overflow.html000066400000000000000000000017521276627555100210710ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/spinner/time.html000066400000000000000000000034251276627555100201630ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tabs/000077500000000000000000000000001276627555100156065ustar00rootroot00000000000000jquery-ui-1.12.1/demos/tabs/ajax.html000066400000000000000000000035411276627555100174220ustar00rootroot00000000000000 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.

    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.

    jquery-ui-1.12.1/demos/tabs/ajax/000077500000000000000000000000001276627555100165315ustar00rootroot00000000000000jquery-ui-1.12.1/demos/tabs/ajax/content1.html000066400000000000000000000042531276627555100211560ustar00rootroot00000000000000

    This content was loaded 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.

    Mauris vitae ante. Curabitur augue. Nulla purus nibh, lobortis ut, feugiat at, aliquam id, purus. Sed venenatis, lorem venenatis volutpat commodo, purus quam lacinia justo, mattis interdum pede pede a odio. Fusce nibh. Morbi nisl mauris, dapibus in, tristique eget, accumsan et, pede. Donec mauris risus, pulvinar ut, faucibus eu, mollis in, nunc. In augue massa, commodo a, cursus vehicula, varius eu, dui. Suspendisse sodales suscipit lorem. Morbi malesuada, eros quis condimentum dignissim, lectus nibh tristique urna, non bibendum diam massa vel risus. Morbi suscipit. Proin egestas, eros at scelerisque scelerisque, dolor lacus fringilla lacus, ut ullamcorper mi magna at quam. Aliquam sed elit. Aliquam turpis purus, congue quis, iaculis id, ullamcorper sit amet, justo. Maecenas sed mauris. Proin magna justo, interdum in, tincidunt eu, viverra eu, turpis. Suspendisse mollis. In magna. Phasellus pellentesque, urna pellentesque convallis pellentesque, augue sem blandit pede, at rhoncus libero nisl a odio.

    Sed vitae nibh non magna semper tempor. Duis dolor. Nam congue laoreet arcu. Fusce lobortis enim quis ligula. Maecenas commodo odio id mi. Maecenas scelerisque tellus eu odio. Etiam dolor purus, lacinia a, imperdiet in, aliquam et, eros. In pellentesque. Nullam ac massa. Integer et turpis. Ut quam augue, congue non, imperdiet id, eleifend ac, nisi. Etiam ac arcu. Cras iaculis accumsan erat. Nullam vulputate sapien nec nisi pretium rhoncus. Aliquam a nibh. Vivamus est ante, fermentum a, tincidunt ut, imperdiet nec, velit. Aenean non tortor. Sed nec mauris eget tellus condimentum rutrum.

    jquery-ui-1.12.1/demos/tabs/ajax/content2.html000066400000000000000000000041541276627555100211570ustar00rootroot00000000000000

    This other content was loaded via ajax.

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec turpis justo, et facilisis ligula. In congue interdum odio, a scelerisque eros posuere ac. Aenean massa tellus, dictum sit amet laoreet ut, aliquam in orci. Duis eu aliquam ligula. Nullam vel placerat ligula. Fusce venenatis viverra dictum. Phasellus dui dolor, imperdiet in sodales at, mattis sed libero. Morbi ac ipsum ligula. Quisque suscipit dui vel diam pretium nec cursus lacus malesuada. Donec sollicitudin, eros eget dignissim mollis, risus leo feugiat tellus, vel posuere nisl ipsum eu erat. Quisque posuere lacinia imperdiet. Quisque nunc leo, elementum quis ultricies et, vehicula sit amet turpis. Nullam sed nunc nec nibh condimentum mattis. Quisque sed ligula sit amet nisi ultricies bibendum eget id nisi.

    Proin ut erat vel nunc tincidunt commodo. Curabitur feugiat, nisi et vehicula viverra, nisl orci eleifend arcu, sed blandit lectus nisl quis nisi. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Aenean rutrum gravida velit ac imperdiet. Integer vitae arcu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin tincidunt orci at leo egestas porta. Vivamus ac augue et enim bibendum hendrerit ut id urna. Donec sollicitudin pulvinar turpis vitae scelerisque. Etiam tempor porttitor est sed blandit. Phasellus varius consequat leo eget tincidunt. Aliquam ac dui lectus. In et consectetur orci. Duis posuere nulla ac turpis faucibus vestibulum. Sed ut velit et dolor rhoncus dapibus. Sed sit amet pellentesque est.

    Nam in volutpat orci. Morbi sit amet orci in erat egestas dignissim. Etiam mi sapien, tempus sed iaculis a, adipiscing quis tellus. Suspendisse potenti. Nam malesuada tristique vestibulum. In tempor tellus dignissim neque consectetur eu vestibulum nisl pellentesque. Phasellus ultrices cursus velit, id aliquam nisl fringilla quis. Cras varius elit sed urna ultrices congue. Sed ornare odio sed velit pellentesque id varius nisl sodales. Sed auctor ligula egestas mi pharetra ut consectetur erat pharetra.

    jquery-ui-1.12.1/demos/tabs/ajax/content3-slow.php000066400000000000000000000042221276627555100217610ustar00rootroot00000000000000

    This content was loaded via ajax, though it took a second.

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec turpis justo, et facilisis ligula. In congue interdum odio, a scelerisque eros posuere ac. Aenean massa tellus, dictum sit amet laoreet ut, aliquam in orci. Duis eu aliquam ligula. Nullam vel placerat ligula. Fusce venenatis viverra dictum. Phasellus dui dolor, imperdiet in sodales at, mattis sed libero. Morbi ac ipsum ligula. Quisque suscipit dui vel diam pretium nec cursus lacus malesuada. Donec sollicitudin, eros eget dignissim mollis, risus leo feugiat tellus, vel posuere nisl ipsum eu erat. Quisque posuere lacinia imperdiet. Quisque nunc leo, elementum quis ultricies et, vehicula sit amet turpis. Nullam sed nunc nec nibh condimentum mattis. Quisque sed ligula sit amet nisi ultricies bibendum eget id nisi.

    Proin ut erat vel nunc tincidunt commodo. Curabitur feugiat, nisi et vehicula viverra, nisl orci eleifend arcu, sed blandit lectus nisl quis nisi. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Aenean rutrum gravida velit ac imperdiet. Integer vitae arcu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin tincidunt orci at leo egestas porta. Vivamus ac augue et enim bibendum hendrerit ut id urna. Donec sollicitudin pulvinar turpis vitae scelerisque. Etiam tempor porttitor est sed blandit. Phasellus varius consequat leo eget tincidunt. Aliquam ac dui lectus. In et consectetur orci. Duis posuere nulla ac turpis faucibus vestibulum. Sed ut velit et dolor rhoncus dapibus. Sed sit amet pellentesque est.

    Nam in volutpat orci. Morbi sit amet orci in erat egestas dignissim. Etiam mi sapien, tempus sed iaculis a, adipiscing quis tellus. Suspendisse potenti. Nam malesuada tristique vestibulum. In tempor tellus dignissim neque consectetur eu vestibulum nisl pellentesque. Phasellus ultrices cursus velit, id aliquam nisl fringilla quis. Cras varius elit sed urna ultrices congue. Sed ornare odio sed velit pellentesque id varius nisl sodales. Sed auctor ligula egestas mi pharetra ut consectetur erat pharetra.

    jquery-ui-1.12.1/demos/tabs/ajax/content4-broken.php000066400000000000000000000000531276627555100222540ustar00rootroot00000000000000jquery-ui-1.12.1/demos/tabs/collapsible.html000066400000000000000000000057051276627555100207740ustar00rootroot00000000000000 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
    
    jquery-ui-1.12.1/demos/tabs/default.html000066400000000000000000000060721276627555100201250ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tabs/index.html000066400000000000000000000010451276627555100176030ustar00rootroot00000000000000 jQuery UI Tabs Demos jquery-ui-1.12.1/demos/tabs/manipulation.html000066400000000000000000000077161276627555100212070ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tabs/mouseover.html000066400000000000000000000061751276627555100205310ustar00rootroot00000000000000 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."

    jquery-ui-1.12.1/demos/tabs/sortable.html000066400000000000000000000064301276627555100203120ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tabs/vertical.html000066400000000000000000000075071276627555100203160ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tooltip/000077500000000000000000000000001276627555100163475ustar00rootroot00000000000000jquery-ui-1.12.1/demos/tooltip/ajax/000077500000000000000000000000001276627555100172725ustar00rootroot00000000000000jquery-ui-1.12.1/demos/tooltip/ajax/content1.html000066400000000000000000000000711276627555100217110ustar00rootroot00000000000000

    This content was loaded via ajax.

    jquery-ui-1.12.1/demos/tooltip/ajax/content2.html000066400000000000000000000000771276627555100217200ustar00rootroot00000000000000

    This other content was loaded via ajax.

    jquery-ui-1.12.1/demos/tooltip/custom-animation.html000066400000000000000000000027311276627555100225270ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tooltip/custom-content.html000066400000000000000000000047171276627555100222300ustar00rootroot00000000000000 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.

    For interactive content, such as scrollable maps, use a dialog.

    jquery-ui-1.12.1/demos/tooltip/custom-style.html000066400000000000000000000046071276627555100217140ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tooltip/default.html000066400000000000000000000025761276627555100206730ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tooltip/forms.html000066400000000000000000000031171276627555100203650ustar00rootroot00000000000000 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.

    jquery-ui-1.12.1/demos/tooltip/images/000077500000000000000000000000001276627555100176145ustar00rootroot00000000000000jquery-ui-1.12.1/demos/tooltip/images/st-stephens.jpg000066400000000000000000000424741276627555100226060ustar00rootroot00000000000000ExifII*Ducky<+http://ns.adobe.com/xap/1.0/ Adobed        !1AQ"2aq3B#Rbr$4C5ᢲSc%sD6!1AQa"q2𑡱B#3Rr ?k$9'd, 57y$jnH$jnJnJnJn 7y@IC9j@'|؇d^$oЮ?>. 7y$jnpAf?> *Kw$jn y@Àς$n'Œ87(LF`0`zx.cшκ*+p<.]?z^5c 5=)D0 +LT*pW ɧkanV~%+L2H8E08TE0R07yB&USm!Rm=Oo{qg"HH WقPaa OܭwʴEc6ǒMz Tzm4O{khLjfE0H  V ;i"=qPK2@ZqQ+VL3Zv5W_S1dE0 >_ qa>JVdF V}DSLT)1O}kuݯuǹ,!22qn=޵_@lB#AǻZz*.QE0Z`) EH2#.lpmCMZ"S UI/4X u|b{*H :A.upcϢhN]H^28ՙ:xS{`y DDSL#`) U%\d=jMḴz` FjzŤ5kj}Ai^c(U ABk=Z<1eǠq A`TAѶ헛VV'G`O`Ϸ'U:;CYA6'm#Wv珛m4=w|vHKq̔DŸF1׊bV_NLKG[`W^-ZFF^E~O_oSͣSu|ߌ냩0~=y2H T")d 45ҕ4C~LehfJlP{:*;5Ȓz~E2\|v=GI̲B 1ՋUs{=Nyh<Մ0SLE0`HλܶHm?M%3~/qE=/CgMtm\2\\+n%$X\iTljNwK&QJo .b<)oP;֬dƃOVZ5'"5WSM;)0c'ea>}R<&E0>#eNLE0.`)\5]Ytv~~~z믕L|ƿXxZd")EHaZa0Sk*c[p۶ F@"s9cqFnw.UA'UK|69;_ՙl&?Q:,*`ڷ!.E1G** Ԯ)ÆZ-.nkY>A$JN yt=~+?x4ǦpLE0aR0`ۤDs̻# 'KA<|ejfzz?vۉ"K'l4j8>awk#c%ڡ ^ӂu}\M%晎fABY5}>ep00 ``)+yPW/o7f:yC]@9pZ,Fgb.]} D<&1 | &}lW@) 򦂬_/j2L ?VHxDHǼ8תUϳ5c>#F"R(8WۅLn8q%J*VL=%0_[g"p9&v^ӥ:vszY,QĊ|j M{yڬW(r[G u1T+p;`nbNtkK3Bj+B cT@\Ӛe~rj4>> T؟V-ܒ9R ԙcߧe̿W oM dLʸꯙWkx#4{14%A$q)sFD֛OW+ģdsC/us㎺vj9j 03&#f#iuhk9<ٿ|cOb Er8\r-&ݻJ]2/H T3~(̛-ƊB@PBؑ~'uqZ*Uhi F ur)4vu!=N4ۘsLO +ǰCn.bOE*He<w&+P}L060v c`*rϼqju;WS뭻fڭ`Rm7WzNc)a !oTH@h ^#GjAxiqp;б9hZggGVEX5󴎡hcKmP/z.:2WXV^tutI;Z3Vp8Jzߣ}BoBVo܅%5xr)~.~ZrtRq[ȅyۙ$f  4 qۍ\kkv"@H;Gk -ڼ!FCh$.c6N$)A k";h+ `bVZ駶~%%N)? 6ܖk FA,1 UIgٞX{cΊ7vۭKzkWS Th-RVVY9ഥ<#CJᙈ819㿯ȥŜuF]%*MG4~s_ щvm5\̓1JiPoŝݔ2f TԖrk~LiE;m䊠 S#%}\WO`j|K㶝_Qy, IxbL>ah^WKXxEu:4YeHc٭/jMg!wwtSbcEyh^4[ṉ.G5:kbcm% YVՐW_oUy=7bmbMo[;9!1I! =2 cgklA=ԁ䶜<1">! ׷2cmu-Lo &V864[XvH&hpG ӏ U2+ۻY&15?fK#݌гvp%͔v5/-0CA卞sAufV^WȌ[RTk fEr, Oɓ&Gh E臱&8:Fkc$DiqK *Fu.9;ľBnM\]ܡ7 oɦZUiHm|JxZ3'>bBַOf0H Y>NUp[ֶwkݷ ki2K:U|ACHA(/>*0lbM7' $Ǥ u+Ox&T#\mwA;iE_AƂ)~mmC5E2EnI G"Mf8ʽ.0jґ []ᣂ[ɖ&=v9.}_=μ sZŗK`j +o-SRUeZm&"FOO-}dh>Bqg뤍1GMAfVp -oCBG*t'FȔpFyv7n(,<<&. ˋs8izgJ=j_Iie[jFՀӔvg2;R~<`-p٣'׶s1ZmH;x]bEM$D2J_j)Ruѷm4eBaQ _#ꠑFj+=P-ӷ0E!M- SnW7lEf}qЗl1 ݷҜ>ZWYWoև̚gZ JwoV`Aއڥ97Z)#?̃Qb 8+kfy-yE8:Uc/Y,vkehۢ{%{y6Gc ~ieޟum%MDֈ+}YGq]UUӕu(6˾\֑hW = &躢S B3%Ffu>ceI,w2&y\`RAsQ9OVXм[bHݕ",V9W~^}KUkolIykVYEk_V6"kbg5ђ'3PrV?dz#nuXx[FA[D^CjU"8tRO`ՙpϷ΂KkdgzRu@B++X#.`Va6Hja-Qv[,|QD^Ql( jS(L9 "T qjA!UPrFL\k91>GG8dlHJy:0HG KC[{u%Q-V3@&WaA" #`>6YZ^od*C Lkԅ7HRM)/[@8*=/b`\6}6emv{Yahh0f]!+5 ?c? zvw MJe2W0NenK ~lL7)V0]ƴ̍ dFxү /.>οiZ4jOcH؁bYw.uJ jN=c2ȗw]U(?ÓDms)5x9Cji}kpJ}k=h%9kx!m]7qkFr 7$HjR41jLm\vvI%-Z>Y Գ$q*cF8\ʓ+RN;b<-6Ĺw0E5l.OX]mc/ԫ&+AMt,)W W&u5ˬ5Z#bQaډhfܣwOn]mmA32X:^BmVo? !x;ru?>2}pښ9zK{9`yhZʿ2 kuZK+웍|Ӷrr]47senϓ ⳰3rH ACFV͎]]J"r =>!\ͽ@jT"O; h jLj*5IRr2]OҺweg0ZScUܥ'?-}DlRky6dDΪڳZd붲oطI.+-i-Ă+Ƅ0KBw?[],Y)1} K*3_)˿e(}$\ӲZ9ekpFնQN.w+rM1w~¾4cڥ;&mb=M Riw9\i\ RzW3W:t٧n4{)mX--Kq ;Q}N:)`;Q #S8eqK,nd3kz2en~5Iivp]}2.T?Tc*p뵸 DZY[N/绊in|g.4RT =6Њ,vv M-5h%n fY{q:ܒk%Nq0C,rKp%|M@X޼F*N6?xrcpFB2ɳ18P8̗09I"8^Bk6ӻC[Qᕾ݅4#=͋Oc+(rKZ:jAnq4ҽyو e\ zVK[6D#TlEhe|e޾3io߸6ṍ.rJN^=ceM7f7͛`lR.o7D-UpRq!=T7vRFN:)Ӣjuh/n"-<+jP ~0MM 8U)uF8 ZF0]^/x~mIyzB+Iĺڣ46oOOy €Tʒ98&KvdTKW "]A+ طTIw8nv{/H#Cx^F"eM@ dKBIo@%xOIvKiiV 9ZidJ$^Y[]Kkcƭ#-j L"Q'<(rzg}w2.OtFoNpan 1⹺Glxc::,d9j}~|a/ a~Rf]`MFȪgsT3Y%Sܣi֠,B@If 7FJT mMx!H'xLф$fJ31[%r~ [Z}Quohm#"fDZĔ+1[sbZ]rDJdhf*@ԫf;*ClNɼ=tv 1-]#ᜳ:Z} P;z莡ZOZl-R@BUVecӫUz9m˺m{o&mhZʏCo.&f12RG\Sء(\f?ɕRAÁWJ&%Y~;(YlbոI"չu0E1})"֊ R[(ĥ|bXЊT֤p+SŗATkK]Ԛ5s$F4Ϫ[ik;j#"#8x*-Zpn.)9@ɷùil]cx|-|$Ph+ao&cwMYJegc eR{U01]=v20o?K]ºi^0k0ѱ ;)ߋvq ,Z]LVX2 8# gPv{7\q{c1rh>5|kH~-zRgWp5rv`8ͽ߷[M$Y^[i2hOj3E#Ư̺jG1UTM4״cA2K^1g0eGH L& *?5eupʜo:_E[gO0V[VB *Jm a =3uXvDIי-Vvo_d.BV'⎃iqEQیi#^liuOE< ~{6}duRspRѶj-dyKuV".eGCg" 6ٝa=i~M^G])Jo-n O W&DSZSۋIԎ}{LZm2]X$Ǭ Į ʸjY:H&˸4Y9G*SM^c )5lvv{]ԌM4 MAǎ'V/{+uX!锒g] ƴԋn XB ci34|okH|h5$S߄vEB!% $@2q)wnYZ8٘E\u9Rq*W(*ro8M3h59TgL\Yn,=v{QXLIm23)iNn%6(?u,qm 3QQ*yذ'$}Iciw[{HjTjkk6rt[Ֆ *s-X')u n_VٱaBK֬8. 9 s`%B֮X"B1o MM,n#wxL\X N.4F6dO=<]rk|^[\-IǍ3EVb߾{y"MpĒ5crٳZSqj$fMs}]R(|59݈ {ohO-PP֖݅IzK{]0%KIQ}Ⱃo&ke-@TvaFzst*6ik c~\ duNlWw+>.fm f3 ;nJ;1C9U~6 }}a5"_?@Ew #p"݇7(_m:Has3!JF~g7#}w%leFohN^2:Uیa m\Z\7Sh 2]-U29ݭ-KЋ[;+@Vg{}F/MʭIo)iPVj W @jUЌ]|:g~ rT[ CGA:V.kݖ!LvlKZ& APO5D)exh$'4@#o]CIn7Fъ=cJ?Td>bKG--[y}I C"ZRvc~rO9O:O*p D{o.`6 HY]Y RRInF&ZA*"Ģ^[Lª}kmZAIdh W5̤tjh xAj6 "֤Yv%<XcJKaU|lcfW0250;(FhP3:tν*N麋4ܴ1 lK l؅^zek$E vp*R%ii^$qF?ntuTG`c?W~aJ,B8!So]d.-$LN 8Ӛ1k͞ XCAe KnבQց5i0x]A*4 ܰ\ \XZiE)@e^%?*a}N^a2IP>\r85vUV Sƕk]b hKQ wa{ˆ#c\Mk6vmq?ZnKr>}+ t4h@8Y'"P3Bju#Õ0Qo:ĒsSIYv)-Йv$_@=.:2ޘep|1T wc/eķ+-a?d4/ 4io@k⎙v=1&.Uƈ͝c{8? Ws^4iCQk#۟όR'KorzdG\Kl726m$M+FV SAXH9=EwF,X4 L F:r(h<~Sb;z TS '5[嗰H퐑N )#U^~ m:ztSp"s$С 3ҿhl$ ,!{hhVU^38'_bcAǩz襁+Oecaq:TUeѧ)}W" +־lZBb}GiGS.4Ba ILr2Kgq:tTmwicgTԦ?\_ɊhհXThܲG5\'Y/ +:.|8.@Fv04S[f[pĺ~,LdRҮyZgSGKܷ[ Y,&.*3st$x48c(88ܮT뤭Zf0YHy<!o'n#Bb5:|΢N Z̕T)2=X[*ˇr40$ {@?gEG ̊>`o6(*vCnDzPX9 ܗXڜm,n3pA}0,+u39ѠhAj./1]Ieoex4 t,ʠW8aw>mmz6I'i٠EB$",4`Q7ݼzo?ҕ{i_˅Σ8ͥg&*=co Mnc@G#v:Nc 4&Ji_KUz}ur P}lbgT6Y$%B͎b/,k"ءkYI9_ǷO-&#fbc'02jPFBAE({l n?\h,ڛd2(AZv'Q,ෟ\sF,J\) wx;`P3Z`ы+5\+⢼EF8U2V?bVw?-m#Y.ξd(ӭq2qUMuZPˀ f=wW4mdQ(Ea!>q}8 V%vɮI;+Z%3m+Fy$+wJVJ3aqM&ڢІJɞ*,trĭC}4IwC4i@2Ԛ`~>ur9}'k˯+^]rիgncT"mKI5=~+Q'=3IbUWЗҿL;UQ,ExPiOq:M(ֱJ-!#ۖ!$3uM#QVXhcb@yWE$I?#Vw5vL7k7Z`l wYO6!jP;\iTK=ZmcHl7I(%>ըխjt^]Nߥf1) FU38̠,H;M`}⹴07!͞]g5CgqV%xxpم]ùEIYXRe.WΘ˶V]z n^ eC֝?ye&Q#ptŹ{$up|$%PQnIo}kR@@4hZRSۆ+{h[ 0݊k+,w9 P; fV&PZF~Q\6!mQ(@~l13e7ڑ+9pZIC-> fy2?T$ EbB ``u{iX4]jTV.%ܷ-7KU]F!ij&Z@uGH~thnmB_HƖ$fb&UN,~$ƑnpHX9xgWt)7;Ny~-vSFu[/)cLpi=@Wvv͒ۦgY-#Y'$QԦ450u䶱UX\Fe֪e-q?X߈WO-o&PDqҡXZ# nAk mqTT[ ]-jM `]WOW%OxmoI*)#R3'/Ŧ(&J SR+aA{#⌫_F a-YzԑzafoO#]_ C1քfL%O1KA3\o& \ ~m цc.EЗAԂY,u,qV9"x/>DpxèY[&\K\UtԲҀ+)o eqX9o~- 5w ˧oT}(lFC# U@^rP(%RHz0So2۳Ov!6*rmkut!Z)XZqʤt `jEG^!^58K %,BV:f)"[2oʥcJER*;q-P]1׵Cb#Y(:Ö *©6#.i]H-J\!/8YiݶbCCSZf7%nr*((iVk%՜OkbJ4;xFEA=gu΂hzQI՗o,.0%AUэ2ᆶd{R\o,@.4 :ȁ]UoaxO:1Cb|ǀ3k a+sK8E<a퇞G)J+94:( P?STYtBY nimn;}rPi֢c M Y# ڀfhDcSRLMm;pOcM3?F) ZM3X=ؤC"$YxY!s&P5=n-Y@3U8ceYa-Qsf z6ڭphZ?LSl2mӠGHh ūۺHF(2)Ӊyoɧo21;?~8) ]1/'[- ӽ{~0_]| yG~w's0]oW-1*b,d䮾Nj$Lh ԟ5| oG통?ȏ珇8h{d:c|c"E&|S?ㆄۿyǟ;:Wl1/|,r/oӁ~v>N?0??8LIjquery-ui-1.12.1/demos/tooltip/images/tower-bridge.jpg000066400000000000000000000366241276627555100227230ustar00rootroot00000000000000ExifII*Ducky<+http://ns.adobe.com/xap/1.0/ Adobed       , !1AQ"a2qBb#R3$r4ᢲCScs!1AQq2a"Bbr#3RS ?z^N2ɴُΩD_[~DЖ9n$ 9աWR-3iXMk3>5p.YC  \}gjI35PQy?3U&s-5P\?f,4P Gi2 ݅nj@2],0 εd ڬssTj+H瑆o%lR mA;2oXjt*+(fzݥ3Tcûko[t.$ٰ9+SN WebZ ٔQ* ̤z(ȚpEH+6V Ih tad#Zˮ=u0pZ[r=U",*0s+$.trl=ig3}ϕT.7߉)9$l$~MT.Oȅ;do/:b2d $w-PF"BȚMQdLB&Uh]QS"u4ÕĉY]+0ʮaRq*bX;cE`-΍XM[P. f{d6ͺZHӭB\C6Z^<ͩe$ғM'I ~ 6ҪCuKm/U!t$B5,QQ+&? eiu'¯иR6B}W+m@n1f§0 fm{)Ek+H拉m/!̊RmHR6LDɉr6 Tز6=>u7I01L",FNFLp %J+'u}@ `JifRЫo҉1vDc}QF&c9[dbP*n$؞r9XqpmzF"m!.#[zbPf{ؿ Ԯ92;n c;E$uީE̓ټ/B)ÔbtnT]@͈B7;ۭ:fȲnumHNxZЁҊ@i 386QuW)ˇ,dtRVePJ)(*$D-BABf<;ͺ[ZE`X7~4 < ʶ,"<ј<=5ӯRvi 2)$b 1܋gӲuc}9'/1 nh[C ~AUIM`΄0lYL2n:ՋЉp5^@3[z ;7SzWIrGZH|w ar7- 1q#3n6^J/{NMśp%VC:څԵaG &Yok5RedK-kZ߲06p@'T'H; EʗM(ڦ+PKllGTkQ PȔ$ U$U>tXTAW[4j`/ "eC*6rFWدcavn7*xL܇ɏ (IX-3ԴnKxƴc>HFK&dB}ujG6ڔd0a鶃[Q2*u[^(=cHc^9[ZUxHMo/8P$dV2Td%u~uo:YK1ʆHdi&rB[@:R̖$uOe|?o`M"etA J-ԸuqA"Tk=#׷u+W`]zנt `:x,79xzPC4;e{$w9`NǨ4E >tڀ ҲniOM60,.6anlW'q;xu`ҟ%@rN. H'5hĸF<)3Btzwݨ!EA܍ആYKQV!уk{+^AWKZkv9&luVEHh=]p=nE{wXi^O;|j& EfDRJY5 m%Sa@ꤲ - *4`{Ɲ>|)NjC0TLxGIXfnZ+踆?X_Λ\UFkoo`9k'4u>Ks&3uUa{Εn#^O+>=A`kaRR4Y䑷!WM Ux܍DAbĞi#,|!jWsHt,dbʲXu=|/Oq{pJg%qư#8cVYjt9yؙ<#]ʃw,=76"mǶT">òFKj{Z<[/"|kck#C>ĕc(`~ WoqVԞvo4@t5 Cjc/1C/@CsGiی87_ut5&|&ca ͚hDq+\Xm+YGo8:.nWIdr.[,="DSw4f%zVK'sqscEimXs-Zz=dy>kg~3\y$wg%v-Ye9,I׸"3aqxl$,R6zݎK3Q ˧+̈x|/V_yO!|1,>kzWlxݫ֓WyWcGIZ9_[#> H;U-$SVY\{o lIF,!BdVЅnA^4+c~!cj6- Zzε{!^P։0Z$I*3!TYs eoS9b3:2ciǑ*=QHȠƝE`5Z`mI mW"9%źޮJh?Ŕˉ" eck0⎞(iGXG..J vRO']I%;nA+Xլ xnS0ꭷzJ&d˖Ҝ#mRZdށc\W#\QA-2t);_)X晒0y>mZtol}O^yjz:u#B'&i;X6!]ckjZ5 47ij6>BbIR5&zNCW7:q:qrʊۼVUmmtccFcF>W[2~;~=Ҝv8}c$sۧR,|psnkt.n]7cBOuр(I6 h Jn1*Ln%"`ɝIs.k_,۫xkZF`n7.¥0dgr;?;yҴmzߥYXefہ߅U7jac>}(`l z"垳f{KĔerPoLIlJ"},'0Kܺ*x7SO~e.&CB55gt{FTD]4ǝjuq|z[\hɏr_~~T2$z .RjIi W9< BJENWcikL.c{'fSf8̹= ]nkgִي庛>*#BFϑU'⵬(#_&@ZGNkbYM|' RXb}dz{|}M|k%a-=}ow_ L72zT)zцcUȬvU`2aqHÐ7q"@t+yu_1_sܛ \ yp>+ҽD[p/ mn >AvoOA{|[5~ed9lV~Ds[Gp\?ſ}t)𤻑-n-ژɞtRj- 귇ǮŸJrirNvBMeO,xѐ< kYtsc]hrC ,lG7ySo^ۋv*r89Xs:ƸyQ..H[/z*y͋f apP:yWJ&8f}p GSù=A--0boBlX\w \+(?]sW/mJA5c7^'AH;KI$I,S|O{8#CcEZFkdP"GfAj[yza~3(HFH@l,m}Fč?c' ~W6)5c*@s!.Fq~Sk@_yT( 9^"6:Gst[@iOš&\53+YlddIdoZ|l@ /Oҫxk|@ى7csNhf8$I+ᚫZU"qU!$pZ}&qء8>`#&$e[1=-gr$㱛"Iv_*n6ubUY҆ ٓL,t5J 쭣eSi$4i$S5]'VvSkTtlȽ*䮔Vrƫ%Dxdju_A1|u2Q$5[`qO-ȼK}6=G]?:v_衺UOX%X _0㷷di~M?{s0!B$+i6/SR+t Z32I!TA(\Zv]:hh4=M*ȧIE {N˭O•Sa_M<8Z樴kzɕJ!<R/HBm T|y^;vለL)e? z65{OK؁y+fɒF'lbʭn >hOiE3Fxʷ^H $W, 62w%ъvszZnВ-⪃&>6W iqzKsXOkgn |ucɍq@ yz*aVv|euc`Xۗk#bOuthEh]C6SKi‰zb`Rs Ro{ipˏuiW >o=sŜ.[c;>NUuĺ =$rWXb+#:qԮ5LTJ]EpV|$8D)j5VX=v?1^nMU۰/%vy`!mi_: ;ێZ5,ȅXBsr4 ioƇ{xb5{5gH 2V1t<d!Wq?**Uԍ:Jӣev&[jBs^7OmMoNuEa-Hˏ%4}lB iRm9 kgj_UڼQ"Lq|lS*醧GVF~F8uǍʩ(H _ʕ{4#rdརvS[RMkwU]]}{gidvqV*kzƾ}yMV1v$e?\ ,Ʊ {0$w 屻d+F&j{VaLr6ȏڎF#[=VNbUmGKmY{?C'$E͞ ^#/)^ܱ^CkT~SodLMꄜvtRH$jobҰejӴ݋%m ~E+q}6ҖƨlgbMov1wl}|`y_|-zV]G!vAx8F+lY#Aa}Ŕ,Kt*Be Wt݇{MTj=rN$^+}Qi!3#wz`b_R!. u$2̅HЃvU[<#%$m-{Wa#UD[$wk59v_H=.iz[)(5d {՚'=7j<۷ @Fm%]ۯu֑W>#-N\"K,&$Zncp;K&#dv.uw֬7Êr-svufMC'‡,Up-MEyL5z|)WgHK.G؉l*=εV\E#,{QXrmVO _/KEԥj26n[N*߱uli(/XZV 0Ƶ'Y_`9#8#ii'_HJgEB\fin~b_jtM(wx3Jq\qN?y']ѦzpJYg2εwUIU\vt8@g #KyPm:6{Ji,ϙp۸ R[G^(K~1lj/X>:k\侵Ʒv1`NC w̻g]J 噞<+sE^RHrFr3 :FژkF d "6>1[5۠*XM/#ЬTޚ>x{y&Aŗ HNI):|"RiJYi,nSfUFW]\2&]QNˍ>cmc Rqf>5E,ϓj{7ڜw+|d$$(Xnd_SΗy]UlNgC>S*,hdJ XO OY_==>S s8?l“G${:)$^VBpK_xϸN o1n׿Mh\ jAW%۬Em**B)brro"Q}MKoi*:-u(9{ E!a}b|MKjź[*r,xGE:uWY.$ՎO>^C|G,jmF +&YxmU 1/ a K{˙ +e멡`W/'7)+&fcdc v^=ڽWĖۺCNO17YYµ/PMzv<3Y3q仒7mҟv#f=XCG܊~SqNMP1DZ㤱7.M]1Y &[>#eٸQ$EJKY6Sҵas]%eY33"y'~]/7Uֈ^,d}9LI=@OM"VD::H+U +*KY Ɩ9؉VĩsskEjd측$99%"(d"۽EGZϓk v#|kޜc41aLmiu29K"y%rSc",a/Ծ ^ Ϫϊ%4]W٘\_sSE.;d,ԮŻYMaĒ>?_HH{pȥ@[+_W^-E?F{+>8"8]i\we[U3b'~;&:k7U"{]jIU,Xɏ!2P]:뤵/ǎlsrī :Ӷzh*'fLY25uYr搘]iƻw&{m/uφ79!NKn/uk_1AL8S;;e"O$لɷ[Էv^*_/n)oJ֣[>߈u(8M{dJ15a)>ODk֧a~/B|a }At|~}<)Okcf(\5ċ!DpV&R}\$M||kw߷]b;#?wI*\_k$3\K|1Lx&baa{M0tKsD‚XƋ%;t28ذ(ܴ+ͪ2s:,XmU+HQº5ۗc!#v m#3E"3m]l]ڶ)(ebjJ>4+ qOf;F*Ův]:Q>2~ߊV*@Hq:xsLkPo@@P5? "k#]Pl n5ʱd-N^fH >9|Z m$bۭkMkif==*ʧ-w)[Oح{qxx_ƙrǤE2C)$7emw);o݉7o1LιxJ0u &j4eJ'dmUchh4# QE j)?أIϕŰPᤛ2 {~UKg5`֣/ ܱIl$xd p:X5]9V5/Tڵb[#V>%.֣,|OԶO}_m7~zgZx})/$YZʶA$q@=We {B.'ee`Ghv}V0ʛjS-6S)Y$)_) XJX~#Bp|&:McU/m񶔛v;92P- , mgEdJ"|nGݤ0 q71ҳgƫ-v^O(/8"HC7'OP ڟ_SmOH>ubd{MEVOME\Jwq7ȡmQҩ,U]dmuf/Km&w?(&jRUz֡2ƈB@ km0fɓ2 5(<~u3cQ7m .8OA^-8&&7q'hʲI ۼ>\-!>YriU"3NS(5$II7,na P6Dj&-\Vj#qe'K܏ƺ>R_ +!,?-X/#5h`sE.f_I{t]de2.LJC Xahdy558~C]%mņIګRr^z1- 3Õfuw^|brbaXmµ1u:0J6~U"*wk5JxiU tʍd-Wܓ([sf_ 6.37GNLU5]KIwNN< e'bRTK:]# >]*H0E[$24p$xZźƣ)\"KpUZ߁:2$g E!*|~ޯ맷Yr&&՛]f}Ek>|Mő2 0ڂ#dE/Mr/2maդI@(Cڽ)|N%ݯQō"o)lN"ΆpاRgNHmԏ#5ϋV.FeFYWjOҟ)XKM$c{[FtG1oR5mAPܙ츱ܣcEj4CbS-sAA[NJ4ɎI#sad[ڂGփRECC(]HSe0kTPLj4#_(O7sa4qLiH[ F% e?Un>k2M~E.'*4r#j?OdwM/uUL'#Vk] vi#;@bNtֳfӊ@y222 jQuery UI Tooltip Demos jquery-ui-1.12.1/demos/tooltip/tracking.html000066400000000000000000000027231276627555100210430ustar00rootroot00000000000000 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, using the track option.

    jquery-ui-1.12.1/demos/tooltip/video-player.html000066400000000000000000000062441276627555100216430ustar00rootroot00000000000000 jQuery UI Tooltip - Video Player demo
    Here Be Video (HTML5?)
    • Favorites
    • Funnees
    • New playlist...

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

    jquery-ui-1.12.1/demos/widget/000077500000000000000000000000001276627555100161405ustar00rootroot00000000000000jquery-ui-1.12.1/demos/widget/default.html000066400000000000000000000112001276627555100204440ustar00rootroot00000000000000 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

    To learn more about the widget factory, visit learn.jquery.com.

    jquery-ui-1.12.1/demos/widget/index.html000066400000000000000000000004231276627555100201340ustar00rootroot00000000000000 jQuery UI Widget Demo jquery-ui-1.12.1/package.json000066400000000000000000000034671276627555100160460ustar00rootroot00000000000000{ "name": "jquery-ui", "title": "jQuery UI", "description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.", "version": "1.12.1", "homepage": "http://jqueryui.com", "author": { "name": "jQuery Foundation and other contributors", "url": "https://github.com/jquery/jquery-ui/blob/1.12.1/AUTHORS.txt" }, "main": "ui/widget.js", "maintainers": [ { "name": "Scott González", "email": "scott.gonzalez@gmail.com", "url": "http://scottgonzalez.com" }, { "name": "Jörn Zaefferer", "email": "joern.zaefferer@gmail.com", "url": "http://bassistance.de" }, { "name": "Mike Sherov", "email": "mike.sherov@gmail.com", "url": "http://mike.sherov.com" }, { "name": "TJ VanToll", "email": "tj.vantoll@gmail.com", "url": "http://tjvantoll.com" }, { "name": "Felix Nagel", "email": "info@felixnagel.com", "url": "http://www.felixnagel.com" }, { "name": "Alex Schmitz", "email": "arschmitz@gmail.com", "url": "https://github.com/arschmitz" } ], "repository": { "type": "git", "url": "git://github.com/jquery/jquery-ui.git" }, "bugs": "https://bugs.jqueryui.com/", "license": "MIT", "scripts": { "test": "grunt" }, "dependencies": {}, "devDependencies": { "commitplease": "2.3.0", "grunt": "0.4.5", "grunt-bowercopy": "1.2.4", "grunt-cli": "0.1.13", "grunt-compare-size": "0.4.0", "grunt-contrib-concat": "0.5.1", "grunt-contrib-csslint": "0.5.0", "grunt-contrib-jshint": "0.12.0", "grunt-contrib-qunit": "1.0.1", "grunt-contrib-requirejs": "0.4.4", "grunt-contrib-uglify": "0.11.1", "grunt-git-authors": "3.1.0", "grunt-html": "6.0.0", "grunt-jscs": "2.1.0", "load-grunt-tasks": "3.4.0", "rimraf": "2.5.1", "testswarm": "1.1.0" }, "keywords": [] } jquery-ui-1.12.1/tests/000077500000000000000000000000001276627555100147105ustar00rootroot00000000000000jquery-ui-1.12.1/tests/.jshintrc000066400000000000000000000006331276627555100165370ustar00rootroot00000000000000{ "boss": true, "curly": true, "eqeqeq": true, "eqnull": true, "expr": true, "immed": true, "noarg": true, "quotmark": "double", "smarttabs": true, "trailing": true, "undef": true, "unused": true, "browser": true, "es3": true, "evil": true, "jquery": true, "globals": { "define": false, "Globalize": false, "QUnit": false, "require": true, "requirejs": true, "JSHINT": false } } jquery-ui-1.12.1/tests/images/000077500000000000000000000000001276627555100161555ustar00rootroot00000000000000jquery-ui-1.12.1/tests/images/jquery_521x191.png000066400000000000000000000074321276627555100212220ustar00rootroot00000000000000PNG  IHDR CcPLTE(?EPNT]07B\bk!)5z~kpxEZMd+<#2of^x*]`k)HPAbD^IEl9~R‘pPpo*FM6zʥFv"$NL BO4k?yerv j4 Vȷ*$V+V2-ǀ/$sc$7&BԈ- i[S@e+ 8#{#@t[FMH3aS L 6 JDAd 0J-t\U%Q6=>:#,tP޴'@oLePRϐX R3r]#7&aWF~1ivUClQTB U\LU\@ QqJaֽkЩe]XHF*]UhCaUIP tR˹_z; 7OpV F$ nź3p"^I輬8B;+-~5"c,T$܁5,$ 06>s'P~Dmrh OtU$F#Mģ W4];XvFc4vl )$2B7*aDAᕡiuqMr mD;Cx.=E 7H8՘3`4O2N "`X4V4.c[J|^XZEs])&+^ZSC~&nJ\ķ17%,RN)vgu+2;bIuE?$tF~ 8[9YVjDB.[Ya(fzjv\ozl'npw-L3>X +('20t,ǟ"7U Ԣ|t 2dh|Aa֡3#4-f3q/k,nM-LL3H+s DU?,#1!S N5>8X[L@n{wGD`,m0*ͼV@%g d_#AˉoЅYWJJ=)z !ڐFddz4#iIE^4F<8F$"$`&=(`)ХPC5P 5npI"wG )l62}mI *!cC*(&4R  DIјO=׹Yf>xs|RNUb v6"[0i3 HVCyc{wH - ר (ty@`\0%r T0H5ǃF0;a279( 8:Ϡ пm+չ͒C|N+A[6-2>K}!-r,JN{n >u\Wsf"̟Tbb3Јd4'$xę6 r_9/,?ΟmUZA] YW i2RaIA17k@UL*?*T&48DmAPIE ȹ ~ {H[3t \P! АdF0'8i`4%.`Álf H#gdٍHO\c9 zcM.ٯ^);&a(-og.+j( .<[i] #5k:Mেٲ8Ŷ ^ε2z+~woʵ JIC:<koDKۨ'{qPC)#؃?H.ZX}P:yp,K{DYA3T J\j*UReT_s:݈4JWn~C5TB(߽FlN [=eM`} 8gjb}Mqp',e~ׄ"ulXwTKDt!܈D,$9y^)S )ek/q%S7'R ac` /DFجyΓa^ oNdЬϓn";fb`穅բ7MxB}pmϓ(~>dX:{ii< v$.?9|(sO~_W7O~c_)4Odžۣo Mxгa}۹G$quQNj j ܯ;s0oܞXgS#xm|,,Fh`Ubiͬf `fffD qpUzӠVm v3l%\NzxlsNoY  @8, B:+`?6*$aLWQ22 ;My|O=&OI ZkI(1XU.];ɡi<}cCs,MNw̮jU|#p]!8؞#_trm\0kcM˭f"kh/\,E2]S{n]䕰>â *@y ހa+a}##m‰9-p OSN0<M1s~ѧX YHs .sX&Nrlۭj] BFʲL|>1|9vהw8*<8o[x~eֻe46*և1>J8X,t鄦 3RA"w' P3+{{}p (dV9|ipS AƼK] 5n ׭N|8MUHZXhkSU$&5$٨6 ttZq"Lr$LB "p@Tou>'5G̥1axt #vH$Zu\ M5.b WYɉpO>4Iٔl#nK[`*"ZhJ3yҊxa XĬ8Ic^Q%Of=y{ Ax̜U$9IENDB`jquery-ui-1.12.1/tests/images/jqueryui_32x32.png000066400000000000000000000021761276627555100214070ustar00rootroot00000000000000PNG  IHDR EIDATxŖ#YƳLF|m۶m۶gm۶m6K^x^KlAȊƉW'jva ש}/q&^ufPQ2@Qh%qK5j1d~p.H%Wn@ݖaH:v$j iZr;8n^2 ;M9ob"]v=V Ƭ܏',rOvUpf T`JCe#fwDM,ã|]H02õDɍ$;ɀΪX>δ!bvj_Ki |~ūQKFĺ&`B a"l݌7S;dy,hԱPbUcڍǣÍ P7j[v EQ7k@ʅ=ahZ3X;bbS,N6% -ʲ7c K ĬAJ$6;ڶ?- ;5ahj$3 ͊ЦU6ZIJ, %h x#yxhYp;Tx5oS vw$kGD-^RKщ4Fͩ7ja{h}9.e+o [|UPN:Jk&,ر#>'N cܪ /izN^s"S̆fR%|G1\벲w&]i_NdY:g1ɛxZ쌈 ح7O#ug=Hw_\Zkv.=;k7 jQuery UI Tests

    jQuery UI Tests

    Unit Tests

    Unit tests exist for all functionality in jQuery UI. The unit tests can be run locally (some tests require a web server with PHP) to ensure proper functionality before committing changes. The unit tests are also run on TestSwarm for every commit.

    Visual Tests

    Visual tests only exist in cases where we can't verify proper functionality with unit tests. These may be either purely visual or just hard to automate. Most visual tests will provide a description of what is happening on the page and what to look for.

    jquery-ui-1.12.1/tests/index.js000066400000000000000000000003011276627555100163470ustar00rootroot00000000000000$( function() { $( "#main" ) .addClass( "ui-widget" ) .find( "h1, h2" ) .addClass( "ui-widget-header ui-corner-top" ) .next() .addClass( "ui-widget-content ui-corner-bottom" ); } ); jquery-ui-1.12.1/tests/lib/000077500000000000000000000000001276627555100154565ustar00rootroot00000000000000jquery-ui-1.12.1/tests/lib/bootstrap.js000066400000000000000000000075661276627555100200470ustar00rootroot00000000000000( function() { requirejs.config( { paths: { "globalize": "../../../external/globalize/globalize", "globalize/ja-JP": "../../../external/globalize/globalize.culture.ja-JP", "jquery": jqueryUrl(), "jquery-simulate": "../../../external/jquery-simulate/jquery.simulate", "jshint": "../../../external/jshint/jshint", "lib": "../../lib", "phantom-bridge": "../../../node_modules/grunt-contrib-qunit/phantomjs/bridge", "qunit-assert-classes": "../../../external/qunit-assert-classes/qunit-assert-classes", "qunit-assert-close": "../../../external/qunit-assert-close/qunit-assert-close", "qunit": "../../../external/qunit/qunit", "testswarm": "http://swarm.jquery.org/js/inject.js?" + ( new Date() ).getTime(), "ui": "../../../ui" }, shim: { "globalize/ja-JP": [ "globalize" ], "jquery-simulate": [ "jquery" ], "qunit-assert-close": [ "qunit" ], "testswarm": [ "qunit" ] } } ); // Create a module that disables back compat for UI modules define( "jquery-no-back-compat", [ "jquery" ], function( $ ) { $.uiBackCompat = false; return $; } ); // Create a dummy bridge if we're not actually testing in PhantomJS if ( !/PhantomJS/.test( navigator.userAgent ) ) { define( "phantom-bridge", function() {} ); } // Load all modules in series function requireModules( dependencies, callback, modules ) { if ( !dependencies.length ) { if ( callback ) { callback.apply( null, modules ); } return; } if ( !modules ) { modules = []; } var dependency = dependencies.shift(); require( [ dependency ], function( module ) { modules.push( module ); requireModules( dependencies, callback, modules ); } ); } // Load a set of test file along with the required test infrastructure function requireTests( dependencies, noBackCompat ) { dependencies = [ "lib/qunit", noBackCompat ? "jquery-no-back-compat" : "jquery", "jquery-simulate" ].concat( dependencies ); // Load the TestSwarm injector, if necessary if ( parseUrl().swarmURL ) { dependencies.push( "testswarm" ); } requireModules( dependencies, function( QUnit ) { QUnit.start(); } ); } // Parse the URL into key/value pairs function parseUrl() { var data = {}; var parts = document.location.search.slice( 1 ).split( "&" ); var length = parts.length; var i = 0; var current; for ( ; i < length; i++ ) { current = parts[ i ].split( "=" ); data[ current[ 0 ] ] = current[ 1 ]; } return data; } function jqueryUrl() { var version = parseUrl().jquery; var url; if ( version === "git" ) { url = "http://code.jquery.com/jquery-" + version; } else { url = "../../../external/jquery-" + ( version || "1.12.4" ) + "/jquery"; } return url; } // Load test modules based on data attributes // - data-modules: list of test modules to load // - data-widget: A widget to load test modules for // - Automatically loads common, core, events, methods, and options // - data-deprecated: Loads the deprecated test modules for a widget // - data-no-back-compat: Set $.uiBackCompat to false ( function() { // Find the script element var scripts = document.getElementsByTagName( "script" ); var script = scripts[ scripts.length - 1 ]; // Read the modules var modules = script.getAttribute( "data-modules" ); if ( modules ) { modules = modules .replace( /^\s+|\s+$/g, "" ) .split( /\s+/ ); } else { modules = []; } var widget = script.getAttribute( "data-widget" ); var deprecated = !!script.getAttribute( "data-deprecated" ); var noBackCompat = !!script.getAttribute( "data-no-back-compat" ); if ( widget ) { modules = modules.concat( [ ( deprecated ? "common-deprecated" : "common" ), "core", "events", "methods", "options" ] ); if ( deprecated ) { modules = modules.concat( "deprecated" ); } } // Load the jQuery 1.7 fixes, if necessary if ( parseFloat( parseUrl().jquery ) === 1.7 ) { modules.push( "ui/jquery-1-7" ); } requireTests( modules, noBackCompat ); } )(); } )(); jquery-ui-1.12.1/tests/lib/common.js000066400000000000000000000071411276627555100173070ustar00rootroot00000000000000define( [ "qunit", "jquery" ], function( QUnit, $ ) { var exports = {}; function testWidgetDefaults( widget, defaults ) { var pluginDefaults = $.ui[ widget ].prototype.options; // Ensure that all defaults have the correct value QUnit.test( "defined defaults", function( assert ) { var count = 0; $.each( defaults, function( key, val ) { assert.expect( ++count ); if ( $.isFunction( val ) ) { assert.ok( $.isFunction( pluginDefaults[ key ] ), key ); return; } assert.deepEqual( pluginDefaults[ key ], val, key ); } ); } ); // Ensure that all defaults were tested QUnit.test( "tested defaults", function( assert ) { var count = 0; $.each( pluginDefaults, function( key ) { assert.expect( ++count ); assert.ok( key in defaults, key ); } ); } ); } function testWidgetOverrides( widget ) { if ( $.uiBackCompat === false ) { QUnit.test( "$.widget overrides", function( assert ) { assert.expect( 4 ); $.each( [ "_createWidget", "destroy", "option", "_trigger" ], function( i, method ) { assert.strictEqual( $.ui[ widget ].prototype[ method ], $.Widget.prototype[ method ], "should not override " + method ); } ); } ); } } function testBasicUsage( widget ) { QUnit.test( "basic usage", function( assert ) { assert.expect( 3 ); var defaultElement = $.ui[ widget ].prototype.defaultElement; $( defaultElement ).appendTo( "body" )[ widget ]().remove(); assert.ok( true, "initialized on element" ); $( defaultElement )[ widget ]().remove(); assert.ok( true, "initialized on disconnected DOMElement - never connected" ); // Ensure manipulating removed elements works (#3664) $( defaultElement ).appendTo( "body" ).remove()[ widget ]().remove(); assert.ok( true, "initialized on disconnected DOMElement - removed" ); } ); } exports.testWidget = function( widget, settings ) { QUnit.module( widget + ": common widget" ); exports.testJshint( "/widgets/" + widget ); testWidgetDefaults( widget, settings.defaults ); testWidgetOverrides( widget ); if ( !settings.noDefaultElement ) { testBasicUsage( widget ); } QUnit.test( "version", function( assert ) { assert.expect( 1 ); assert.ok( "version" in $.ui[ widget ].prototype, "version property exists" ); } ); }; exports.testJshint = function( module ) { // Function.prototype.bind check is needed because JSHint doesn't work in ES3 browsers anymore // https://github.com/jshint/jshint/issues/1384 if ( QUnit.urlParams.nojshint || !Function.prototype.bind ) { return; } QUnit.test( "JSHint", function( assert ) { var ready = assert.async(); require( [ "jshint" ], function() { assert.expect( 1 ); $.when( $.ajax( { url: "../../../ui/.jshintrc", dataType: "json" } ), $.ajax( { url: "../../../ui/" + module + ".js", dataType: "text" } ) ) .done( function( hintArgs, srcArgs ) { var globals, passed, errors, jshintrc = hintArgs[ 0 ], source = srcArgs[ 0 ]; globals = jshintrc.globals || {}; delete jshintrc.globals; passed = JSHINT( source, jshintrc, globals ); errors = $.map( JSHINT.errors, function( error ) { // JSHINT may report null if there are too many errors if ( !error ) { return; } return "[L" + error.line + ":C" + error.character + "] " + error.reason + "\n" + error.evidence + "\n"; } ).join( "\n" ); assert.ok( passed, errors ); ready(); } ) .fail( function( hintError, srcError ) { assert.ok( false, "error loading source: " + ( hintError || srcError ).statusText ); ready(); } ); } ); } ); }; return exports; } ); jquery-ui-1.12.1/tests/lib/css.js000066400000000000000000000010711276627555100166030ustar00rootroot00000000000000( function() { function includeStyle( url ) { document.write( "" ); } // Find the script element var scripts = document.getElementsByTagName( "script" ); var script = scripts[ scripts.length - 1 ]; // Load the modules var modules = script.getAttribute( "data-modules" ); if ( modules ) { modules = modules.split( /\s+/ ); for ( var i = 0; i < modules.length; i++ ) { includeStyle( "themes/base/" + modules[ i ] + ".css" ); } } // Load the QUnit stylesheet includeStyle( "external/qunit/qunit.css" ); } )(); jquery-ui-1.12.1/tests/lib/helper.js000066400000000000000000000011271276627555100172740ustar00rootroot00000000000000define( [ "jquery" ], function( $ ) { var exports = {}; exports.forceScrollableWindow = function( appendTo ) { // The main testable area is 10000x10000 so to enforce scrolling, // this DIV must be greater than 10000 to work return $( "
    " ) .css( { height: "11000px", width: "11000px" } ) .appendTo( appendTo || "#qunit-fixture" ); }; exports.onFocus = function( element, onFocus ) { var fn = function( event ) { if ( !event.originalEvent ) { return; } element.off( "focus", fn ); onFocus(); }; element.on( "focus", fn )[ 0 ].focus(); }; return exports; } ); jquery-ui-1.12.1/tests/lib/qunit-assert-domequal.js000066400000000000000000000052301276627555100222600ustar00rootroot00000000000000/* * Experimental assertion for comparing DOM objects. * * Serializes an element and some properties and attributes and its children if any, * otherwise the text. Then compares the result using deepEqual(). */ define( [ "qunit", "jquery" ], function( QUnit, $ ) { var domEqual = QUnit.assert.domEqual = function( selector, modifier, message ) { var assert = this; // Get current state prior to modifier var expected = extract( selector, message ); function done() { var actual = extract( selector, message ); assert.push( QUnit.equiv( actual, expected ), actual, expected, message ); } // Run modifier (async or sync), then compare state via done() if ( modifier.length ) { modifier( done ); } else { modifier(); done(); } }; domEqual.properties = [ "disabled", "readOnly" ]; domEqual.attributes = [ "autocomplete", "aria-activedescendant", "aria-controls", "aria-describedby", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-hidden", "aria-labelledby", "aria-pressed", "aria-selected", "aria-valuemax", "aria-valuemin", "aria-valuenow", "class", "href", "id", "nodeName", "role", "tabIndex", "title" ]; function getElementStyles( elem ) { var styles = {}; var style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : elem.currentStyle; var key, len; if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { len = style.length; while ( len-- ) { key = style[ len ]; if ( typeof style[ key ] === "string" ) { styles[ $.camelCase( key ) ] = style[ key ]; } } // Support: Opera, IE <9 } else { for ( key in style ) { if ( typeof style[ key ] === "string" ) { styles[ key ] = style[ key ]; } } } return styles; } function extract( selector, message ) { var elem = $( selector ); if ( !elem.length ) { QUnit.push( false, null, null, "domEqual failed, can't extract " + selector + ", message was: " + message ); return; } var result = {}; var children; $.each( domEqual.properties, function( index, attr ) { var value = elem.prop( attr ); result[ attr ] = value != null ? value : ""; } ); $.each( domEqual.attributes, function( index, attr ) { var value = elem.attr( attr ); result[ attr ] = value != null ? value : ""; } ); result.style = getElementStyles( elem[ 0 ] ); result.events = $._data( elem[ 0 ], "events" ); result.data = $.extend( {}, elem.data() ); delete result.data[ $.expando ]; children = elem.children(); if ( children.length ) { result.children = elem.children().map( function() { return extract( $( this ) ); } ).get(); } else { result.text = elem.text(); } return result; } } ); jquery-ui-1.12.1/tests/lib/qunit.js000066400000000000000000000022511276627555100171540ustar00rootroot00000000000000define( [ "qunit", "jquery", "qunit-assert-classes", "qunit-assert-close", "lib/qunit-assert-domequal", "phantom-bridge" ], function( QUnit, $ ) { QUnit.config.autostart = false; QUnit.config.requireExpects = true; QUnit.config.urlConfig.push( { id: "nojshint", label: "Skip JSHint", tooltip: "Skip running JSHint, e.g., within TestSwarm, where Jenkins runs it already" } ); QUnit.config.urlConfig.push( { id: "jquery", label: "jQuery version", value: [ "1.7.0", "1.7.1", "1.7.2", "1.8.0", "1.8.1", "1.8.2", "1.8.3", "1.9.0", "1.9.1", "1.10.0", "1.10.1", "1.10.2", "1.11.0", "1.11.1", "1.11.2", "1.11.3", "1.12.0", "1.12.1", "1.12.2", "1.12.3", "1.12.4", "2.0.0", "2.0.1", "2.0.2", "2.0.3", "2.1.0", "2.1.1", "2.1.2", "2.1.3", "2.1.4", "2.2.0", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "3.0.0", "3.1.0", "git", "custom" ], tooltip: "Which jQuery Core version to test against" } ); QUnit.reset = ( function( reset ) { return function() { // Ensure jQuery events and data on the fixture are properly removed $( "#qunit-fixture" ).empty(); // Let QUnit reset the fixture reset.apply( this, arguments ); }; } )( QUnit.reset ); return QUnit; } ); jquery-ui-1.12.1/tests/unit/000077500000000000000000000000001276627555100156675ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/accordion/000077500000000000000000000000001276627555100176305ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/accordion/accordion.html000066400000000000000000000054201276627555100224600ustar00rootroot00000000000000 jQuery UI Accordion Test Suite

    There is one obvious advantage:

    You've seen it coming!
    Buy now and get nothing for free!
    Well, at least no free beer. Perhaps a bear, if you can afford it.

    Now that you've got...

    your bear, you have to admit it!
    No, we aren't selling bears.

    We could talk about renting one.

    Rent one bear, ...

    get two for three beer.

    And now, for something completely different.

    Accordion Header 1
    Accordion Content 1
    Accordion Header 2
    Accordion Content 2
    Accordion Header 3
    Accordion Content 3

    Header

    The calculated height of this accordion should be the same regardless of whether the accordion was collapsed or not when the height was calculated.

    jquery-ui-1.12.1/tests/unit/accordion/all.html000066400000000000000000000012041276627555100212630ustar00rootroot00000000000000 jQuery UI Accordion Test Suite
    jquery-ui-1.12.1/tests/unit/accordion/common.js000066400000000000000000000011571276627555100214620ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/accordion" ], function( common ) { common.testWidget( "accordion", { defaults: { active: 0, animate: {}, classes: { "ui-accordion-header": "ui-corner-top", "ui-accordion-header-collapsed": "ui-corner-all", "ui-accordion-content": "ui-corner-bottom" }, collapsible: false, disabled: false, event: "click", header: "> li > :first-child, > :not(li):even", heightStyle: "auto", icons: { "activeHeader": "ui-icon-triangle-1-s", "header": "ui-icon-triangle-1-e" }, // Callbacks activate: null, beforeActivate: null, create: null } } ); } ); jquery-ui-1.12.1/tests/unit/accordion/core.js000066400000000000000000000252111276627555100211170ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/accordion" ], function( QUnit, $, testHelper ) { var setupTeardown = testHelper.setupTeardown, state = testHelper.state; QUnit.module( "accordion: core", setupTeardown() ); $.each( { div: "#list1", ul: "#navigation", dl: "#accordion-dl" }, function( type, selector ) { QUnit.test( "markup structure: " + type, function( assert ) { assert.expect( 10 ); var element = $( selector ).accordion(), headers = element.find( ".ui-accordion-header" ), content = headers.next(); assert.hasClasses( element, "ui-accordion ui-widget" ); assert.equal( headers.length, 3, ".ui-accordion-header elements exist, correct number" ); assert.hasClasses( headers[ 0 ], "ui-accordion-header ui-accordion-header-active ui-accordion-icons" ); assert.hasClasses( headers[ 1 ], "ui-accordion-header ui-accordion-header-collapsed ui-accordion-icons" ); assert.hasClasses( headers[ 2 ], "ui-accordion-header ui-accordion-header-collapsed ui-accordion-icons" ); assert.equal( content.length, 3, ".ui-accordion-content elements exist, correct number" ); assert.hasClasses( content[ 0 ], "ui-accordion-content ui-widget-content ui-accordion-content-active" ); assert.hasClasses( content[ 1 ], "ui-accordion-content ui-widget-content" ); assert.hasClasses( content[ 2 ], "ui-accordion-content ui-widget-content" ); assert.deepEqual( element.find( ".ui-accordion-header" ).next().get(), element.find( ".ui-accordion-content" ).get(), "content panels come immediately after headers" ); } ); } ); QUnit.test( "handle click on header-descendant", function( assert ) { assert.expect( 1 ); var element = $( "#navigation" ).accordion(); $( "#navigation h2:eq(1) a" ).trigger( "click" ); state( assert, element, 0, 1, 0 ); } ); QUnit.test( "accessibility", function( assert ) { assert.expect( 61 ); var element = $( "#list1" ).accordion( { active: 1, collapsible: true } ), headers = element.find( ".ui-accordion-header" ); assert.equal( element.attr( "role" ), "tablist", "element role" ); headers.each( function( i ) { var header = headers.eq( i ), panel = header.next(); assert.equal( header.attr( "role" ), "tab", "header " + i + " role" ); assert.equal( header.attr( "aria-controls" ), panel.attr( "id" ), "header " + i + " aria-controls" ); assert.equal( panel.attr( "role" ), "tabpanel", "panel " + i + " role" ); assert.equal( panel.attr( "aria-labelledby" ), header.attr( "id" ), "panel " + i + " aria-labelledby" ); } ); assert.equal( headers.eq( 1 ).attr( "tabindex" ), 0, "active header has tabindex=0" ); assert.equal( headers.eq( 1 ).attr( "aria-selected" ), "true", "active tab (1) has aria-selected=true" ); assert.equal( headers.eq( 1 ).attr( "aria-expanded" ), "true", "active tab (1) has aria-expanded=true" ); assert.equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "false", "active tabpanel (1) has aria-hidden=false" ); assert.equal( headers.eq( 0 ).attr( "tabindex" ), -1, "inactive header (0) has tabindex=-1" ); assert.equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "inactive tab (0) has aria-selected=false" ); assert.equal( headers.eq( 0 ).attr( "aria-expanded" ), "false", "inactive tab (0) has aria-expanded=false" ); assert.equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (0) has aria-hidden=true" ); assert.equal( headers.eq( 2 ).attr( "tabindex" ), -1, "inactive header (2) has tabindex=-1" ); assert.equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "inactive tab (2) has aria-selected=false" ); assert.equal( headers.eq( 2 ).attr( "aria-expanded" ), "false", "inactive tab (2) has aria-expanded=false" ); assert.equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (2) has aria-hidden=true" ); element.accordion( "option", "active", 0 ); assert.equal( headers.eq( 0 ).attr( "tabindex" ), 0, "active header (0) has tabindex=0" ); assert.equal( headers.eq( 0 ).attr( "aria-selected" ), "true", "active tab (0) has aria-selected=true" ); assert.equal( headers.eq( 0 ).attr( "aria-expanded" ), "true", "active tab (0) has aria-expanded=true" ); assert.equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "false", "active tabpanel (0) has aria-hidden=false" ); assert.equal( headers.eq( 1 ).attr( "tabindex" ), -1, "inactive header (1) has tabindex=-1" ); assert.equal( headers.eq( 1 ).attr( "aria-selected" ), "false", "inactive tab (1) has aria-selected=false" ); assert.equal( headers.eq( 1 ).attr( "aria-expanded" ), "false", "inactive tab (1) has aria-expanded=false" ); assert.equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (1) has aria-hidden=true" ); assert.equal( headers.eq( 2 ).attr( "tabindex" ), -1, "inactive header (2) has tabindex=-1" ); assert.equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "inactive tab (2) has aria-selected=false" ); assert.equal( headers.eq( 2 ).attr( "aria-expanded" ), "false", "inactive tab (2) has aria-expanded=false" ); assert.equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (2) has aria-hidden=true" ); element.accordion( "option", "active", false ); assert.equal( headers.eq( 0 ).attr( "tabindex" ), 0, "previously active header (0) has tabindex=0" ); assert.equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "inactive tab (0) has aria-selected=false" ); assert.equal( headers.eq( 0 ).attr( "aria-expanded" ), "false", "inactive tab (0) has aria-expanded=false" ); assert.equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (0) has aria-hidden=true" ); assert.equal( headers.eq( 1 ).attr( "tabindex" ), -1, "inactive header (1) has tabindex=-1" ); assert.equal( headers.eq( 1 ).attr( "aria-selected" ), "false", "inactive tab (1) has aria-selected=false" ); assert.equal( headers.eq( 1 ).attr( "aria-expanded" ), "false", "inactive tab (1) has aria-expanded=false" ); assert.equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (1) has aria-hidden=true" ); assert.equal( headers.eq( 2 ).attr( "tabindex" ), -1, "inactive header (2) has tabindex=-1" ); assert.equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "inactive tab (2) has aria-selected=false" ); assert.equal( headers.eq( 2 ).attr( "aria-expanded" ), "false", "inactive tab (2) has aria-expanded=false" ); assert.equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (2) has aria-hidden=true" ); element.accordion( "option", "active", 1 ); assert.equal( headers.eq( 1 ).attr( "tabindex" ), 0, "active header has tabindex=0" ); assert.equal( headers.eq( 1 ).attr( "aria-selected" ), "true", "active tab (1) has aria-selected=true" ); assert.equal( headers.eq( 1 ).attr( "aria-expanded" ), "true", "active tab (1) has aria-expanded=true" ); assert.equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "false", "active tabpanel (1) has aria-hidden=false" ); assert.equal( headers.eq( 0 ).attr( "tabindex" ), -1, "inactive header (0) has tabindex=-1" ); assert.equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "inactive tab (0) has aria-selected=false" ); assert.equal( headers.eq( 0 ).attr( "aria-expanded" ), "false", "inactive tab (0) has aria-expanded=false" ); assert.equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (0) has aria-hidden=true" ); assert.equal( headers.eq( 2 ).attr( "tabindex" ), -1, "inactive header (2) has tabindex=-1" ); assert.equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "inactive tab (2) has aria-selected=false" ); assert.equal( headers.eq( 2 ).attr( "aria-expanded" ), "false", "inactive tab (2) has aria-expanded=false" ); assert.equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "inactive tabpanel (2) has aria-hidden=true" ); } ); QUnit.test( "keyboard support", function( assert ) { var ready = assert.async(); assert.expect( 13 ); var element = $( "#list1" ).accordion(), headers = element.find( ".ui-accordion-header" ), anchor = headers.eq( 1 ).next().find( "a" ).eq( 0 ), keyCode = $.ui.keyCode; assert.equal( headers.filter( ".ui-state-focus" ).length, 0, "no headers focused on init" ); headers.eq( 0 ).simulate( "focus" ); setTimeout( step1 ); function step1() { assert.hasClasses( headers.eq( 0 ), "ui-state-focus", "first header has focus" ); headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.DOWN } ); setTimeout( step2 ); } // Support: IE 11 with jQuery 1.7 - 1.8 only // All of the setTimeouts() from keydowns aren't necessary with newer jQuery. // Only the explicit focus simulations require them. function step2() { assert.hasClasses( headers.eq( 1 ), "ui-state-focus", "DOWN moves focus to next header" ); headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.RIGHT } ); setTimeout( step3 ); } function step3() { assert.hasClasses( headers.eq( 2 ), "ui-state-focus", "RIGHT moves focus to next header" ); headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.DOWN } ); setTimeout( step4 ); } function step4() { assert.hasClasses( headers.eq( 0 ), "ui-state-focus", "DOWN wraps focus to first header" ); headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.UP } ); setTimeout( step5 ); } function step5() { assert.hasClasses( headers.eq( 2 ), "ui-state-focus", "UP wraps focus to last header" ); headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.LEFT } ); setTimeout( step6 ); } function step6() { assert.hasClasses( headers.eq( 1 ), "ui-state-focus", "LEFT moves focus to previous header" ); headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.HOME } ); setTimeout( step7 ); } function step7() { assert.hasClasses( headers.eq( 0 ), "ui-state-focus", "HOME moves focus to first header" ); headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.END } ); setTimeout( step8 ); } function step8() { assert.hasClasses( headers.eq( 2 ), "ui-state-focus", "END moves focus to last header" ); headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.ENTER } ); setTimeout( step9 ); } function step9() { assert.equal( element.accordion( "option", "active" ), 2, "ENTER activates panel" ); headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.SPACE } ); setTimeout( step10 ); } function step10() { assert.equal( element.accordion( "option", "active" ), 1, "SPACE activates panel" ); anchor.simulate( "focus" ); setTimeout( step11 ); } function step11() { assert.lacksClasses( headers.eq( 1 ), "ui-state-focus", "header loses focus when focusing inside the panel" ); anchor.simulate( "keydown", { keyCode: keyCode.UP, ctrlKey: true } ); setTimeout( step12 ); } function step12() { assert.hasClasses( headers.eq( 1 ), "ui-state-focus", "CTRL+UP moves focus to header" ); ready(); } } ); } ); jquery-ui-1.12.1/tests/unit/accordion/events.js000066400000000000000000000130011276627555100214650ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/accordion" ], function( QUnit, $, testHelper ) { var setupTeardown = testHelper.setupTeardown, state = testHelper.state; QUnit.module( "accordion: events", setupTeardown() ); QUnit.test( "create", function( assert ) { assert.expect( 10 ); var element = $( "#list1" ), headers = element.children( "h3" ), contents = headers.next(); element.accordion( { create: function( event, ui ) { assert.equal( ui.header.length, 1, "header length" ); assert.strictEqual( ui.header[ 0 ], headers[ 0 ], "header" ); assert.equal( ui.panel.length, 1, "panel length" ); assert.strictEqual( ui.panel[ 0 ], contents[ 0 ], "panel" ); } } ); element.accordion( "destroy" ); element.accordion( { active: 2, create: function( event, ui ) { assert.equal( ui.header.length, 1, "header length" ); assert.strictEqual( ui.header[ 0 ], headers[ 2 ], "header" ); assert.equal( ui.panel.length, 1, "panel length" ); assert.strictEqual( ui.panel[ 0 ], contents[ 2 ], "panel" ); } } ); element.accordion( "destroy" ); element.accordion( { active: false, collapsible: true, create: function( event, ui ) { assert.equal( ui.header.length, 0, "header length" ); assert.equal( ui.panel.length, 0, "panel length" ); } } ); element.accordion( "destroy" ); } ); QUnit.test( "beforeActivate", function( assert ) { assert.expect( 38 ); var element = $( "#list1" ).accordion( { active: false, collapsible: true } ), headers = element.find( ".ui-accordion-header" ), content = element.find( ".ui-accordion-content" ); element.one( "accordionbeforeactivate", function( event, ui ) { assert.ok( !( "originalEvent" in event ) ); assert.equal( ui.oldHeader.length, 0 ); assert.equal( ui.oldPanel.length, 0 ); assert.equal( ui.newHeader.length, 1 ); assert.strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); assert.equal( ui.newPanel.length, 1 ); assert.strictEqual( ui.newPanel[ 0 ], content[ 0 ] ); state( assert, element, 0, 0, 0 ); } ); element.accordion( "option", "active", 0 ); state( assert, element, 1, 0, 0 ); element.one( "accordionbeforeactivate", function( event, ui ) { assert.equal( event.originalEvent.type, "click" ); assert.equal( ui.oldHeader.length, 1 ); assert.strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] ); assert.equal( ui.oldPanel.length, 1 ); assert.strictEqual( ui.oldPanel[ 0 ], content[ 0 ] ); assert.equal( ui.newHeader.length, 1 ); assert.strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); assert.equal( ui.newPanel.length, 1 ); assert.strictEqual( ui.newPanel[ 0 ], content[ 1 ] ); state( assert, element, 1, 0, 0 ); } ); headers.eq( 1 ).trigger( "click" ); state( assert, element, 0, 1, 0 ); element.one( "accordionbeforeactivate", function( event, ui ) { assert.ok( !( "originalEvent" in event ) ); assert.equal( ui.oldHeader.length, 1 ); assert.strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] ); assert.equal( ui.oldPanel.length, 1 ); assert.strictEqual( ui.oldPanel[ 0 ], content[ 1 ] ); assert.equal( ui.newHeader.length, 0 ); assert.equal( ui.newPanel.length, 0 ); state( assert, element, 0, 1, 0 ); } ); element.accordion( "option", "active", false ); state( assert, element, 0, 0, 0 ); element.one( "accordionbeforeactivate", function( event, ui ) { assert.ok( !( "originalEvent" in event ) ); assert.equal( ui.oldHeader.length, 0 ); assert.equal( ui.oldPanel.length, 0 ); assert.equal( ui.newHeader.length, 1 ); assert.strictEqual( ui.newHeader[ 0 ], headers[ 2 ] ); assert.equal( ui.newPanel.length, 1 ); assert.strictEqual( ui.newPanel[ 0 ], content[ 2 ] ); event.preventDefault(); state( assert, element, 0, 0, 0 ); } ); element.accordion( "option", "active", 2 ); state( assert, element, 0, 0, 0 ); } ); QUnit.test( "activate", function( assert ) { assert.expect( 21 ); var element = $( "#list1" ).accordion( { active: false, collapsible: true } ), headers = element.find( ".ui-accordion-header" ), content = element.find( ".ui-accordion-content" ); element.one( "accordionactivate", function( event, ui ) { assert.equal( ui.oldHeader.length, 0 ); assert.equal( ui.oldPanel.length, 0 ); assert.equal( ui.newHeader.length, 1 ); assert.strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); assert.equal( ui.newPanel.length, 1 ); assert.strictEqual( ui.newPanel[ 0 ], content[ 0 ] ); } ); element.accordion( "option", "active", 0 ); element.one( "accordionactivate", function( event, ui ) { assert.equal( ui.oldHeader.length, 1 ); assert.strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] ); assert.equal( ui.oldPanel.length, 1 ); assert.strictEqual( ui.oldPanel[ 0 ], content[ 0 ] ); assert.equal( ui.newHeader.length, 1 ); assert.strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); assert.equal( ui.newPanel.length, 1 ); assert.strictEqual( ui.newPanel[ 0 ], content[ 1 ] ); } ); headers.eq( 1 ).trigger( "click" ); element.one( "accordionactivate", function( event, ui ) { assert.equal( ui.oldHeader.length, 1 ); assert.strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] ); assert.equal( ui.oldPanel.length, 1 ); assert.strictEqual( ui.oldPanel[ 0 ], content[ 1 ] ); assert.equal( ui.newHeader.length, 0 ); assert.equal( ui.newPanel.length, 0 ); } ); element.accordion( "option", "active", false ); // Prevent activation element.one( "accordionbeforeactivate", function( event ) { assert.ok( true ); event.preventDefault(); } ); element.one( "accordionactivate", function() { assert.ok( false ); } ); element.accordion( "option", "active", 1 ); } ); } ); jquery-ui-1.12.1/tests/unit/accordion/helper.js000066400000000000000000000015631276627555100214520ustar00rootroot00000000000000define( [ "qunit", "jquery", "lib/helper", "ui/widgets/accordion" ], function( QUnit, $, helper ) { return $.extend( helper, { equalHeight: function( assert, accordion, height ) { accordion.find( ".ui-accordion-content" ).each( function() { assert.equal( $( this ).outerHeight(), height ); } ); }, setupTeardown: function() { var animate = $.ui.accordion.prototype.options.animate; return { setup: function() { $.ui.accordion.prototype.options.animate = false; }, teardown: function() { $.ui.accordion.prototype.options.animate = animate; } }; }, state: function( assert, accordion ) { var expected = $.makeArray( arguments ).slice( 2 ), actual = accordion.find( ".ui-accordion-content" ).map( function() { return $( this ).css( "display" ) === "none" ? 0 : 1; } ).get(); assert.deepEqual( actual, expected ); } } ); } ); jquery-ui-1.12.1/tests/unit/accordion/methods.js000066400000000000000000000100711276627555100216300ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/accordion" ], function( QUnit, $, testHelper ) { var equalHeight = testHelper.equalHeight, setupTeardown = testHelper.setupTeardown, state = testHelper.state; QUnit.module( "accordion: methods", setupTeardown() ); QUnit.test( "destroy", function( assert ) { assert.expect( 1 ); assert.domEqual( "#list1", function() { $( "#list1" ).accordion().accordion( "destroy" ); } ); } ); QUnit.test( "enable/disable", function( assert ) { assert.expect( 7 ); var element = $( "#list1" ).accordion(); state( assert, element, 1, 0, 0 ); element.accordion( "disable" ); assert.hasClasses( element, "ui-state-disabled" ); assert.equal( element.attr( "aria-disabled" ), "true", "element gets aria-disabled" ); assert.hasClasses( element, "ui-accordion-disabled" ); // Event does nothing element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" ); state( assert, element, 1, 0, 0 ); // Option still works element.accordion( "option", "active", 1 ); state( assert, element, 0, 1, 0 ); element.accordion( "enable" ); element.accordion( "option", "active", 2 ); state( assert, element, 0, 0, 1 ); } ); QUnit.test( "refresh", function( assert ) { assert.expect( 19 ); var element = $( "#navigation" ) .parent() .height( 300 ) .end() .accordion( { heightStyle: "fill" } ); equalHeight( assert, element, 255 ); element.parent().height( 500 ); element.accordion( "refresh" ); equalHeight( assert, element, 455 ); element = $( "#list1" ); element.accordion(); state( assert, element, 1, 0, 0 ); // Disable panel via markup element.find( "h3.bar" ).eq( 1 ).addClass( "ui-state-disabled" ); element.accordion( "refresh" ); state( assert, element, 1, 0, 0 ); // Don't add multiple icons element.accordion( "refresh" ); assert.equal( element.find( ".ui-accordion-header-icon" ).length, 3 ); // Add a panel element .append( "

    new 1

    " ) .append( "
    new 1
    " ); element.accordion( "refresh" ); state( assert, element, 1, 0, 0, 0 ); // Remove all tabs element.find( "h3.bar, div.foo" ).remove(); element.accordion( "refresh" ); state( assert, element ); assert.equal( element.accordion( "option", "active" ), false, "no active accordion panel" ); // Add panels element .append( "

    new 2

    " ) .append( "
    new 2
    " ) .append( "

    new 3

    " ) .append( "
    new 3
    " ) .append( "

    new 4

    " ) .append( "
    new 4
    " ) .append( "

    new 5

    " ) .append( "
    new 5
    " ); element.accordion( "refresh" ); state( assert, element, 1, 0, 0, 0 ); // Activate third tab element.accordion( "option", "active", 2 ); state( assert, element, 0, 0, 1, 0 ); // Remove fourth panel, third panel should stay active element.find( "h3.bar" ).eq( 3 ).remove(); element.find( "div.foo" ).eq( 3 ).remove(); element.accordion( "refresh" ); state( assert, element, 0, 0, 1 ); // Remove third (active) panel, second panel should become active element.find( "h3.bar" ).eq( 2 ).remove(); element.find( "div.foo" ).eq( 2 ).remove(); element.accordion( "refresh" ); state( assert, element, 0, 1 ); // Remove first panel, previously active panel (now first) should stay active element.find( "h3.bar" ).eq( 0 ).remove(); element.find( "div.foo" ).eq( 0 ).remove(); element.accordion( "refresh" ); state( assert, element, 1 ); // Collapse all panels element.accordion( "option", { collapsible: true, active: false } ); state( assert, element, 0 ); element.accordion( "refresh" ); state( assert, element, 0 ); } ); QUnit.test( "widget", function( assert ) { assert.expect( 2 ); var element = $( "#list1" ).accordion(), widgetElement = element.accordion( "widget" ); assert.equal( widgetElement.length, 1, "one element" ); assert.strictEqual( widgetElement[ 0 ], element[ 0 ], "same element" ); } ); } ); jquery-ui-1.12.1/tests/unit/accordion/options.js000066400000000000000000000364751276627555100217000ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/accordion" ], function( QUnit, $, testHelper ) { var equalHeight = testHelper.equalHeight, setupTeardown = testHelper.setupTeardown, state = testHelper.state; QUnit.module( "accordion: options", setupTeardown() ); QUnit.test( "{ active: default }", function( assert ) { assert.expect( 2 ); var element = $( "#list1" ).accordion(); assert.equal( element.accordion( "option", "active" ), 0 ); state( assert, element, 1, 0, 0 ); } ); QUnit.test( "{ active: null }", function( assert ) { assert.expect( 2 ); var element = $( "#list1" ).accordion( { active: null } ); assert.equal( element.accordion( "option", "active" ), 0 ); state( assert, element, 1, 0, 0 ); } ); QUnit.test( "{ active: false }", function( assert ) { assert.expect( 7 ); var element = $( "#list1" ).accordion( { active: false, collapsible: true } ); state( assert, element, 0, 0, 0 ); assert.equal( element.find( ".ui-accordion-header.ui-state-active" ).length, 0, "no headers selected" ); assert.equal( element.accordion( "option", "active" ), false ); element.accordion( "option", "collapsible", false ); state( assert, element, 1, 0, 0 ); assert.equal( element.accordion( "option", "active" ), 0 ); element.accordion( "destroy" ); element.accordion( { active: false } ); state( assert, element, 1, 0, 0 ); assert.strictEqual( element.accordion( "option", "active" ), 0 ); } ); // http://bugs.jqueryui.com/ticket/11938 QUnit.test( "{ active: false, collapsible: true }", function( assert ) { assert.expect( 1 ); var element = $( "#collapsible" ).accordion(), height = element.outerHeight(); element .accordion( "destroy" ) .accordion( { active: false, collapsible: true } ) .accordion( "option", "active", 0 ); assert.equal( element.outerHeight(), height ); } ); QUnit.test( "{ active: Number }", function( assert ) { assert.expect( 8 ); var element = $( "#list1" ).accordion( { active: 2 } ); assert.equal( element.accordion( "option", "active" ), 2 ); state( assert, element, 0, 0, 1 ); element.accordion( "option", "active", 0 ); assert.equal( element.accordion( "option", "active" ), 0 ); state( assert, element, 1, 0, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); element.accordion( "option", "active", 10 ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); } ); QUnit.test( "{ active: -Number }", function( assert ) { assert.expect( 8 ); var element = $( "#list1" ).accordion( { active: -1 } ); assert.equal( element.accordion( "option", "active" ), 2 ); state( assert, element, 0, 0, 1 ); element.accordion( "option", "active", -2 ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); element.accordion( "option", "active", -10 ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); element.accordion( "option", "active", -3 ); assert.equal( element.accordion( "option", "active" ), 0 ); state( assert, element, 1, 0, 0 ); } ); QUnit.test( "{ animate: false }", function( assert ) { assert.expect( 3 ); var element = $( "#list1" ).accordion( { animate: false } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; $.fn.animate = function() { assert.ok( false, ".animate() called" ); }; assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 1 ); assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; } ); QUnit.test( "{ animate: Number }", function( assert ) { var ready = assert.async(); assert.expect( 7 ); var element = $( "#list1" ).accordion( { animate: 100 } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // Called twice (both panels) $.fn.animate = function( props, options ) { assert.equal( options.duration, 100, "correct duration" ); assert.equal( options.easing, undefined, "default easing" ); animate.apply( this, arguments ); }; assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 1 ); panels.promise().done( function() { assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; ready(); } ); } ); QUnit.test( "{ animate: String }", function( assert ) { var ready = assert.async(); assert.expect( 7 ); var element = $( "#list1" ).accordion( { animate: "linear" } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // Called twice (both panels) $.fn.animate = function( props, options ) { assert.equal( options.duration, undefined, "default duration" ); assert.equal( options.easing, "linear", "correct easing" ); animate.apply( this, arguments ); }; assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 1 ); panels.promise().done( function() { assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; ready(); } ); } ); QUnit.test( "{ animate: {} }", function( assert ) { var ready = assert.async(); assert.expect( 7 ); var element = $( "#list1" ).accordion( { animate: {} } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // Called twice (both panels) $.fn.animate = function( props, options ) { assert.equal( options.duration, undefined, "default duration" ); assert.equal( options.easing, undefined, "default easing" ); animate.apply( this, arguments ); }; assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 1 ); panels.promise().done( function() { assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; ready(); } ); } ); QUnit.test( "{ animate: { duration, easing } }", function( assert ) { var ready = assert.async(); assert.expect( 7 ); var element = $( "#list1" ).accordion( { animate: { duration: 100, easing: "linear" } } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // Called twice (both panels) $.fn.animate = function( props, options ) { assert.equal( options.duration, 100, "correct duration" ); assert.equal( options.easing, "linear", "correct easing" ); animate.apply( this, arguments ); }; assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 1 ); panels.promise().done( function() { assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; ready(); } ); } ); QUnit.test( "{ animate: { duration, easing } }, animate down", function( assert ) { var ready = assert.async(); assert.expect( 7 ); var element = $( "#list1" ).accordion( { active: 1, animate: { duration: 100, easing: "linear" } } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // Called twice (both panels) $.fn.animate = function( props, options ) { assert.equal( options.duration, 100, "correct duration" ); assert.equal( options.easing, "linear", "correct easing" ); animate.apply( this, arguments ); }; assert.ok( panels.eq( 1 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 0 ); panels.promise().done( function() { assert.ok( panels.eq( 1 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 0 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; ready(); } ); } ); QUnit.test( "{ animate: { duration, easing, down } }, animate down", function( assert ) { var ready = assert.async(); assert.expect( 7 ); var element = $( "#list1" ).accordion( { active: 1, animate: { duration: 100, easing: "linear", down: { easing: "swing" } } } ), panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // Called twice (both panels) $.fn.animate = function( props, options ) { assert.equal( options.duration, 100, "correct duration" ); assert.equal( options.easing, "swing", "correct easing" ); animate.apply( this, arguments ); }; assert.ok( panels.eq( 1 ).is( ":visible" ), "first panel visible" ); element.accordion( "option", "active", 0 ); panels.promise().done( function() { assert.ok( panels.eq( 1 ).is( ":hidden" ), "first panel hidden" ); assert.ok( panels.eq( 0 ).is( ":visible" ), "second panel visible" ); $.fn.animate = animate; ready(); } ); } ); QUnit.test( "{ collapsible: false }", function( assert ) { assert.expect( 4 ); var element = $( "#list1" ).accordion( { active: 1 } ); element.accordion( "option", "active", false ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); } ); QUnit.test( "{ collapsible: true }", function( assert ) { assert.expect( 6 ); var element = $( "#list1" ).accordion( { active: 1, collapsible: true } ); element.accordion( "option", "active", false ); assert.equal( element.accordion( "option", "active" ), false ); state( assert, element, 0, 0, 0 ); element.accordion( "option", "active", 1 ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" ); assert.equal( element.accordion( "option", "active" ), false ); state( assert, element, 0, 0, 0 ); } ); QUnit.test( "{ event: null }", function( assert ) { assert.expect( 5 ); var element = $( "#list1" ).accordion( { event: null } ); state( assert, element, 1, 0, 0 ); element.accordion( "option", "active", 1 ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); // Ensure default click handler isn't bound element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); } ); QUnit.test( "{ event: custom }", function( assert ) { assert.expect( 11 ); var element = $( "#list1" ).accordion( { event: "custom1 custom2" } ); state( assert, element, 1, 0, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); // Ensure default click handler isn't bound element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "custom2" ); assert.equal( element.accordion( "option", "active" ), 2 ); state( assert, element, 0, 0, 1 ); element.accordion( "option", "event", "custom3" ); // Ensure old event handlers are unbound element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom2" ); assert.equal( element.accordion( "option", "active" ), 2 ); state( assert, element, 0, 0, 1 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom3" ); assert.equal( element.accordion( "option", "active" ), 1 ); state( assert, element, 0, 1, 0 ); } ); QUnit.test( "{ header: default }", function( assert ) { assert.expect( 2 ); // Default: > li > :first-child,> :not(li):even // > :not(li):even state( assert, $( "#list1" ).accordion(), 1, 0, 0 ); // > li > :first-child state( assert, $( "#navigation" ).accordion(), 1, 0, 0 ); } ); QUnit.test( "{ header: custom }", function( assert ) { assert.expect( 6 ); var element = $( "#navigationWrapper" ).accordion( { header: "h2" } ); element.find( "h2" ).each( function() { assert.hasClasses( this, "ui-accordion-header" ); } ); assert.equal( element.find( ".ui-accordion-header" ).length, 3 ); state( assert, element, 1, 0, 0 ); element.accordion( "option", "active", 2 ); state( assert, element, 0, 0, 1 ); } ); QUnit.test( "{ heightStyle: 'auto' }", function( assert ) { assert.expect( 3 ); var element = $( "#navigation" ).accordion( { heightStyle: "auto" } ); equalHeight( assert, element, 105 ); } ); QUnit.test( "{ heightStyle: 'content' }", function( assert ) { assert.expect( 3 ); var element = $( "#navigation" ).accordion( { heightStyle: "content" } ), sizes = element.find( ".ui-accordion-content" ).map( function() { return $( this ).height(); } ).get(); assert.equal( sizes[ 0 ], 75 ); assert.equal( sizes[ 1 ], 105 ); assert.equal( sizes[ 2 ], 45 ); } ); QUnit.test( "{ heightStyle: 'fill' }", function( assert ) { assert.expect( 3 ); $( "#navigationWrapper" ).height( 500 ); var element = $( "#navigation" ).accordion( { heightStyle: "fill" } ); equalHeight( assert, element, 455 ); } ); QUnit.test( "{ heightStyle: 'fill' } with sibling", function( assert ) { assert.expect( 3 ); $( "#navigationWrapper" ).height( 500 ); $( "

    Lorem Ipsum

    " ) .css( { height: 50, marginTop: 20, marginBottom: 30 } ) .prependTo( "#navigationWrapper" ); var element = $( "#navigation" ).accordion( { heightStyle: "fill" } ); equalHeight( assert, element, 355 ); } ); QUnit.test( "{ heightStyle: 'fill' } with multiple siblings", function( assert ) { assert.expect( 3 ); $( "#navigationWrapper" ).height( 500 ); $( "

    Lorem Ipsum

    " ) .css( { height: 50, marginTop: 20, marginBottom: 30 } ) .prependTo( "#navigationWrapper" ); $( "

    Lorem Ipsum

    " ) .css( { height: 50, marginTop: 20, marginBottom: 30, position: "absolute" } ) .prependTo( "#navigationWrapper" ); $( "

    Lorem Ipsum

    " ) .css( { height: 25, marginTop: 10, marginBottom: 15 } ) .prependTo( "#navigationWrapper" ); var element = $( "#navigation" ).accordion( { heightStyle: "fill" } ); equalHeight( assert, element, 305 ); } ); QUnit.test( "{ icons: false }", function( assert ) { assert.expect( 8 ); var element = $( "#list1" ); function icons( on ) { assert.deepEqual( element.find( "span.ui-icon" ).length, on ? 3 : 0 ); assert.deepEqual( element.find( ".ui-accordion-header.ui-accordion-icons" ).length, on ? 3 : 0 ); } element.accordion(); icons( true ); element.accordion( "destroy" ).accordion( { icons: false } ); icons( false ); element.accordion( "option", "icons", { header: "foo", activeHeader: "bar" } ); icons( true ); element.accordion( "option", "icons", false ); icons( false ); } ); QUnit.test( "{ icons: hash }", function( assert ) { assert.expect( 3 ); var element = $( "#list1" ).accordion( { icons: { activeHeader: "a1", header: "h1" } } ); assert.hasClasses( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ), "a1" ); element.accordion( "option", "icons", { activeHeader: "a2", header: "h2" } ); assert.lacksClasses( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ), "a1" ); assert.hasClasses( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ), "a2" ); } ); } ); jquery-ui-1.12.1/tests/unit/all.html000066400000000000000000000032121276627555100173230ustar00rootroot00000000000000 jQuery UI Test Suite
    jquery-ui-1.12.1/tests/unit/autocomplete/000077500000000000000000000000001276627555100203705ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/autocomplete/all.html000066400000000000000000000012121276627555100220220ustar00rootroot00000000000000 jQuery UI Autocomplete Test Suite
    jquery-ui-1.12.1/tests/unit/autocomplete/autocomplete.html000066400000000000000000000013051276627555100237560ustar00rootroot00000000000000 jQuery UI Autocomplete Test Suite
    jquery-ui-1.12.1/tests/unit/autocomplete/common.js000066400000000000000000000011311276627555100222120ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/autocomplete" ], function( common ) { common.testWidget( "autocomplete", { defaults: { appendTo: null, autoFocus: false, classes: {}, delay: 300, disabled: false, messages: { noResults: "No search results.", results: $.ui.autocomplete.prototype.options.messages.results }, minLength: 1, position: { my: "left top", at: "left bottom", collision: "none" }, source: null, // Callbacks change: null, close: null, create: null, focus: null, open: null, response: null, search: null, select: null } } ); } ); jquery-ui-1.12.1/tests/unit/autocomplete/core.js000066400000000000000000000327131276627555100216640ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/autocomplete" ], function( QUnit, $ ) { QUnit.module( "autocomplete: core" ); QUnit.test( "markup structure", function( assert ) { assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete(), menu = element.autocomplete( "widget" ); assert.hasClasses( element, "ui-autocomplete-input" ); assert.hasClasses( menu, "ui-autocomplete ui-widget ui-widget-content" ); } ); QUnit.test( "prevent form submit on enter when menu is active", function( assert ) { assert.expect( 2 ); var event, element = $( "#autocomplete" ) .autocomplete( { source: [ "java", "javascript" ] } ) .val( "ja" ) .autocomplete( "search" ), menu = element.autocomplete( "widget" ); event = $.Event( "keydown" ); event.keyCode = $.ui.keyCode.DOWN; element.trigger( event ); assert.equal( menu.find( ".ui-menu-item-wrapper.ui-state-active" ).length, 1, "menu item is active" ); event = $.Event( "keydown" ); event.keyCode = $.ui.keyCode.ENTER; element.trigger( event ); assert.ok( event.isDefaultPrevented(), "default action is prevented" ); } ); QUnit.test( "allow form submit on enter when menu is not active", function( assert ) { assert.expect( 1 ); var event, element = $( "#autocomplete" ) .autocomplete( { autoFocus: false, source: [ "java", "javascript" ] } ) .val( "ja" ) .autocomplete( "search" ); event = $.Event( "keydown" ); event.keyCode = $.ui.keyCode.ENTER; element.trigger( event ); assert.ok( !event.isDefaultPrevented(), "default action is prevented" ); } ); ( function() { QUnit.test( "up arrow invokes search - input", function( assert ) { arrowsInvokeSearch( assert, "#autocomplete", true, true ); } ); QUnit.test( "down arrow invokes search - input", function( assert ) { arrowsInvokeSearch( assert, "#autocomplete", false, true ); } ); QUnit.test( "up arrow invokes search - textarea", function( assert ) { arrowsInvokeSearch( assert, "#autocomplete-textarea", true, false ); } ); QUnit.test( "down arrow invokes search - textarea", function( assert ) { arrowsInvokeSearch( assert, "#autocomplete-textarea", false, false ); } ); QUnit.test( "up arrow invokes search - contenteditable", function( assert ) { arrowsInvokeSearch( assert, "#autocomplete-contenteditable", true, false ); } ); QUnit.test( "down arrow invokes search - contenteditable", function( assert ) { arrowsInvokeSearch( assert, "#autocomplete-contenteditable", false, false ); } ); QUnit.test( "up arrow moves focus - input", function( assert ) { arrowsMoveFocus( assert, "#autocomplete", true ); } ); QUnit.test( "down arrow moves focus - input", function( assert ) { arrowsMoveFocus( assert, "#autocomplete", false ); } ); QUnit.test( "up arrow moves focus - textarea", function( assert ) { arrowsMoveFocus( assert, "#autocomplete-textarea", true ); } ); QUnit.test( "down arrow moves focus - textarea", function( assert ) { arrowsMoveFocus( assert, "#autocomplete-textarea", false ); } ); QUnit.test( "up arrow moves focus - contenteditable", function( assert ) { arrowsMoveFocus( assert, "#autocomplete-contenteditable", true ); } ); QUnit.test( "down arrow moves focus - contenteditable", function( assert ) { arrowsMoveFocus( assert, "#autocomplete-contenteditable", false ); } ); QUnit.test( "up arrow moves cursor - input", function( assert ) { arrowsNavigateElement( assert, "#autocomplete", true, false ); } ); QUnit.test( "down arrow moves cursor - input", function( assert ) { arrowsNavigateElement( assert, "#autocomplete", false, false ); } ); QUnit.test( "up arrow moves cursor - textarea", function( assert ) { arrowsNavigateElement( assert, "#autocomplete-textarea", true, true ); } ); QUnit.test( "down arrow moves cursor - textarea", function( assert ) { arrowsNavigateElement( assert, "#autocomplete-textarea", false, true ); } ); QUnit.test( "up arrow moves cursor - contenteditable", function( assert ) { arrowsNavigateElement( assert, "#autocomplete-contenteditable", true, true ); } ); QUnit.test( "down arrow moves cursor - contenteditable", function( assert ) { arrowsNavigateElement( assert, "#autocomplete-contenteditable", false, true ); } ); function arrowsInvokeSearch( assert, id, isKeyUp, shouldMove ) { assert.expect( 1 ); var didMove = false, element = $( id ).autocomplete( { source: [ "a" ], delay: 0, minLength: 0 } ); element.autocomplete( "instance" )._move = function() { didMove = true; }; element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } ); assert.equal( didMove, shouldMove, "respond to arrow" ); } function arrowsMoveFocus( assert, id, isKeyUp ) { assert.expect( 1 ); var element = $( id ).autocomplete( { source: [ "a" ], delay: 0, minLength: 0 } ); element.autocomplete( "instance" )._move = function() { assert.ok( true, "repsond to arrow" ); }; element.autocomplete( "search" ); element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } ); } function arrowsNavigateElement( assert, id, isKeyUp, shouldMove ) { assert.expect( 1 ); var didMove = false, element = $( id ).autocomplete( { source: [ "a" ], delay: 0, minLength: 0 } ); element.on( "keypress", function( e ) { didMove = !e.isDefaultPrevented(); } ); element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } ); element.simulate( "keypress" ); assert.equal( didMove, shouldMove, "respond to arrow" ); } } )(); QUnit.test( "past end of menu in multiline autocomplete", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var customVal = "custom value", element = $( "#autocomplete-contenteditable" ).autocomplete( { delay: 0, source: [ "javascript" ], focus: function( event, ui ) { assert.equal( ui.item.value, "javascript", "Item gained focus" ); $( this ).text( customVal ); event.preventDefault(); } } ); element .simulate( "focus" ) .autocomplete( "search", "ja" ); setTimeout( function() { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); assert.equal( element.text(), customVal ); ready(); } ); } ); QUnit.test( "ESCAPE in multiline autocomplete", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var customVal = "custom value", element = $( "#autocomplete-contenteditable" ).autocomplete( { delay: 0, source: [ "javascript" ], focus: function( event, ui ) { assert.equal( ui.item.value, "javascript", "Item gained focus" ); $( this ).text( customVal ); event.preventDefault(); } } ); element .simulate( "focus" ) .autocomplete( "search", "ja" ); setTimeout( function() { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.equal( element.text(), customVal ); ready(); } ); } ); QUnit.test( "handle race condition", function( assert ) { var ready = assert.async(); assert.expect( 3 ); var count = 0, element = $( "#autocomplete" ).autocomplete( { source: function( request, response ) { count++; if ( request.term.length === 1 ) { assert.equal( count, 1, "request with 1 character is first" ); setTimeout( function() { response( [ "one" ] ); setTimeout( checkResults ); } ); return; } assert.equal( count, 2, "request with 2 characters is second" ); response( [ "two" ] ); } } ); element.autocomplete( "search", "a" ); element.autocomplete( "search", "ab" ); function checkResults() { assert.equal( element.autocomplete( "widget" ).find( ".ui-menu-item" ).text(), "two", "correct results displayed" ); ready(); } } ); QUnit.test( "simultaneous searches (#9334)", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete( { source: function( request, response ) { setTimeout( function() { response( [ request.term ] ); } ); }, response: function() { assert.ok( true, "response from first instance" ); } } ), element2 = $( "#autocomplete-textarea" ).autocomplete( { source: function( request, response ) { setTimeout( function() { response( [ request.term ] ); } ); }, response: function() { assert.ok( true, "response from second instance" ); ready(); } } ); element.autocomplete( "search", "test" ); element2.autocomplete( "search", "test" ); } ); QUnit.test( "ARIA", function( assert ) { assert.expect( 13 ); var element = $( "#autocomplete" ).autocomplete( { source: [ "java", "javascript" ] } ), liveRegion = element.autocomplete( "instance" ).liveRegion; assert.equal( liveRegion.children().length, 0, "Empty live region on create" ); assert.equal( liveRegion.attr( "aria-live" ), "assertive", "Live region's aria-live attribute must be assertive" ); assert.equal( liveRegion.attr( "aria-relevant" ), "additions", "Live region's aria-relevant attribute must be additions" ); assert.equal( liveRegion.attr( "role" ), "status", "Live region's role attribute must be status" ); element.autocomplete( "search", "j" ); assert.equal( liveRegion.children().first().text(), "2 results are available, use up and down arrow keys to navigate.", "Live region for multiple values" ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); assert.equal( liveRegion.children().filter( ":visible" ).text(), "java", "Live region changed on keydown to announce the highlighted value" ); element.one( "autocompletefocus", function( event ) { event.preventDefault(); } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); assert.equal( liveRegion.children().filter( ":visible" ).text(), "javascript", "Live region updated when default focus is prevented" ); element.autocomplete( "search", "javas" ); assert.equal( liveRegion.children().filter( ":visible" ).text(), "1 result is available, use up and down arrow keys to navigate.", "Live region for one value" ); element.autocomplete( "search", "z" ); assert.equal( liveRegion.children().filter( ":visible" ).text(), "No search results.", "Live region for no values" ); assert.equal( liveRegion.children().length, 5, "Should be five children in the live region after the above" ); assert.equal( liveRegion.children().filter( ":visible" ).length, 1, "Only one should be still visible" ); assert.ok( liveRegion.children().filter( ":visible" )[ 0 ] === liveRegion.children().last()[ 0 ], "The last one should be the visible one" ); element.autocomplete( "destroy" ); assert.equal( liveRegion.parent().length, 0, "The liveRegion should be detached after destroy" ); } ); QUnit.test( "ARIA, aria-label announcement", function( assert ) { assert.expect( 1 ); $.widget( "custom.catcomplete", $.ui.autocomplete, { _renderMenu: function( ul, items ) { var that = this; $.each( items, function( index, item ) { that._renderItemData( ul, item ) .attr( "aria-label", item.category + " : " + item.label ); } ); } } ); var element = $( "#autocomplete" ).catcomplete( { source: [ { label: "anders andersson", category: "People" } ] } ), liveRegion = element.catcomplete( "instance" ).liveRegion; element.catcomplete( "search", "a" ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); assert.equal( liveRegion.children().filter( ":visible" ).text(), "People : anders andersson", "Live region changed on keydown to announce the highlighted value's aria-label attribute" ); } ); QUnit.test( "ARIA, init on detached input", function( assert ) { assert.expect( 1 ); var element = $( "" ).autocomplete( { source: [ "java", "javascript" ] } ), liveRegion = element.autocomplete( "instance" ).liveRegion; assert.equal( liveRegion.parent().length, 1, "liveRegion must have a parent" ); } ); QUnit.test( ".replaceWith() (#9172)", function( assert ) { assert.expect( 1 ); var element = $( "#autocomplete" ).autocomplete(), replacement = "
    test
    ", parent = element.parent(); element.replaceWith( replacement ); assert.equal( parent.html().toLowerCase(), replacement ); } ); QUnit.test( "Search if the user retypes the same value (#7434)", function( assert ) { var ready = assert.async(); assert.expect( 3 ); var element = $( "#autocomplete" ).autocomplete( { source: [ "java", "javascript" ], delay: 0 } ), menu = element.autocomplete( "instance" ).menu.element; element.val( "j" ).simulate( "keydown" ); setTimeout( function() { assert.ok( menu.is( ":visible" ), "menu displays initially" ); element.trigger( "blur" ); assert.ok( !menu.is( ":visible" ), "menu hidden after blur" ); element.val( "j" ).simulate( "keydown" ); setTimeout( function() { assert.ok( menu.is( ":visible" ), "menu displays after typing the same value" ); ready(); } ); } ); } ); QUnit.test( "Close on click outside when focus remains", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete( { source: [ "java", "javascript" ], delay: 0 } ); var menu = element.autocomplete( "widget" ); $( "body" ).on( "mousedown", function( event ) { event.preventDefault(); } ); element.val( "j" ).autocomplete( "search", "j" ); setTimeout( function() { assert.ok( menu.is( ":visible" ), "menu displays initially" ); $( "body" ).simulate( "mousedown" ); setTimeout( function() { assert.ok( menu.is( ":hidden" ), "menu closes after clicking elsewhere" ); ready(); } ); } ); } ); } ); jquery-ui-1.12.1/tests/unit/autocomplete/events.js000066400000000000000000000126711276627555100222410ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/autocomplete" ], function( QUnit, $ ) { QUnit.module( "autocomplete: events" ); var data = [ "Clojure", "COBOL", "ColdFusion", "Java", "JavaScript", "Scala", "Scheme" ]; $.each( [ { type: "input", selector: "#autocomplete", valueMethod: "val" }, { type: "textarea", selector: "#autocomplete-textarea", valueMethod: "val" }, { type: "contenteditable", selector: "#autocomplete-contenteditable", valueMethod: "text" } ], function( i, settings ) { QUnit.test( "all events - " + settings.type, function( assert ) { var ready = assert.async(); assert.expect( 13 ); var element = $( settings.selector ) .autocomplete( { autoFocus: false, delay: 0, source: data, search: function( event ) { assert.equal( event.originalEvent.type, "keydown", "search originalEvent" ); }, response: function( event, ui ) { assert.deepEqual( ui.content, [ { label: "Clojure", value: "Clojure" }, { label: "Java", value: "Java" }, { label: "JavaScript", value: "JavaScript" } ], "response ui.content" ); ui.content.splice( 0, 1 ); }, open: function() { assert.ok( menu.is( ":visible" ), "menu open on open" ); }, focus: function( event, ui ) { assert.equal( event.originalEvent.type, "menufocus", "focus originalEvent" ); assert.deepEqual( ui.item, { label: "Java", value: "Java" }, "focus ui.item" ); }, close: function( event ) { assert.equal( event.originalEvent.type, "menuselect", "close originalEvent" ); assert.ok( menu.is( ":hidden" ), "menu closed on close" ); }, select: function( event, ui ) { assert.equal( event.originalEvent.type, "menuselect", "select originalEvent" ); assert.deepEqual( ui.item, { label: "Java", value: "Java" }, "select ui.item" ); }, change: function( event, ui ) { assert.equal( event.originalEvent.type, "blur", "change originalEvent" ); assert.deepEqual( ui.item, { label: "Java", value: "Java" }, "change ui.item" ); assert.ok( menu.is( ":hidden" ), "menu closed on change" ); ready(); } } ), menu = element.autocomplete( "widget" ); element.simulate( "focus" )[ settings.valueMethod ]( "j" ).trigger( "keydown" ); setTimeout( function() { assert.ok( menu.is( ":visible" ), "menu is visible after delay" ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); // Blur must be async for IE to handle it properly setTimeout( function() { element.simulate( "blur" ); } ); } ); } ); } ); QUnit.test( "change without selection", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var element = $( "#autocomplete" ).autocomplete( { delay: 0, source: data, change: function( event, ui ) { assert.strictEqual( ui.item, null ); ready(); } } ); element.triggerHandler( "focus" ); element.val( "ja" ).triggerHandler( "blur" ); } ); QUnit.test( "cancel search", function( assert ) { var ready = assert.async(); assert.expect( 6 ); var first = true, element = $( "#autocomplete" ).autocomplete( { delay: 0, source: data, search: function() { if ( first ) { assert.equal( element.val(), "ja", "val on first search" ); first = false; return false; } assert.equal( element.val(), "java", "val on second search" ); }, open: function() { assert.ok( true, "menu opened" ); } } ), menu = element.autocomplete( "widget" ); element.val( "ja" ).trigger( "keydown" ); setTimeout( function() { assert.ok( menu.is( ":hidden" ), "menu is hidden after first search" ); element.val( "java" ).trigger( "keydown" ); setTimeout( function() { assert.ok( menu.is( ":visible" ), "menu is visible after second search" ); assert.equal( menu.find( ".ui-menu-item" ).length, 2, "# of menu items" ); ready(); } ); } ); } ); QUnit.test( "cancel focus", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var customVal = "custom value", element = $( "#autocomplete" ).autocomplete( { delay: 0, source: data, focus: function() { $( this ).val( customVal ); return false; } } ); element.val( "ja" ).trigger( "keydown" ); setTimeout( function() { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); assert.equal( element.val(), customVal ); ready(); } ); } ); QUnit.test( "cancel select", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var customVal = "custom value", element = $( "#autocomplete" ).autocomplete( { delay: 0, source: data, select: function() { $( this ).val( customVal ); return false; } } ); element.val( "ja" ).trigger( "keydown" ); setTimeout( function() { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( element.val(), customVal ); ready(); } ); } ); QUnit.test( "blur during remote search", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var ac = $( "#autocomplete" ).autocomplete( { delay: 0, source: function( request, response ) { assert.ok( true, "trigger request" ); ac.simulate( "blur" ); setTimeout( function() { response( [ "result" ] ); ready(); }, 25 ); }, open: function() { assert.ok( false, "opened after a blur" ); } } ); ac.val( "ro" ).trigger( "keydown" ); } ); } ); jquery-ui-1.12.1/tests/unit/autocomplete/methods.js000066400000000000000000000030771276627555100224000ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/autocomplete" ], function( QUnit, $ ) { QUnit.module( "autocomplete: methods" ); QUnit.test( "destroy", function( assert ) { assert.expect( 1 ); assert.domEqual( "#autocomplete", function() { $( "#autocomplete" ).autocomplete().autocomplete( "destroy" ); } ); } ); QUnit.test( "search, close", function( assert ) { assert.expect( 6 ); var data = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl" ], element = $( "#autocomplete" ).autocomplete( { source: data, minLength: 0 } ), menu = element.autocomplete( "widget" ); assert.ok( menu.is( ":hidden" ), "menu is hidden on init" ); element.autocomplete( "search" ); assert.ok( menu.is( ":visible" ), "menu is visible after search" ); assert.equal( menu.find( ".ui-menu-item" ).length, data.length, "all items for a blank search" ); element.val( "has" ).autocomplete( "search" ); assert.equal( menu.find( ".ui-menu-item" ).text(), "haskell", "only one item for set input value" ); element.autocomplete( "search", "ja" ); assert.equal( menu.find( ".ui-menu-item" ).length, 2, "only java and javascript for 'ja'" ); element.autocomplete( "close" ); assert.ok( menu.is( ":hidden" ), "menu is hidden after close" ); } ); QUnit.test( "widget", function( assert ) { assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete(), widgetElement = element.autocomplete( "widget" ); assert.equal( widgetElement.length, 1, "one element" ); assert.hasClasses( widgetElement, "ui-menu" ); } ); } ); jquery-ui-1.12.1/tests/unit/autocomplete/options.js000066400000000000000000000225251276627555100224270ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/autocomplete" ], function( QUnit, $ ) { QUnit.module( "autocomplete: options" ); var data = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl" ]; QUnit.test( "appendTo: null", function( assert ) { assert.expect( 1 ); var element = $( "#autocomplete" ).autocomplete(); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], document.body, "defaults to body" ); element.autocomplete( "destroy" ); } ); QUnit.test( "appendTo: explicit", function( assert ) { assert.expect( 6 ); var detached = $( "
    " ), element = $( "#autocomplete" ); element.autocomplete( { appendTo: ".autocomplete-wrap" } ); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], $( "#autocomplete-wrap1" )[ 0 ], "first found element" ); assert.equal( $( "#autocomplete-wrap2 .ui-autocomplete" ).length, 0, "only appends to one element" ); element.autocomplete( "destroy" ); element.autocomplete().autocomplete( "option", "appendTo", "#autocomplete-wrap1" ); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], $( "#autocomplete-wrap1" )[ 0 ], "modified after init" ); element.autocomplete( "destroy" ); element.autocomplete( { appendTo: detached } ); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], detached[ 0 ], "detached jQuery object" ); element.autocomplete( "destroy" ); element.autocomplete( { appendTo: detached[ 0 ] } ); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], detached[ 0 ], "detached DOM element" ); element.autocomplete( "destroy" ); element.autocomplete().autocomplete( "option", "appendTo", detached ); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], detached[ 0 ], "detached DOM element via option()" ); element.autocomplete( "destroy" ); } ); QUnit.test( "appendTo: ui-front", function( assert ) { assert.expect( 2 ); var element = $( "#autocomplete" ); $( "#autocomplete-wrap2" ).addClass( "ui-front" ); element.autocomplete(); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], $( "#autocomplete-wrap2" )[ 0 ], "null, inside .ui-front" ); element.autocomplete( "destroy" ); element.autocomplete( { appendTo: $() } ); assert.equal( element.autocomplete( "widget" ).parent()[ 0 ], $( "#autocomplete-wrap2" )[ 0 ], "empty jQuery object, inside .ui-front" ); } ); function autoFocusTest( assert, afValue, focusedLength ) { var ready = assert.async(); var element = $( "#autocomplete" ).autocomplete( { autoFocus: afValue, delay: 0, source: data, open: function() { assert.equal( element.autocomplete( "widget" ) .find( ".ui-menu-item-wrapper.ui-state-active" ) .length, focusedLength, "first item is " + ( afValue ? "" : "not" ) + " auto focused" ); ready(); } } ); element.val( "ja" ).trigger( "keydown" ); } QUnit.test( "autoFocus: false", function( assert ) { assert.expect( 1 ); autoFocusTest( assert, false, 0 ); } ); QUnit.test( "autoFocus: true", function( assert ) { assert.expect( 1 ); autoFocusTest( assert, true, 1 ); } ); QUnit.test( "delay", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete( { source: data, delay: 25 } ), menu = element.autocomplete( "widget" ); element.val( "ja" ).trigger( "keydown" ); assert.ok( menu.is( ":hidden" ), "menu is closed immediately after search" ); setTimeout( function() { assert.ok( menu.is( ":visible" ), "menu is open after delay" ); ready(); }, 50 ); } ); QUnit.test( "disabled", function( assert ) { var ready = assert.async(); assert.expect( 5 ); var element = $( "#autocomplete" ).autocomplete( { source: data, delay: 0 } ), menu = element.autocomplete( "disable" ).autocomplete( "widget" ); element.val( "ja" ).trigger( "keydown" ); assert.ok( menu.is( ":hidden" ) ); assert.lacksClasses( element, "ui-state-disabled" ); assert.hasClasses( menu, "ui-autocomplete-disabled" ); assert.ok( !element.attr( "aria-disabled" ), "element doesn't get aria-disabled" ); setTimeout( function() { assert.ok( menu.is( ":hidden" ) ); ready(); } ); } ); QUnit.test( "minLength", function( assert ) { assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete( { source: data } ), menu = element.autocomplete( "widget" ); element.autocomplete( "search", "" ); assert.ok( menu.is( ":hidden" ), "blank not enough for minLength: 1" ); element.autocomplete( "option", "minLength", 0 ); element.autocomplete( "search", "" ); assert.ok( menu.is( ":visible" ), "blank enough for minLength: 0" ); } ); QUnit.test( "minLength, exceed then drop below", function( assert ) { var ready = assert.async(); assert.expect( 4 ); var element = $( "#autocomplete" ).autocomplete( { minLength: 2, source: function( req, res ) { assert.equal( req.term, "12", "correct search term" ); setTimeout( function() { res( [ "item" ] ); } ); } } ), menu = element.autocomplete( "widget" ); assert.ok( menu.is( ":hidden" ), "menu is hidden before first search" ); element.autocomplete( "search", "12" ); assert.ok( menu.is( ":hidden" ), "menu is hidden before second search" ); element.autocomplete( "search", "1" ); setTimeout( function() { assert.ok( menu.is( ":hidden" ), "menu is hidden after searches" ); ready(); } ); } ); QUnit.test( "minLength, exceed then drop below then exceed", function( assert ) { assert.expect( 3 ); var _res = [], element = $( "#autocomplete" ).autocomplete( { minLength: 2, source: function( req, res ) { _res.push( res ); } } ), menu = element.autocomplete( "widget" ); // Trigger a valid search assert.ok( menu.is( ":hidden" ), "menu is hidden before first search" ); element.autocomplete( "search", "12" ); // Trigger a search below the minLength, to turn on cancelSearch flag assert.ok( menu.is( ":hidden" ), "menu is hidden before second search" ); element.autocomplete( "search", "1" ); // Trigger a valid search element.autocomplete( "search", "13" ); // React as if the first search was cancelled (default ajax behavior) _res[ 0 ]( [] ); // React to second search _res[ 1 ]( [ "13" ] ); assert.ok( menu.is( ":visible" ), "menu is visible after searches" ); } ); QUnit.test( "source, local string array", function( assert ) { assert.expect( 1 ); var element = $( "#autocomplete" ).autocomplete( { source: data } ), menu = element.autocomplete( "widget" ); element.val( "ja" ).autocomplete( "search" ); assert.equal( menu.find( ".ui-menu-item" ).text(), "javajavascript" ); } ); function sourceTest( assert, source, async ) { var ready; var element = $( "#autocomplete" ).autocomplete( { source: source } ), menu = element.autocomplete( "widget" ); function result() { var items = menu.find( ".ui-menu-item" ); assert.equal( items.length, 3, "Should find three results." ); assert.deepEqual( items.eq( 0 ).data( "ui-autocomplete-item" ), { label: "java", value: "java" } ); assert.deepEqual( items.eq( 1 ).data( "ui-autocomplete-item" ), { label: "javascript", value: "javascript" } ); assert.deepEqual( items.eq( 2 ).data( "ui-autocomplete-item" ), { label: "clojure", value: "clojure" } ); element.autocomplete( "destroy" ); if ( async ) { ready(); } } if ( async ) { ready = assert.async(); $( document ).one( "ajaxStop", result ); } element.val( "j" ).autocomplete( "search" ); if ( !async ) { result(); } } QUnit.test( "source, local object array, only labels", function( assert ) { assert.expect( 4 ); sourceTest( assert, [ { label: "java", value: null }, { label: "php", value: null }, { label: "coldfusion", value: "" }, { label: "javascript", value: "" }, { label: "clojure" } ] ); } ); QUnit.test( "source, local object array, only values", function( assert ) { assert.expect( 4 ); sourceTest( assert, [ { value: "java", label: null }, { value: "php", label: null }, { value: "coldfusion", label: "" }, { value: "javascript", label: "" }, { value: "clojure" } ] ); } ); QUnit.test( "source, url string with remote json string array", function( assert ) { assert.expect( 4 ); sourceTest( assert, "remote_string_array.txt", true ); } ); QUnit.test( "source, url string with remote json object array, only value properties", function( assert ) { assert.expect( 4 ); sourceTest( assert, "remote_object_array_values.txt", true ); } ); QUnit.test( "source, url string with remote json object array, only label properties", function( assert ) { assert.expect( 4 ); sourceTest( assert, "remote_object_array_labels.txt", true ); } ); QUnit.test( "source, custom", function( assert ) { assert.expect( 5 ); sourceTest( assert, function( request, response ) { assert.equal( request.term, "j" ); response( [ "java", { label: "javascript", value: null }, { value: "clojure", label: null } ] ); } ); } ); QUnit.test( "source, update after init", function( assert ) { assert.expect( 2 ); var element = $( "#autocomplete" ).autocomplete( { source: [ "java", "javascript", "haskell" ] } ), menu = element.autocomplete( "widget" ); element.val( "ja" ).autocomplete( "search" ); assert.equal( menu.find( ".ui-menu-item" ).text(), "javajavascript" ); element.autocomplete( "option", "source", [ "php", "asp" ] ); element.val( "ph" ).autocomplete( "search" ); assert.equal( menu.find( ".ui-menu-item" ).text(), "php" ); } ); } ); jquery-ui-1.12.1/tests/unit/autocomplete/remote_object_array_labels.txt000066400000000000000000000001521276627555100264700ustar00rootroot00000000000000[ { "label": "java", "value": null }, { "label": "javascript", "value": "" }, { "label": "clojure" } ] jquery-ui-1.12.1/tests/unit/autocomplete/remote_object_array_values.txt000066400000000000000000000001521276627555100265250ustar00rootroot00000000000000[ { "value": "java", "label": null }, { "value": "javascript", "label": "" }, { "value": "clojure" } ] jquery-ui-1.12.1/tests/unit/autocomplete/remote_string_array.txt000066400000000000000000000000441276627555100252060ustar00rootroot00000000000000[ "java", "javascript", "clojure" ] jquery-ui-1.12.1/tests/unit/button/000077500000000000000000000000001276627555100172025ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/button/all.html000066400000000000000000000011761276627555100206450ustar00rootroot00000000000000 jQuery UI Button Test Suite
    jquery-ui-1.12.1/tests/unit/button/button.html000066400000000000000000000013731276627555100214070ustar00rootroot00000000000000 jQuery UI Button Test Suite
    Anchor Button
    jquery-ui-1.12.1/tests/unit/button/common-deprecated.js000066400000000000000000000005641276627555100231330ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/button" ], function( common ) { common.testWidget( "button", { defaults: { classes: { "ui-button": "ui-corner-all" }, disabled: null, icon: null, iconPosition: "beginning", icons: { primary: null, secondary: null }, label: null, showLabel: true, text: true, // Callbacks create: null } } ); } ); jquery-ui-1.12.1/tests/unit/button/common.js000066400000000000000000000004611276627555100210310ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/button" ], function( common ) { common.testWidget( "button", { defaults: { classes: { "ui-button": "ui-corner-all" }, disabled: null, icon: null, iconPosition: "beginning", label: null, showLabel: true, // Callbacks create: null } } ); } ); jquery-ui-1.12.1/tests/unit/button/core.js000066400000000000000000000011171276627555100204700ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/safe-active-element", "ui/widgets/button" ], function( QUnit, $ ) { QUnit.module( "Button: core" ); QUnit.test( "Disabled button loses focus", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var element = $( "#button" ).button(); element.focus(); setTimeout( function() { assert.equal( element[ 0 ], $.ui.safeActiveElement( document ), "Button is focused" ); element.button( "disable" ); assert.notEqual( element[ 0 ], $.ui.safeActiveElement( document ), "Button has had focus removed" ); ready(); } ); } ); } ); jquery-ui-1.12.1/tests/unit/button/deprecated.html000066400000000000000000000051051276627555100221710ustar00rootroot00000000000000 jQuery UI Button Deprecated Test Suite
    Anchor Button
    jquery-ui-1.12.1/tests/unit/button/deprecated.js000066400000000000000000000147461276627555100216540ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/button" ], function( QUnit, $ ) { QUnit.module( "Button (deprecated): core" ); QUnit.test( "Calling button on a checkbox input calls checkboxradio widget", function( assert ) { var checkbox = $( "#checkbox01" ); assert.expect( 2 ); checkbox.button(); assert.ok( !!checkbox.checkboxradio( "instance" ), "Calling button on a checkbox creates checkboxradio instance" ); assert.ok( !checkbox.checkboxradio( "option", "icon" ), "Calling button on a checkbox sets the checkboxradio icon option to false" ); } ); QUnit.test( "Calling buttonset calls controlgroup", function( assert ) { var controlgroup = $( ".buttonset" ); assert.expect( 1 ); controlgroup.buttonset(); assert.ok( controlgroup.is( ":ui-controlgroup" ), "Calling buttonset creates controlgroup instance" ); } ); QUnit.module( "Button (deprecated): methods" ); QUnit.test( "destroy", function( assert ) { assert.expect( 1 ); assert.domEqual( "#checkbox02", function() { $( "#checkbox02" ).button().button( "destroy" ); } ); } ); QUnit.test( "refresh: Ensure disabled state is preserved correctly.", function( assert ) { assert.expect( 5 ); var element = null; element = $( "#checkbox02" ); element.button( { disabled: true } ).button( "refresh" ); assert.ok( element.button( "option", "disabled" ), "Checkboxes should remain disabled after refresh" ); assert.ok( element.prop( "disabled" ), "Input remains disabled after refresh" ); element = $( "#radio02" ); element.button( { disabled: true } ).button( "refresh" ); assert.ok( element.button( "option", "disabled" ), "Radio buttons should remain disabled after refresh" ); element = $( "#checkbox02" ); element.button( { disabled: true } ).prop( "disabled", false ).button( "refresh" ); assert.ok( !element.button( "option", "disabled" ), "Changing a checkbox's disabled property should update the state after refresh." ); element = $( "#radio02" ); element.button( { disabled: true } ).prop( "disabled", false ).button( "refresh" ); assert.ok( !element.button( "option", "disabled" ), "Changing a radio button's disabled property should update the state after refresh." ); } ); QUnit.module( "button (deprecated): options" ); QUnit.test( "Setting items option on buttonset sets the button properties on the items option", function( assert ) { assert.expect( 2 ); var controlgroup = $( ".buttonset" ); controlgroup.buttonset( { items: "bar" } ); assert.equal( controlgroup.controlgroup( "option", "items.button" ), "bar", "items.button set when setting items option on init on buttonset" ); controlgroup.buttonset( "option", "items", "foo" ); assert.equal( controlgroup.controlgroup( "option", "items.button" ), "foo", "items.button set when setting items option on buttonset" ); } ); QUnit.test( "disabled, null", function( assert ) { assert.expect( 2 ); $( "#radio02" ).prop( "disabled", true ).button( { disabled: null } ); assert.deepEqual( $( "#radio02" ).button( "option", "disabled" ), true, "disabled option set to true" ); assert.deepEqual( true, $( "#radio02" ).prop( "disabled" ), "element is not disabled" ); } ); QUnit.test( "text / showLabel options proxied", function( assert ) { assert.expect( 8 ); var button = $( "#button" ); button.button( { text: false, icon: "ui-icon-gear" } ); assert.equal( button.button( "option", "showLabel" ), false, "Setting the text option to false sets the showLabel option to false on init" ); button.button( "option", "showLabel", true ); assert.equal( button.button( "option", "text" ), true, "Setting showLabel true with option method sets text option to true" ); button.button( "option", "text", false ); assert.equal( button.button( "option", "showLabel" ), false, "Setting text false with option method sets showLabel option to false" ); button.button( "option", "text", true ); assert.equal( button.button( "option", "showLabel" ), true, "Setting text true with option method sets showLabel option to true" ); button.button( "option", "showLabel", false ); assert.equal( button.button( "option", "text" ), false, "Setting showLabel false with option method sets text option to false" ); button.button( "destroy" ); button.button( { text: true, icon: "ui-icon-gear" } ); assert.equal( button.button( "option", "showLabel" ), true, "Setting the text option to true sets the showLabel option to true on init" ); button.button( "destroy" ); button.button( { showLabel: true, icon: "ui-icon-gear" } ); assert.equal( button.button( "option", "text" ), true, "Setting the showLabel option to true sets the text option to true on init" ); button.button( "destroy" ); button.button( { showLabel: false, icon: "ui-icon-gear" } ); assert.equal( button.button( "option", "text" ), false, "Setting the showLabel option to false sets the text option to false on init" ); } ); QUnit.test( "icon / icons options properly proxied", function( assert ) { assert.expect( 10 ); var button = $( "#button" ); button.button( { icon: "foo" } ); assert.equal( button.button( "option", "icons.primary" ), "foo", "Icon option properly proxied on init" ); button.button( { icon: "bar" } ); assert.equal( button.button( "option", "icons.primary" ), "bar", "Icon option properly proxied with option method" ); button.button( { icons: { primary: "foo" } } ); assert.equal( button.button( "option", "icon" ), "foo", "Icons primary option properly proxied with option method" ); assert.equal( button.button( "option", "iconPosition" ), "beginning", "Icons primary option sets iconPosition option to beginning" ); button.button( { icons: { secondary: "bar" } } ); assert.equal( button.button( "option", "icon" ), "bar", "Icons secondary option properly proxied with option method" ); assert.equal( button.button( "option", "iconPosition" ), "end", "Icons secondary option sets iconPosition option to end" ); button.button( "destroy" ); button.button( { icons: { primary: "foo" } } ); assert.equal( button.button( "option", "icon" ), "foo", "Icons primary option properly proxied on init" ); assert.equal( button.button( "option", "iconPosition" ), "beginning", "Icons primary option sets iconPosition option to beginning on init" ); button.button( { icons: { secondary: "bar" } } ); assert.equal( button.button( "option", "icon" ), "bar", "Icons secondary option properly proxied on init" ); assert.equal( button.button( "option", "iconPosition" ), "end", "Icons secondary option sets iconPosition option to end on init" ); } ); } ); jquery-ui-1.12.1/tests/unit/button/events.js000066400000000000000000000010261276627555100210430ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/button" ], function( QUnit, $ ) { QUnit.module( "Button: events" ); QUnit.test( "Anchor recieves click event when spacebar is pressed", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var element = $( "#anchor-button" ).button(); element.on( "click", function( event ) { event.preventDefault(); assert.ok( true, "click occcured as a result of spacebar" ); ready(); } ); element.trigger( $.Event( "keyup", { keyCode: $.ui.keyCode.SPACE } ) ); } ); } ); jquery-ui-1.12.1/tests/unit/button/methods.js000066400000000000000000000020651276627555100212060ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/button" ], function( QUnit, $ ) { QUnit.module( "Button: methods" ); QUnit.test( "destroy", function( assert ) { assert.expect( 1 ); assert.domEqual( "#button", function() { $( "#button" ).button().button( "destroy" ); } ); } ); QUnit.test( "refresh: Ensure disabled state is preserved correctly.", function( assert ) { assert.expect( 3 ); var element = $( "" ); element.button( { disabled: true } ).button( "refresh" ); assert.ok( element.button( "option", "disabled" ), "Anchor button should remain disabled after refresh" ); element = $( "" ); element.button( { disabled: true } ).button( "refresh" ); assert.ok( element.button( "option", "disabled" ), "" ); element.button( { disabled: true } ).prop( "disabled", false ).button( "refresh" ); assert.ok( !element.button( "option", "disabled" ), "Changing a
    jquery-ui-1.12.1/tests/unit/controlgroup/core.js000066400000000000000000000166051276627555100217220ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/controlgroup", "ui/widgets/checkboxradio", "ui/widgets/selectmenu", "ui/widgets/button", "ui/widgets/spinner" ], function( QUnit, $ ) { QUnit.module( "Controlgroup: Core" ); QUnit.test( "selectmenu: open/close corners", function( assert ) { assert.expect( 12 ); var element = $( ".controlgroup" ).controlgroup(), selects = element.find( "select" ), selectButton = selects.eq( 0 ).selectmenu( "widget" ); selects.eq( 0 ).selectmenu( "open" ); assert.hasClasses( selectButton, "ui-corner-tl", "Horizontal: First selectmenu gets ui-corner-tl when opened" ); selects.eq( 0 ).selectmenu( "close" ); assert.hasClasses( selectButton, "ui-corner-left", "Horizontal: First selectmenu gets ui-corner-left when closed" ); selectButton = selects.eq( 1 ).selectmenu( "widget" ); selects.eq( 1 ).selectmenu( "open" ); assert.lacksClassStart( selectButton, "ui-corner" ); selects.eq( 1 ).selectmenu( "close" ); assert.lacksClassStart( selectButton, "ui-corner" ); selectButton = selects.eq( 2 ).selectmenu( "widget" ); selects.eq( 2 ).selectmenu( "open" ); assert.hasClasses( selectButton, "ui-corner-tr", "Horizontal: Last selectmenu gets ui-corner-tr when opened" ); selects.eq( 2 ).selectmenu( "close" ); assert.hasClasses( selectButton, "ui-corner-right", "Horizontal: Last selectmenu gets ui-corner-right when closed" ); element.controlgroup( "option", "direction", "vertical" ); selectButton = selects.eq( 0 ).selectmenu( "widget" ); selects.eq( 0 ).selectmenu( "open" ); assert.hasClasses( selectButton, "ui-corner-top", "vertical: First selectmenu gets ui-corner-top when opened" ); selects.eq( 0 ).selectmenu( "close" ); assert.hasClasses( selectButton, "ui-corner-top", "vertical: First selectmenu gets ui-corner-top when closed" ); selectButton = selects.eq( 1 ).selectmenu( "widget" ); selects.eq( 1 ).selectmenu( "open" ); assert.lacksClassStart( selectButton, "ui-corner" ); selects.eq( 1 ).selectmenu( "close" ); assert.lacksClassStart( selectButton, "ui-corner" ); selectButton = selects.eq( 2 ).selectmenu( "widget" ); selects.eq( 2 ).selectmenu( "open" ); assert.lacksClassStart( selectButton, "ui-corner" ); selects.eq( 2 ).selectmenu( "close" ); assert.hasClasses( selectButton, "ui-corner-bottom", "vertical: Last selectmenu gets ui-corner-bottom when closed" ); } ); QUnit.test( "selectmenu: controlgroupLabel", function( assert ) { assert.expect( 2 ); var element = $( ".controlgroup" ).controlgroup(); var label = element.find( ".ui-controlgroup-label" ); assert.hasClasses( label, "ui-widget ui-widget-content ui-state-default ui-controlgroup-item" ); assert.hasClasses( label.find( "span" ), "ui-controlgroup-label-contents" ); } ); var assertSanatized = function( assert, initClasses, expectedClasses, message ) { var selectmenu = $( "#select-sanatize" ).selectmenu( { classes: { "ui-selectmenu-button-open": initClasses } } ).selectmenu( "instance" ); var classes = { "ui-selectmenu-button-open": "ui-corner-top" }; var result = $.ui.controlgroup.prototype._resolveClassesValues( classes, selectmenu ); assert.deepEqual( result, { "ui-selectmenu-button-open": expectedClasses + " ui-corner-top" }, message ); }; QUnit.test( "_resolveClassesValues", function( assert ) { assert.expect( 6 ); assertSanatized( assert, "bar ui-corner-bottom", "bar", "Single corner class removed end" ); assertSanatized( assert, "ui-corner-bottom bar", "bar", "Single corner class removed beginning" ); assertSanatized( assert, "bar ui-corner-bottom ui-corner-left", "bar", "Multiple corner classes removed end" ); assertSanatized( assert, "ui-corner-bottom ui-corner-left bar", "bar", "Multiple corner classes removed beginning" ); assertSanatized( assert, "bar ui-corner-bottom ui-corner-left foo", "bar foo", "Multiple corner class removed middle" ); assertSanatized( assert, "bar", "bar", "No corner classes" ); } ); QUnit.test( "Single controlgroup select - horizontal", function( assert ) { assert.expect( 4 ); var group = $( ".controlgroup-single-select" ).controlgroup(); var select = group.find( ".ui-selectmenu-button" ); assert.hasClasses( select, "ui-corner-all" ); assert.lacksClasses( select, "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); group.find( "select" ).selectmenu( "open" ); assert.hasClasses( select, "ui-corner-top" ); assert.lacksClasses( select, "ui-corner-left ui-corner-right ui-corner-all ui-corner-left" + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); } ); QUnit.test( "Single controlgroup select - vertical", function( assert ) { assert.expect( 4 ); var group = $( ".controlgroup-single-select" ).controlgroup( { direction: "verticle" } ); var select = group.find( ".ui-selectmenu-button" ); assert.hasClasses( select, "ui-corner-all" ); assert.lacksClasses( select, "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); group.find( "select" ).selectmenu( "open" ); assert.hasClasses( select, "ui-corner-top" ); assert.lacksClasses( select, "ui-corner-left ui-corner-right ui-corner-all ui-corner-left" + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); } ); QUnit.test( "Single controlgroup button - horizontal", function( assert ) { assert.expect( 2 ); var group = $( ".controlgroup-single-button" ).controlgroup(); var button = group.find( "button" ); assert.hasClasses( button, "ui-corner-all" ); assert.lacksClasses( button, "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); } ); QUnit.test( "Single controlgroup button - vertical", function( assert ) { assert.expect( 2 ); var group = $( ".controlgroup-single-button" ).controlgroup( { direction: "verticle" } ); var button = group.find( "button" ); assert.hasClasses( button, "ui-corner-all" ); assert.lacksClasses( button, "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); } ); QUnit.module( "Controlgroup: Non-empty class key", { setup: function() { this.classKey = $.ui.selectmenu.prototype.options.classes[ "ui-selectmenu-button-closed" ]; $.ui.selectmenu.prototype.options.classes[ "ui-selectmenu-button-closed" ] = "something-custom"; }, teardown: function() { $.ui.selectmenu.prototype.options.classes[ "ui-selectmenu-button-closed" ] = this.classKey; } } ); QUnit.test( "Controlgroup instantiates child widgets with correct options", function( assert ) { assert.expect( 1 ); $( ".controlgroup-class-key-init" ).controlgroup(); assert.hasClasses( $( "#class-key-init-child" ).next(), "something-custom" ); } ); QUnit.test( "Controlgroup correctly assigns child widget classes options key", function( assert ) { assert.expect( 2 ); $( ".controlgroup-class-key-dupe" ).controlgroup(); assert.strictEqual( ( $( "#class-key-dupe-first" ) .selectmenu( "option", "classes.ui-selectmenu-button-closed" ) .match( /something-custom/g ) || [] ).length, 1, "Class 'something-custom' appears exactly once in the first widget's class key value" ); assert.strictEqual( ( $( "#class-key-dupe-second" ) .selectmenu( "option", "classes.ui-selectmenu-button-closed" ) .match( /something-custom/g ) || [] ).length, 1, "Class 'something-custom' appears exactly once in the second widget's class key value" ); } ); } ); jquery-ui-1.12.1/tests/unit/controlgroup/methods.js000066400000000000000000000126761276627555100224410ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/controlgroup", "ui/widgets/checkboxradio", "ui/widgets/selectmenu", "ui/widgets/button", "ui/widgets/spinner" ], function( QUnit, $ ) { QUnit.module( "Controlgroup: methods" ); QUnit.test( "destroy", function( assert ) { assert.expect( 1 ); assert.domEqual( ".controlgroup", function() { $( ".controlgroup" ).controlgroup().controlgroup( "destroy" ); $( "#spinner" ).addClass( "ui-spinner-input" ); } ); } ); QUnit.test( "disable", function( assert ) { assert.expect( 2 ); var element = $( ".controlgroup" ).controlgroup().controlgroup( "disable" ); assert.lacksClasses( element, "ui-state-disabled", "The widget does not get the disabled class, because we disable each child widget" ); assert.strictEqual( element.find( ".ui-state-disabled" ).length, 9, "Child widgets are disabled" ); } ); QUnit.test( "enable", function( assert ) { assert.expect( 2 ); var element = $( ".controlgroup" ).controlgroup().controlgroup( "enable" ); assert.lacksClasses( element, "ui-state-disabled", "ui-state-disabled is not present on widget after enabling" ); assert.strictEqual( element.find( "ui-state-disabled" ).length, 0, "Child widgets are disabled" ); } ); var tests = { "checkboxradio": "", "selectmenu": "", "button": "", "spinner": "" }, orientations = { "horizontal": [ "ui-corner-left", false, false, "ui-corner-right" ], "vertical": [ "ui-corner-top", false, false, "ui-corner-bottom" ] }; // Iterate through supported element markup $.each( tests, function( widget, html ) { // Check in both horizontal and vertical orientations $.each( orientations, function( name, classes ) { QUnit.test( "refresh: " + widget + ": " + name, function( assert ) { assert.expect( 41 ); var i, control, label, currentClasses, controls = [], element = $( "
    " ).controlgroup( { direction: name } ).appendTo( "body" ); // Checks the elements with in the controlgroup against the expected class list function checkCornerClasses( classList ) { for ( var j = 0; j < 4; j++ ) { if ( classList[ j ] ) { assert.hasClasses( controls[ j ][ widget ]( "widget" ), classList[ j ] ); } else { assert.lacksClassStart( controls[ j ][ widget ]( "widget" ), "ui-corner" ); } } } function showElements( index, value ) { $( value )[ widget ]( "widget" ).show(); } // Hide each element and check the corner classes function iterateHidden( onlyVisible ) { for ( i = 0; i < 4; i++ ) { $( controls ).each( showElements ); controls[ i ][ widget ]( "widget" ).hide(); currentClasses = classes.slice( 0 ); if ( onlyVisible ) { if ( i === 0 ) { currentClasses[ i + 1 ] = classes[ i ]; currentClasses[ i ] = false; } else if ( i === 3 ) { currentClasses[ i - 1 ] = classes[ i ]; currentClasses[ i ] = false; } } element.controlgroup( "refresh" ); checkCornerClasses( currentClasses ); } } // Add a label for each element and then append the element to the control group for ( i = 0; i < 4; i++ ) { control = $( html ).attr( "id", "id" + i ); label = $( "" ).attr( "for", "id" + i ); controls.push( control ); element.append( control, label ); } // Refresh the controlgroup now that its populated element.controlgroup( "refresh" ); for ( i = 0; i < 4; i++ ) { assert.strictEqual( controls[ i ].is( ":ui-" + widget ), true, name + ": " + widget + " " + i + ": is a " + widget + " widget" ); } // Check that we have the right classes checkCornerClasses( classes ); // Hide each element and then check its classes iterateHidden( true ); // Set the exclude option to false so we no longer care about hidden element.controlgroup( "option", "onlyVisible", false ); // Iterate hiding the elements again and check their corner classes iterateHidden(); // Disable the first control if ( widget === "spinner" ) { controls[ 0 ].spinner( "disable" ); } controls[ 0 ].prop( "disabled", true ); element.controlgroup( "refresh" ); assert.hasClasses( controls[ 0 ][ widget ]( "widget" ), "ui-state-disabled" ); // Remove the controlgroup before we start the next set element.remove(); } ); } ); } ); QUnit.test( "Child Classes Option: init", function( assert ) { assert.expect( 1 ); var selectmenu = $( "#select-pre" ).selectmenu( { classes: { "ui-selectmenu-button-closed": "test-class" } } ); $( ".controlgroup-pre" ).controlgroup(); assert.hasClasses( selectmenu.selectmenu( "widget" ), "test-class" ); } ); QUnit.test( "Child Classes Option: refresh", function( assert ) { assert.expect( 1 ); var controlgroup = $( ".controlgroup-refresh" ).controlgroup(); var selectmenu = $( "#select-refresh" ).selectmenu( { classes: { "ui-selectmenu-button-closed": "test-class" } } ); controlgroup.controlgroup( "refresh" ); assert.hasClasses( selectmenu.selectmenu( "widget" ), "test-class" ); } ); QUnit.test( "Controlgroup Label: refresh", function( assert ) { assert.expect( 1 ); var controlgroup = $( ".controlgroup-refresh" ).controlgroup(); controlgroup.controlgroup( "refresh" ); assert.strictEqual( controlgroup.find( ".ui-controlgroup-label-contents" ).length, 1, "Controlgroup label does not re-wrap on refresh" ); } ); } ); jquery-ui-1.12.1/tests/unit/controlgroup/options.js000066400000000000000000000065651276627555100224710ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/controlgroup", "ui/widgets/checkboxradio", "ui/widgets/selectmenu", "ui/widgets/button", "ui/widgets/spinner" ], function( QUnit, $ ) { QUnit.module( "Controlgroup: options" ); QUnit.test( "disabled", function( assert ) { assert.expect( 4 ); var element = $( ".controlgroup" ).controlgroup().controlgroup( "option", "disabled", true ); assert.lacksClasses( element, "ui-state-disabled" ); assert.equal( element.find( ".ui-state-disabled" ).length, 9, "Child widgets are disabled" ); element.controlgroup( "option", "disabled", false ); assert.lacksClasses( element, "ui-state-disabled" ); assert.strictEqual( element.find( ".ui-state-disabled" ).length, 0, "Child widgets are not disabled" ); } ); QUnit.test( "items - null", function( assert ) { assert.expect( 2 ); var element = $( ".controlgroup" ).controlgroup( { items: { "button": null, "selectmenu": null, "checkboxradio": null } } ); assert.strictEqual( element.children( ".ui-button" ).length, 0, "Child widgets are not called when selector is null" ); element.controlgroup( "option", "items", { "button": "button" } ); assert.strictEqual( element.children( ".ui-button" ).length, 2, "Correct child widgets are called when selector is updated" ); } ); QUnit.test( "items: custom selector", function( assert ) { assert.expect( 1 ); var element = $( ".controlgroup" ).controlgroup( { items: { "button": ".button" } } ); assert.strictEqual( element.children( ".ui-button" ).length, 4, "Correct child widgets are called when custom selector used" ); } ); $.widget( "ui.test", { _create: function() { this.element.addClass( "ui-test ui-button" ); }, // Controlgroup requires a refresh method to exist refresh: $.noop } ); QUnit.test( "items: custom widget", function( assert ) { assert.expect( 2 ); var element = $( ".controlgroup" ).controlgroup( { items: { "test": ".test" } } ); assert.strictEqual( element.children( ".ui-button" ).length, 7, "Correct child widgets are called when custom selector used" ); assert.strictEqual( element.children( ".ui-test" ).length, 1, "Custom widget called" ); } ); QUnit.test( "onlyVisible", function( assert ) { assert.expect( 4 ); var element = $( ".controlgroup" ).controlgroup( { onlyVisible: false } ), buttons = element.children( ".ui-button" ); assert.lacksClassStart( buttons.eq( 1 ), "ui-corner" ); assert.hasClasses( buttons.eq( 0 ), "ui-corner-left", "onlyVisible: false: First button hidden second button doesn't get a corner class" ); element.controlgroup( "option", "onlyVisible", true ); assert.lacksClassStart( buttons.eq( 0 ), "ui-corner" ); assert.hasClasses( buttons.eq( 1 ), "ui-corner-left", "onlyVisible: true: First button is hidden second button get corner class" ); } ); QUnit.test( "direction", function( assert ) { assert.expect( 6 ); var element = $( ".controlgroup" ).controlgroup(), buttons = element.children( ".ui-button" ).filter( ":visible" ); assert.hasClasses( element, "ui-controlgroup-horizontal" ); assert.hasClasses( buttons.first(), "ui-corner-left" ); assert.hasClasses( buttons.last(), "ui-corner-right" ); element.controlgroup( "option", "direction", "vertical" ); assert.hasClasses( element, "ui-controlgroup-vertical" ); assert.hasClasses( buttons.first(), "ui-corner-top" ); assert.hasClasses( buttons.last(), "ui-corner-bottom" ); } ); } ); jquery-ui-1.12.1/tests/unit/core/000077500000000000000000000000001276627555100166175ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/core/all.html000066400000000000000000000011721276627555100202560ustar00rootroot00000000000000 jQuery UI Core Test Suite
    jquery-ui-1.12.1/tests/unit/core/core.html000066400000000000000000000151061276627555100204400ustar00rootroot00000000000000 jQuery UI Core Test Suite
    xxx anchor anchor x
    x
    x
    x
    .
    . . . .
    jquery-ui-1.12.1/tests/unit/core/core.js000066400000000000000000000134121276627555100201060ustar00rootroot00000000000000define( [ "qunit", "jquery", "lib/common", "ui/form", "ui/labels", "ui/unique-id" ], function( QUnit, $, common ) { QUnit.module( "core - jQuery extensions" ); common.testJshint( "core" ); QUnit.test( "innerWidth - getter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); assert.equal( el.innerWidth(), 122, "getter passthru" ); el.hide(); assert.equal( el.innerWidth(), 122, "getter passthru when hidden" ); } ); QUnit.test( "innerWidth - setter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); el.innerWidth( 120 ); assert.equal( el.width(), 98, "width set properly" ); el.hide(); el.innerWidth( 100 ); assert.equal( el.width(), 78, "width set properly when hidden" ); } ); QUnit.test( "innerHeight - getter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); assert.equal( el.innerHeight(), 70, "getter passthru" ); el.hide(); assert.equal( el.innerHeight(), 70, "getter passthru when hidden" ); } ); QUnit.test( "innerHeight - setter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); el.innerHeight( 60 ); assert.equal( el.height(), 40, "height set properly" ); el.hide(); el.innerHeight( 50 ); assert.equal( el.height(), 30, "height set properly when hidden" ); } ); QUnit.test( "outerWidth - getter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); assert.equal( el.outerWidth(), 140, "getter passthru" ); el.hide(); assert.equal( el.outerWidth(), 140, "getter passthru when hidden" ); } ); QUnit.test( "outerWidth - setter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); el.outerWidth( 130 ); assert.equal( el.width(), 90, "width set properly" ); el.hide(); el.outerWidth( 120 ); assert.equal( el.width(), 80, "width set properly when hidden" ); } ); QUnit.test( "outerWidth(true) - getter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); assert.equal( el.outerWidth( true ), 154, "getter passthru w/ margin" ); el.hide(); assert.equal( el.outerWidth( true ), 154, "getter passthru w/ margin when hidden" ); } ); QUnit.test( "outerWidth(true) - setter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); el.outerWidth( 130, true ); assert.equal( el.width(), 76, "width set properly" ); el.hide(); el.outerWidth( 120, true ); assert.equal( el.width(), 66, "width set properly when hidden" ); } ); QUnit.test( "outerHeight - getter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); assert.equal( el.outerHeight(), 86, "getter passthru" ); el.hide(); assert.equal( el.outerHeight(), 86, "getter passthru when hidden" ); } ); QUnit.test( "outerHeight - setter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); el.outerHeight( 80 ); assert.equal( el.height(), 44, "height set properly" ); el.hide(); el.outerHeight( 70 ); assert.equal( el.height(), 34, "height set properly when hidden" ); } ); QUnit.test( "outerHeight(true) - getter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); assert.equal( el.outerHeight( true ), 98, "getter passthru w/ margin" ); el.hide(); assert.equal( el.outerHeight( true ), 98, "getter passthru w/ margin when hidden" ); } ); QUnit.test( "outerHeight(true) - setter", function( assert ) { assert.expect( 2 ); var el = $( "#dimensions" ); el.outerHeight( 90, true ); assert.equal( el.height(), 42, "height set properly" ); el.hide(); el.outerHeight( 80, true ); assert.equal( el.height(), 32, "height set properly when hidden" ); } ); QUnit.test( "uniqueId / removeUniqueId", function( assert ) { assert.expect( 3 ); var el = $( "img" ).eq( 0 ); assert.equal( el.attr( "id" ), null, "element has no initial id" ); el.uniqueId(); assert.ok( /ui-id-\d+$/.test( el.attr( "id" ) ), "element has generated id" ); el.removeUniqueId(); assert.equal( el.attr( "id" ), null, "unique id has been removed from element" ); } ); QUnit.test( "Labels", function( assert ) { assert.expect( 2 ); var expected = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ]; var dom = $( "#labels-fragment" ); function testLabels( testType ) { var labels = dom.find( "#test" ).labels(); var found = labels.map( function() { // Support: Core 1.9 Only // We use $.trim() because core 1.9.x silently fails when white space is present return $.trim( $( this ).text() ); } ).get(); assert.deepEqual( found, expected, ".labels() finds all labels in " + testType + ", and sorts them in DOM order" ); } testLabels( "the DOM" ); // Detach the dom to test on a fragment dom.detach(); testLabels( "document fragments" ); } ); ( function() { var domAttached = $( "#form-test" ); var domDetached = $( "#form-test-detached" ).detach(); function testForm( name, dom ) { var inputs = dom.find( "input" ); inputs.each( function() { var input = $( this ); QUnit.test( name + this.id.replace( /_/g, " " ), function( assert ) { var ready = assert.async(); assert.expect( 1 ); var form = input.form(); // If input has a form the value should reset to "" if not it should be "changed" var value = form.length ? "" : "changed"; input.val( "changed" ); // If there is a form we reset just that. If there is not a form, reset every form. // The idea is if a form is found resetting that form should reset the input. // If no form is found no amount of resetting should change the value. ( form.length ? form : dom.find( "form" ).addBack( "form" ) ).each( function() { this.reset(); } ); setTimeout( function() { assert.equal( input.val(), value, "Proper form found for #" + input.attr( "id" ) ); ready(); } ); } ); } ); } testForm( "form: attached: ", domAttached ); testForm( "form: detached: ", domDetached ); } )(); } ); jquery-ui-1.12.1/tests/unit/core/selector.js000066400000000000000000000303521276627555100210000ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/data", "ui/escape-selector", "ui/focusable", "ui/tabbable" ], function( QUnit, $ ) { QUnit.module( "core - selectors" ); QUnit.assert.isFocusable = function( selector, msg ) { this.push( $( selector ).is( ":focusable" ), null, null, msg + " - selector " + selector + " is focusable" ); }; QUnit.assert.isNotFocusable = function( selector, msg ) { this.push( $( selector ).length && !$( selector ).is( ":focusable" ), null, null, msg + " - selector " + selector + " is not focusable" ); }; QUnit.assert.isTabbable = function( selector, msg ) { this.push( $( selector ).is( ":tabbable" ), null, null, msg + " - selector " + selector + " is tabbable" ); }; QUnit.assert.isNotTabbable = function( selector, msg ) { this.push( $( selector ).length && !$( selector ).is( ":tabbable" ), null, null, msg + " - selector " + selector + " is not tabbable" ); }; QUnit.test( "data", function( assert ) { assert.expect( 15 ); var element; function shouldHaveData( msg ) { assert.ok( element.is( ":data(test)" ), msg ); } function shouldNotHaveData( msg ) { assert.ok( !element.is( ":data(test)" ), msg ); } element = $( "
    " ); shouldNotHaveData( "data never set" ); element = $( "
    " ).data( "test", null ); shouldNotHaveData( "data is null" ); element = $( "
    " ).data( "test", true ); shouldHaveData( "data set to true" ); element = $( "
    " ).data( "test", false ); shouldNotHaveData( "data set to false" ); element = $( "
    " ).data( "test", 0 ); shouldNotHaveData( "data set to 0" ); element = $( "
    " ).data( "test", 1 ); shouldHaveData( "data set to 1" ); element = $( "
    " ).data( "test", "" ); shouldNotHaveData( "data set to empty string" ); element = $( "
    " ).data( "test", "foo" ); shouldHaveData( "data set to string" ); element = $( "
    " ).data( "test", [] ); shouldHaveData( "data set to empty array" ); element = $( "
    " ).data( "test", [ 1 ] ); shouldHaveData( "data set to array" ); element = $( "
    " ).data( "test", {} ); shouldHaveData( "data set to empty object" ); element = $( "
    " ).data( "test", { foo: "bar" } ); shouldHaveData( "data set to object" ); element = $( "
    " ).data( "test", new Date() ); shouldHaveData( "data set to date" ); element = $( "
    " ).data( "test", /test/ ); shouldHaveData( "data set to regexp" ); element = $( "
    " ).data( "test", function() {} ); shouldHaveData( "data set to function" ); } ); QUnit.test( "focusable - visible, enabled elements", function( assert ) { assert.expect( 22 ); assert.isNotFocusable( "#formNoTabindex", "form" ); assert.isFocusable( "#formTabindex", "form with tabindex" ); assert.isFocusable( "#enabledFieldset input", "input in enabled fieldset" ); assert.isNotFocusable( "#disabledFieldset input", "input in disabled fieldset" ); assert.isFocusable( "#visibleAncestor-inputTypeNone", "input, no type" ); assert.isFocusable( "#visibleAncestor-inputTypeText", "input, type text" ); assert.isFocusable( "#visibleAncestor-inputTypeCheckbox", "input, type checkbox" ); assert.isFocusable( "#visibleAncestor-inputTypeRadio", "input, type radio" ); assert.isFocusable( "#visibleAncestor-inputTypeButton", "input, type button" ); assert.isNotFocusable( "#visibleAncestor-inputTypeHidden", "input, type hidden" ); assert.isFocusable( "#visibleAncestor-button", "button" ); assert.isFocusable( "#visibleAncestor-select", "select" ); assert.isFocusable( "#visibleAncestor-textarea", "textarea" ); assert.isFocusable( "#visibleAncestor-object", "object" ); assert.isFocusable( "#visibleAncestor-anchorWithHref", "anchor with href" ); assert.isNotFocusable( "#visibleAncestor-anchorWithoutHref", "anchor without href" ); assert.isNotFocusable( "#visibleAncestor-span", "span" ); assert.isNotFocusable( "#visibleAncestor-div", "div" ); assert.isFocusable( "#visibleAncestor-spanWithTabindex", "span with tabindex" ); assert.isFocusable( "#visibleAncestor-divWithNegativeTabindex", "div with tabindex" ); assert.isFocusable( "#nestedVisibilityInheritWithVisibleAncestor", "span, visibility: inherit inside visibility: visible parent" ); assert.isFocusable( "#nestedVisibilityInheritWithVisibleAncestor-input", "input, visibility: inherit inside visibility: visible parent" ); } ); QUnit.test( "focusable - disabled elements", function( assert ) { assert.expect( 9 ); assert.isNotFocusable( "#disabledElement-inputTypeNone", "input, no type" ); assert.isNotFocusable( "#disabledElement-inputTypeText", "input, type text" ); assert.isNotFocusable( "#disabledElement-inputTypeCheckbox", "input, type checkbox" ); assert.isNotFocusable( "#disabledElement-inputTypeRadio", "input, type radio" ); assert.isNotFocusable( "#disabledElement-inputTypeButton", "input, type button" ); assert.isNotFocusable( "#disabledElement-inputTypeHidden", "input, type hidden" ); assert.isNotFocusable( "#disabledElement-button", "button" ); assert.isNotFocusable( "#disabledElement-select", "select" ); assert.isNotFocusable( "#disabledElement-textarea", "textarea" ); } ); QUnit.test( "focusable - hidden styles", function( assert ) { assert.expect( 12 ); assert.isNotFocusable( "#displayNoneAncestor-input", "input, display: none parent" ); assert.isNotFocusable( "#displayNoneAncestor-span", "span with tabindex, display: none parent" ); assert.isNotFocusable( "#visibilityHiddenAncestor-input", "input, visibility: hidden parent" ); assert.isNotFocusable( "#visibilityHiddenAncestor-span", "span with tabindex, visibility: hidden parent" ); assert.isFocusable( "#nestedVisibilityOverrideAncestor-input", "input, visibility: visible parent but visibility: hidden grandparent" ); assert.isFocusable( "#nestedVisibilityOverrideAncestor-span", "span with tabindex, visibility: visible parent but visibility: hidden grandparent " ); assert.isNotFocusable( "#nestedVisibilityInheritWithHiddenAncestor", "span, visibility: inherit inside visibility: hidden parent" ); assert.isNotFocusable( "#nestedVisibilityInheritWithHiddenAncestor-input", "input, visibility: inherit inside visibility: hidden parent" ); assert.isNotFocusable( "#displayNone-input", "input, display: none" ); assert.isNotFocusable( "#visibilityHidden-input", "input, visibility: hidden" ); assert.isNotFocusable( "#displayNone-span", "span with tabindex, display: none" ); assert.isNotFocusable( "#visibilityHidden-span", "span with tabindex, visibility: hidden" ); } ); QUnit.test( "focusable - natively focusable with various tabindex", function( assert ) { assert.expect( 4 ); assert.isFocusable( "#inputTabindex0", "input, tabindex 0" ); assert.isFocusable( "#inputTabindex10", "input, tabindex 10" ); assert.isFocusable( "#inputTabindex-1", "input, tabindex -1" ); assert.isFocusable( "#inputTabindex-50", "input, tabindex -50" ); } ); QUnit.test( "focusable - not natively focusable with various tabindex", function( assert ) { assert.expect( 4 ); assert.isFocusable( "#spanTabindex0", "span, tabindex 0" ); assert.isFocusable( "#spanTabindex10", "span, tabindex 10" ); assert.isFocusable( "#spanTabindex-1", "span, tabindex -1" ); assert.isFocusable( "#spanTabindex-50", "span, tabindex -50" ); } ); QUnit.test( "focusable - area elements", function( assert ) { assert.expect( 3 ); assert.isFocusable( "#areaCoordsHref", "coords and href" ); assert.isFocusable( "#areaNoCoordsHref", "href but no coords" ); assert.isNotFocusable( "#areaNoImg", "not associated with an image" ); } ); QUnit.test( "focusable - dimensionless parent with overflow", function( assert ) { assert.expect( 1 ); assert.isFocusable( "#dimensionlessParent", "input" ); } ); QUnit.test( "tabbable - visible, enabled elements", function( assert ) { assert.expect( 20 ); assert.isNotTabbable( "#formNoTabindex", "form" ); assert.isTabbable( "#formTabindex", "form with tabindex" ); assert.isTabbable( "#enabledFieldset input", "input in enabled fieldset" ); assert.isNotTabbable( "#disabledFieldset input", "input in disabled fieldset" ); assert.isTabbable( "#visibleAncestor-inputTypeNone", "input, no type" ); assert.isTabbable( "#visibleAncestor-inputTypeText", "input, type text" ); assert.isTabbable( "#visibleAncestor-inputTypeCheckbox", "input, type checkbox" ); assert.isTabbable( "#visibleAncestor-inputTypeRadio", "input, type radio" ); assert.isTabbable( "#visibleAncestor-inputTypeButton", "input, type button" ); assert.isNotTabbable( "#visibleAncestor-inputTypeHidden", "input, type hidden" ); assert.isTabbable( "#visibleAncestor-button", "button" ); assert.isTabbable( "#visibleAncestor-select", "select" ); assert.isTabbable( "#visibleAncestor-textarea", "textarea" ); assert.isTabbable( "#visibleAncestor-object", "object" ); assert.isTabbable( "#visibleAncestor-anchorWithHref", "anchor with href" ); assert.isNotTabbable( "#visibleAncestor-anchorWithoutHref", "anchor without href" ); assert.isNotTabbable( "#visibleAncestor-span", "span" ); assert.isNotTabbable( "#visibleAncestor-div", "div" ); assert.isTabbable( "#visibleAncestor-spanWithTabindex", "span with tabindex" ); assert.isNotTabbable( "#visibleAncestor-divWithNegativeTabindex", "div with tabindex" ); } ); QUnit.test( "tabbable - disabled elements", function( assert ) { assert.expect( 9 ); assert.isNotTabbable( "#disabledElement-inputTypeNone", "input, no type" ); assert.isNotTabbable( "#disabledElement-inputTypeText", "input, type text" ); assert.isNotTabbable( "#disabledElement-inputTypeCheckbox", "input, type checkbox" ); assert.isNotTabbable( "#disabledElement-inputTypeRadio", "input, type radio" ); assert.isNotTabbable( "#disabledElement-inputTypeButton", "input, type button" ); assert.isNotTabbable( "#disabledElement-inputTypeHidden", "input, type hidden" ); assert.isNotTabbable( "#disabledElement-button", "button" ); assert.isNotTabbable( "#disabledElement-select", "select" ); assert.isNotTabbable( "#disabledElement-textarea", "textarea" ); } ); QUnit.test( "tabbable - hidden styles", function( assert ) { assert.expect( 10 ); assert.isNotTabbable( "#displayNoneAncestor-input", "input, display: none parent" ); assert.isNotTabbable( "#displayNoneAncestor-span", "span with tabindex, display: none parent" ); assert.isNotTabbable( "#visibilityHiddenAncestor-input", "input, visibility: hidden parent" ); assert.isNotTabbable( "#visibilityHiddenAncestor-span", "span with tabindex, visibility: hidden parent" ); assert.isTabbable( "#nestedVisibilityOverrideAncestor-input", "input, visibility: visible parent but visibility: hidden grandparent" ); assert.isTabbable( "#nestedVisibilityOverrideAncestor-span", "span with tabindex, visibility: visible parent but visibility: hidden grandparent " ); assert.isNotTabbable( "#displayNone-input", "input, display: none" ); assert.isNotTabbable( "#visibilityHidden-input", "input, visibility: hidden" ); assert.isNotTabbable( "#displayNone-span", "span with tabindex, display: none" ); assert.isNotTabbable( "#visibilityHidden-span", "span with tabindex, visibility: hidden" ); } ); QUnit.test( "tabbable - natively tabbable with various tabindex", function( assert ) { assert.expect( 4 ); assert.isTabbable( "#inputTabindex0", "input, tabindex 0" ); assert.isTabbable( "#inputTabindex10", "input, tabindex 10" ); assert.isNotTabbable( "#inputTabindex-1", "input, tabindex -1" ); assert.isNotTabbable( "#inputTabindex-50", "input, tabindex -50" ); } ); QUnit.test( "tabbable - not natively tabbable with various tabindex", function( assert ) { assert.expect( 4 ); assert.isTabbable( "#spanTabindex0", "span, tabindex 0" ); assert.isTabbable( "#spanTabindex10", "span, tabindex 10" ); assert.isNotTabbable( "#spanTabindex-1", "span, tabindex -1" ); assert.isNotTabbable( "#spanTabindex-50", "span, tabindex -50" ); } ); QUnit.test( "tabbable - area elements", function( assert ) { assert.expect( 3 ); assert.isTabbable( "#areaCoordsHref", "coords and href" ); assert.isTabbable( "#areaNoCoordsHref", "href but no coords" ); assert.isNotTabbable( "#areaNoImg", "not associated with an image" ); } ); QUnit.test( "tabbable - dimensionless parent with overflow", function( assert ) { assert.expect( 1 ); assert.isTabbable( "#dimensionlessParent", "input" ); } ); QUnit.test( "escapeSelector", function( assert ) { assert.expect( 1 ); assert.equal( $( "#" + $.ui.escapeSelector( "weird-['x']-id" ) ).length, 1, "properly escapes selectors to use as an id" ); } ); } ); jquery-ui-1.12.1/tests/unit/datepicker/000077500000000000000000000000001276627555100200025ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/datepicker/all.html000066400000000000000000000012061276627555100214370ustar00rootroot00000000000000 jQuery UI Datepicker Test Suite
    jquery-ui-1.12.1/tests/unit/datepicker/common.js000066400000000000000000000001331276627555100216250ustar00rootroot00000000000000/* TestHelpers.commonWidgetTests( "datepicker", { defaults: { disabled: false } }); */ jquery-ui-1.12.1/tests/unit/datepicker/core.js000066400000000000000000000623621276627555100213010ustar00rootroot00000000000000define( [ "qunit", "jquery", "lib/common", "./helper", "ui/widgets/datepicker", "ui/i18n/datepicker-he" ], function( QUnit, $, common, testHelper ) { QUnit.module( "datepicker: core", { beforeEach: function() { $( "body" ).trigger( "focus" ); } } ); common.testJshint( "widgets/datepicker" ); QUnit.test( "initialization - Reinitialization after body had been emptied.", function( assert ) { assert.expect( 1 ); var bodyContent = $( "body" ).children(), inp = $( "#inp" ); $( "#inp" ).datepicker(); $( "body" ).empty().append( inp ); $( "#inp" ).datepicker(); assert.ok( $( "#" + $.datepicker._mainDivId ).length === 1, "Datepicker container added" ); $( "body" ).empty().append( bodyContent ); // Returning to initial state for later tests } ); QUnit.test( "widget method - empty collection", function( assert ) { assert.expect( 1 ); $( "#nonExist" ).datepicker(); // Should create nothing assert.ok( !$( "#ui-datepicker-div" ).length, "Non init on empty collection" ); } ); QUnit.test( "widget method", function( assert ) { assert.expect( 1 ); var actual = $( "#inp" ).datepicker().datepicker( "widget" )[ 0 ]; assert.deepEqual( $( "body > #ui-datepicker-div:last-child" )[ 0 ], actual ); } ); QUnit.test( "baseStructure", function( assert ) { var ready = assert.async(); assert.expect( 58 ); var header, title, table, thead, week, panel, inl, child, inp = testHelper.initNewInput(), dp = $( "#ui-datepicker-div" ); function step1() { testHelper.onFocus( inp, function() { assert.ok( dp.is( ":visible" ), "Structure - datepicker visible" ); assert.ok( !dp.is( ".ui-datepicker-rtl" ), "Structure - not right-to-left" ); assert.ok( !dp.is( ".ui-datepicker-multi" ), "Structure - not multi-month" ); assert.equal( dp.children().length, 2, "Structure - child count" ); header = dp.children( ":first" ); assert.ok( header.is( "div.ui-datepicker-header" ), "Structure - header division" ); assert.equal( header.children().length, 3, "Structure - header child count" ); assert.ok( header.children( ":first" ).is( "a.ui-datepicker-prev" ) && header.children( ":first" ).html() !== "", "Structure - prev link" ); assert.ok( header.children( ":eq(1)" ).is( "a.ui-datepicker-next" ) && header.children( ":eq(1)" ).html() !== "", "Structure - next link" ); title = header.children( ":last" ); assert.ok( title.is( "div.ui-datepicker-title" ) && title.html() !== "", "Structure - title division" ); assert.equal( title.children().length, 2, "Structure - title child count" ); assert.ok( title.children( ":first" ).is( "span.ui-datepicker-month" ) && title.children( ":first" ).text() !== "", "Structure - month text" ); assert.ok( title.children( ":last" ).is( "span.ui-datepicker-year" ) && title.children( ":last" ).text() !== "", "Structure - year text" ); table = dp.children( ":eq(1)" ); assert.ok( table.is( "table.ui-datepicker-calendar" ), "Structure - month table" ); assert.ok( table.children( ":first" ).is( "thead" ), "Structure - month table thead" ); thead = table.children( ":first" ).children( ":first" ); assert.ok( thead.is( "tr" ), "Structure - month table title row" ); assert.equal( thead.find( "th" ).length, 7, "Structure - month table title cells" ); assert.ok( table.children( ":eq(1)" ).is( "tbody" ), "Structure - month table body" ); assert.ok( table.children( ":eq(1)" ).children( "tr" ).length >= 4, "Structure - month table week count" ); week = table.children( ":eq(1)" ).children( ":first" ); assert.ok( week.is( "tr" ), "Structure - month table week row" ); assert.equal( week.children().length, 7, "Structure - week child count" ); assert.ok( week.children( ":first" ).is( "td.ui-datepicker-week-end" ), "Structure - month table first day cell" ); assert.ok( week.children( ":last" ).is( "td.ui-datepicker-week-end" ), "Structure - month table second day cell" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step2(); } ); } function step2() { // Editable month/year and button panel inp = testHelper.initNewInput( { changeMonth: true, changeYear: true, showButtonPanel: true } ); testHelper.onFocus( inp, function() { title = dp.find( "div.ui-datepicker-title" ); assert.ok( title.children( ":first" ).is( "select.ui-datepicker-month" ), "Structure - month selector" ); assert.ok( title.children( ":last" ).is( "select.ui-datepicker-year" ), "Structure - year selector" ); panel = dp.children( ":last" ); assert.ok( panel.is( "div.ui-datepicker-buttonpane" ), "Structure - button panel division" ); assert.equal( panel.children().length, 2, "Structure - button panel child count" ); assert.ok( panel.children( ":first" ).is( "button.ui-datepicker-current" ), "Structure - today button" ); assert.ok( panel.children( ":last" ).is( "button.ui-datepicker-close" ), "Structure - close button" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step3(); } ); } function step3() { // Multi-month 2 inp = testHelper.initNewInput( { numberOfMonths: 2 } ); testHelper.onFocus( inp, function() { assert.ok( dp.is( ".ui-datepicker-multi" ), "Structure multi [2] - multi-month" ); assert.equal( dp.children().length, 3, "Structure multi [2] - child count" ); child = dp.children( ":first" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-first" ), "Structure multi [2] - first month division" ); child = dp.children( ":eq(1)" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-last" ), "Structure multi [2] - second month division" ); child = dp.children( ":eq(2)" ); assert.ok( child.is( "div.ui-datepicker-row-break" ), "Structure multi [2] - row break" ); assert.ok( dp.is( ".ui-datepicker-multi-2" ), "Structure multi [2] - multi-2" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step4(); } ); } function step4() { // Multi-month 3 inp = testHelper.initNewInput( { numberOfMonths: 3 } ); testHelper.onFocus( inp, function() { assert.ok( dp.is( ".ui-datepicker-multi-3" ), "Structure multi [3] - multi-3" ); assert.ok( !dp.is( ".ui-datepicker-multi-2" ), "Structure multi [3] - Trac #6704" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step5(); } ); } function step5() { // Multi-month [2, 2] inp = testHelper.initNewInput( { numberOfMonths: [ 2, 2 ] } ); testHelper.onFocus( inp, function() { assert.ok( dp.is( ".ui-datepicker-multi" ), "Structure multi - multi-month" ); assert.equal( dp.children().length, 6, "Structure multi [2,2] - child count" ); child = dp.children( ":first" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-first" ), "Structure multi [2,2] - first month division" ); child = dp.children( ":eq(1)" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-last" ), "Structure multi [2,2] - second month division" ); child = dp.children( ":eq(2)" ); assert.ok( child.is( "div.ui-datepicker-row-break" ), "Structure multi [2,2] - row break" ); child = dp.children( ":eq(3)" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-first" ), "Structure multi [2,2] - third month division" ); child = dp.children( ":eq(4)" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-last" ), "Structure multi [2,2] - fourth month division" ); child = dp.children( ":eq(5)" ); assert.ok( child.is( "div.ui-datepicker-row-break" ), "Structure multi [2,2] - row break" ); inp.datepicker( "hide" ).datepicker( "destroy" ); // Inline inl = testHelper.init( "#inl" ); dp = inl.children(); assert.ok( dp.is( ".ui-datepicker-inline" ), "Structure inline - main div" ); assert.ok( !dp.is( ".ui-datepicker-rtl" ), "Structure inline - not right-to-left" ); assert.ok( !dp.is( ".ui-datepicker-multi" ), "Structure inline - not multi-month" ); assert.equal( dp.children().length, 2, "Structure inline - child count" ); header = dp.children( ":first" ); assert.ok( header.is( "div.ui-datepicker-header" ), "Structure inline - header division" ); assert.equal( header.children().length, 3, "Structure inline - header child count" ); table = dp.children( ":eq(1)" ); assert.ok( table.is( "table.ui-datepicker-calendar" ), "Structure inline - month table" ); assert.ok( table.children( ":first" ).is( "thead" ), "Structure inline - month table thead" ); assert.ok( table.children( ":eq(1)" ).is( "tbody" ), "Structure inline - month table body" ); inl.datepicker( "destroy" ); // Inline multi-month inl = testHelper.init( "#inl", { numberOfMonths: 2 } ); dp = inl.children(); assert.ok( dp.is( ".ui-datepicker-inline" ) && dp.is( ".ui-datepicker-multi" ), "Structure inline multi - main div" ); assert.equal( dp.children().length, 3, "Structure inline multi - child count" ); child = dp.children( ":first" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-first" ), "Structure inline multi - first month division" ); child = dp.children( ":eq(1)" ); assert.ok( child.is( "div.ui-datepicker-group" ) && child.is( "div.ui-datepicker-group-last" ), "Structure inline multi - second month division" ); child = dp.children( ":eq(2)" ); assert.ok( child.is( "div.ui-datepicker-row-break" ), "Structure inline multi - row break" ); inl.datepicker( "destroy" ); ready(); } ); } step1(); } ); QUnit.test( "customStructure", function( assert ) { var ready = assert.async(); assert.expect( 20 ); var header, panel, title, thead, inp = testHelper.initNewInput( $.datepicker.regional.he ), dp = $( "#ui-datepicker-div" ); function step1() { inp.datepicker( "option", "showButtonPanel", true ); testHelper.onFocus( inp, function() { assert.ok( dp.is( ".ui-datepicker-rtl" ), "Structure RTL - right-to-left" ); header = dp.children( ":first" ); assert.ok( header.is( "div.ui-datepicker-header" ), "Structure RTL - header division" ); assert.equal( header.children().length, 3, "Structure RTL - header child count" ); assert.ok( header.children( ":first" ).is( "a.ui-datepicker-next" ), "Structure RTL - prev link" ); assert.ok( header.children( ":eq(1)" ).is( "a.ui-datepicker-prev" ), "Structure RTL - next link" ); panel = dp.children( ":last" ); assert.ok( panel.is( "div.ui-datepicker-buttonpane" ), "Structure RTL - button division" ); assert.equal( panel.children().length, 2, "Structure RTL - button panel child count" ); assert.ok( panel.children( ":first" ).is( "button.ui-datepicker-close" ), "Structure RTL - close button" ); assert.ok( panel.children( ":last" ).is( "button.ui-datepicker-current" ), "Structure RTL - today button" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step2(); } ); } // Hide prev/next function step2() { inp = testHelper.initNewInput( { hideIfNoPrevNext: true, minDate: new Date( 2008, 2 - 1, 4 ), maxDate: new Date( 2008, 2 - 1, 14 ) } ); inp.val( "02/10/2008" ); testHelper.onFocus( inp, function() { header = dp.children( ":first" ); assert.ok( header.is( "div.ui-datepicker-header" ), "Structure hide prev/next - header division" ); assert.equal( header.children().length, 1, "Structure hide prev/next - links child count" ); assert.ok( header.children( ":first" ).is( "div.ui-datepicker-title" ), "Structure hide prev/next - title division" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step3(); } ); } // Changeable Month with read-only year function step3() { inp = testHelper.initNewInput( { changeMonth: true } ); testHelper.onFocus( inp, function() { title = dp.children( ":first" ).children( ":last" ); assert.equal( title.children().length, 2, "Structure changeable month - title child count" ); assert.ok( title.children( ":first" ).is( "select.ui-datepicker-month" ), "Structure changeable month - month selector" ); assert.ok( title.children( ":last" ).is( "span.ui-datepicker-year" ), "Structure changeable month - read-only year" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step4(); } ); } // Changeable year with read-only month function step4() { inp = testHelper.initNewInput( { changeYear: true } ); testHelper.onFocus( inp, function() { title = dp.children( ":first" ).children( ":last" ); assert.equal( title.children().length, 2, "Structure changeable year - title child count" ); assert.ok( title.children( ":first" ).is( "span.ui-datepicker-month" ), "Structure changeable year - read-only month" ); assert.ok( title.children( ":last" ).is( "select.ui-datepicker-year" ), "Structure changeable year - year selector" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step5(); } ); } // Read-only first day of week function step5() { inp = testHelper.initNewInput( { changeFirstDay: false } ); testHelper.onFocus( inp, function() { thead = dp.find( ".ui-datepicker-calendar thead tr" ); assert.equal( thead.children().length, 7, "Structure read-only first day - thead child count" ); assert.equal( thead.find( "a" ).length, 0, "Structure read-only first day - thead links count" ); inp.datepicker( "hide" ).datepicker( "destroy" ); ready(); } ); } // TODO: figure out why this setTimeout is needed in IE, // it only is necessary when the previous baseStructure tests runs first // Support: IE setTimeout( step1 ); } ); QUnit.test( "keystrokes", function( assert ) { assert.expect( 26 ); var inp = testHelper.init( "#inp" ), date = new Date(); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke enter" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 4 ), "Keystroke enter - preset" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.HOME } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke ctrl+home" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.END } ); assert.ok( inp.datepicker( "getDate" ) == null, "Keystroke ctrl+end" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.ok( inp.datepicker( "getDate" ) == null, "Keystroke esc" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 4 ), "Keystroke esc - preset" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 4 ), "Keystroke esc - abandoned" ); // Moving by day or week inp.val( "" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.LEFT } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() - 1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke ctrl+left" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke left" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.RIGHT } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke ctrl+right" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() - 1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke right" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() - 7 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke ctrl+up" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 7 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke up" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 7 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke ctrl+down" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() - 7 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Keystroke down" ); // Moving by month or year inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 1 - 1, 4 ), "Keystroke pgup" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 3 - 1, 4 ), "Keystroke pgdn" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2007, 2 - 1, 4 ), "Keystroke ctrl+pgup" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2009, 2 - 1, 4 ), "Keystroke ctrl+pgdn" ); // Check for moving to short months inp.val( "03/31/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 29 ), "Keystroke pgup - Feb" ); inp.val( "01/30/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 29 ), "Keystroke pgdn - Feb" ); inp.val( "02/29/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2007, 2 - 1, 28 ), "Keystroke ctrl+pgup - Feb" ); inp.val( "02/29/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2009, 2 - 1, 28 ), "Keystroke ctrl+pgdn - Feb" ); // Goto current inp.datepicker( "option", { gotoCurrent: true } ). datepicker( "hide" ).val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.HOME } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 4 ), "Keystroke ctrl+home" ); // Change steps inp.datepicker( "option", { stepMonths: 2, gotoCurrent: false } ). datepicker( "hide" ).val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2007, 12 - 1, 4 ), "Keystroke pgup step 2" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 4 - 1, 4 ), "Keystroke pgdn step 2" ); } ); QUnit.test( "mouse", function( assert ) { assert.expect( 15 ); var inl, inp = testHelper.init( "#inp" ), dp = $( "#ui-datepicker-div" ), date = new Date(); inp.val( "" ).datepicker( "show" ); $( ".ui-datepicker-calendar tbody a:contains(10)", dp ).simulate( "click", {} ); date.setDate( 10 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Mouse click" ); inp.val( "02/04/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar tbody a:contains(12)", dp ).simulate( "click", {} ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 12 ), "Mouse click - preset" ); inp.val( "02/04/2008" ).datepicker( "show" ); inp.val( "" ).datepicker( "show" ); $( "button.ui-datepicker-close", dp ).simulate( "click", {} ); assert.ok( inp.datepicker( "getDate" ) == null, "Mouse click - close" ); inp.val( "02/04/2008" ).datepicker( "show" ); $( "button.ui-datepicker-close", dp ).simulate( "click", {} ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 4 ), "Mouse click - close + preset" ); inp.val( "02/04/2008" ).datepicker( "show" ); $( "a.ui-datepicker-prev", dp ).simulate( "click", {} ); $( "button.ui-datepicker-close", dp ).simulate( "click", {} ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 4 ), "Mouse click - abandoned" ); // Current/previous/next inp.val( "02/04/2008" ).datepicker( "option", { showButtonPanel: true } ).datepicker( "show" ); $( ".ui-datepicker-current", dp ).simulate( "click", {} ); $( ".ui-datepicker-calendar tbody a:contains(14)", dp ).simulate( "click", {} ); date.setDate( 14 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Mouse click - current" ); inp.val( "02/04/2008" ).datepicker( "show" ); $( ".ui-datepicker-prev", dp ).simulate( "click" ); $( ".ui-datepicker-calendar tbody a:contains(16)", dp ).simulate( "click" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 1 - 1, 16 ), "Mouse click - previous" ); inp.val( "02/04/2008" ).datepicker( "show" ); $( ".ui-datepicker-next", dp ).simulate( "click" ); $( ".ui-datepicker-calendar tbody a:contains(18)", dp ).simulate( "click" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 3 - 1, 18 ), "Mouse click - next" ); // Previous/next with minimum/maximum inp.datepicker( "option", { minDate: new Date( 2008, 2 - 1, 2 ), maxDate: new Date( 2008, 2 - 1, 26 ) } ).val( "02/04/2008" ).datepicker( "show" ); $( ".ui-datepicker-prev", dp ).simulate( "click" ); $( ".ui-datepicker-calendar tbody a:contains(16)", dp ).simulate( "click" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 16 ), "Mouse click - previous + min/max" ); inp.val( "02/04/2008" ).datepicker( "show" ); $( ".ui-datepicker-next", dp ).simulate( "click" ); $( ".ui-datepicker-calendar tbody a:contains(18)", dp ).simulate( "click" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 2 - 1, 18 ), "Mouse click - next + min/max" ); // Inline inl = testHelper.init( "#inl" ); dp = $( ".ui-datepicker-inline", inl ); date = new Date(); inl.datepicker( "setDate", date ); $( ".ui-datepicker-calendar tbody a:contains(10)", dp ).simulate( "click", {} ); date.setDate( 10 ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date, "Mouse click inline" ); inl.datepicker( "option", { showButtonPanel: true } ).datepicker( "setDate", new Date( 2008, 2 - 1, 4 ) ); $( ".ui-datepicker-calendar tbody a:contains(12)", dp ).simulate( "click", {} ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), new Date( 2008, 2 - 1, 12 ), "Mouse click inline - preset" ); inl.datepicker( "option", { showButtonPanel: true } ); $( ".ui-datepicker-current", dp ).simulate( "click", {} ); $( ".ui-datepicker-calendar tbody a:contains(14)", dp ).simulate( "click", {} ); date.setDate( 14 ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date, "Mouse click inline - current" ); inl.datepicker( "setDate", new Date( 2008, 2 - 1, 4 ) ); $( ".ui-datepicker-prev", dp ).simulate( "click" ); $( ".ui-datepicker-calendar tbody a:contains(16)", dp ).simulate( "click" ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), new Date( 2008, 1 - 1, 16 ), "Mouse click inline - previous" ); inl.datepicker( "setDate", new Date( 2008, 2 - 1, 4 ) ); $( ".ui-datepicker-next", dp ).simulate( "click" ); $( ".ui-datepicker-calendar tbody a:contains(18)", dp ).simulate( "click" ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), new Date( 2008, 3 - 1, 18 ), "Mouse click inline - next" ); } ); } ); jquery-ui-1.12.1/tests/unit/datepicker/datepicker.html000066400000000000000000000010311276627555100227760ustar00rootroot00000000000000 jQuery UI Datepicker Test Suite

    jquery-ui-1.12.1/tests/unit/datepicker/events.js000066400000000000000000000154601276627555100216520ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/datepicker" ], function( QUnit, $, testHelper ) { QUnit.module( "datepicker: events" ); var selectedThis = null, selectedDate = null, selectedInst = null; function callback( date, inst ) { selectedThis = this; selectedDate = date; selectedInst = inst; } function callback2( year, month, inst ) { selectedThis = this; selectedDate = year + "/" + month; selectedInst = inst; } QUnit.test( "events", function( assert ) { assert.expect( 26 ); var dateStr, newMonthYear, inp2, inp = testHelper.init( "#inp", { onSelect: callback } ), date = new Date(); // OnSelect inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( selectedThis, inp[ 0 ], "Callback selected this" ); assert.equal( selectedInst, $.data( inp[ 0 ], testHelper.PROP_NAME ), "Callback selected inst" ); assert.equal( selectedDate, $.datepicker.formatDate( "mm/dd/yy", date ), "Callback selected date" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 7 ); assert.equal( selectedDate, $.datepicker.formatDate( "mm/dd/yy", date ), "Callback selected date - ctrl+down" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.equal( selectedDate, $.datepicker.formatDate( "mm/dd/yy", date ), "Callback selected date - esc" ); dateStr = "02/04/2008"; inp.val( dateStr ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( dateStr, selectedDate, "onSelect is called after enter keydown" ); // OnChangeMonthYear inp.datepicker( "option", { onChangeMonthYear: callback2, onSelect: null } ). val( "" ).datepicker( "show" ); newMonthYear = function( date ) { return date.getFullYear() + "/" + ( date.getMonth() + 1 ); }; date = new Date(); date.setDate( 1 ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); date.setMonth( date.getMonth() - 1 ); assert.equal( selectedThis, inp[ 0 ], "Callback change month/year this" ); assert.equal( selectedInst, $.data( inp[ 0 ], testHelper.PROP_NAME ), "Callback change month/year inst" ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year date - pgup" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); date.setMonth( date.getMonth() + 1 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year date - pgdn" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ); date.setFullYear( date.getFullYear() - 1 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year date - ctrl+pgup" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.HOME } ); date.setFullYear( date.getFullYear() + 1 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year date - ctrl+home" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ); date.setFullYear( date.getFullYear() + 1 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year date - ctrl+pgdn" ); inp.datepicker( "setDate", new Date( 2007, 1 - 1, 26 ) ); assert.equal( selectedDate, "2007/1", "Callback change month/year date - setDate" ); selectedDate = null; inp.datepicker( "setDate", new Date( 2007, 1 - 1, 12 ) ); assert.ok( selectedDate == null, "Callback change month/year date - setDate no change" ); // OnChangeMonthYear step by 2 inp.datepicker( "option", { stepMonths: 2 } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); date.setMonth( date.getMonth() - 14 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year by 2 date - pgup" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ); date.setMonth( date.getMonth() - 12 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year by 2 date - ctrl+pgup" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); date.setMonth( date.getMonth() + 2 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year by 2 date - pgdn" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ); date.setMonth( date.getMonth() + 12 ); assert.equal( selectedDate, newMonthYear( date ), "Callback change month/year by 2 date - ctrl+pgdn" ); // OnClose inp.datepicker( "option", { onClose: callback, onChangeMonthYear: null, stepMonths: 1 } ). val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.equal( selectedThis, inp[ 0 ], "Callback close this" ); assert.equal( selectedInst, $.data( inp[ 0 ], testHelper.PROP_NAME ), "Callback close inst" ); assert.equal( selectedDate, "", "Callback close date - esc" ); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( selectedDate, $.datepicker.formatDate( "mm/dd/yy", new Date() ), "Callback close date - enter" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.equal( selectedDate, "02/04/2008", "Callback close date - preset" ); inp.val( "02/04/2008" ).datepicker( "show" ). simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.END } ); assert.equal( selectedDate, "", "Callback close date - ctrl+end" ); inp2 = testHelper.init( "#inp2" ); inp2.datepicker().datepicker( "option", { onClose: callback } ).datepicker( "show" ); inp.datepicker( "show" ); assert.equal( selectedThis, inp2[ 0 ], "Callback close this" ); } ); QUnit.test( "beforeShowDay-getDate", function( assert ) { assert.expect( 3 ); var inp = testHelper.init( "#inp", { beforeShowDay: function() { inp.datepicker( "getDate" ); return [ true, "" ]; } } ), dp = $( "#ui-datepicker-div" ); inp.val( "01/01/2010" ).datepicker( "show" ); // Contains non-breaking space assert.equal( $( "div.ui-datepicker-title" ).text(), // Support: IE <9, jQuery <1.8 // In IE7/8 with jQuery <1.8, encoded spaces behave in strange ways $( "January 2010" ).text(), "Initial month" ); $( "a.ui-datepicker-next", dp ).trigger( "click" ); $( "a.ui-datepicker-next", dp ).trigger( "click" ); // Contains non-breaking space assert.equal( $( "div.ui-datepicker-title" ).text(), $( "March 2010" ).text(), "After next clicks" ); inp.datepicker( "hide" ).datepicker( "show" ); $( "a.ui-datepicker-prev", dp ).trigger( "click" ); $( "a.ui-datepicker-prev", dp ).trigger( "click" ); // Contains non-breaking space assert.equal( $( "div.ui-datepicker-title" ).text(), $( "November 2009" ).text(), "After prev clicks" ); inp.datepicker( "hide" ); } ); } ); jquery-ui-1.12.1/tests/unit/datepicker/helper.js000066400000000000000000000020431276627555100216160ustar00rootroot00000000000000define( [ "qunit", "jquery", "lib/helper", "ui/widgets/datepicker" ], function( QUnit, $, helper ) { return $.extend( helper, { addMonths: function( date, offset ) { var maxDay = 32 - new Date( date.getFullYear(), date.getMonth() + offset, 32 ).getDate(); date.setDate( Math.min( date.getDate(), maxDay ) ); date.setMonth( date.getMonth() + offset ); return date; }, equalsDate: function( assert, d1, d2, message ) { if ( !d1 || !d2 ) { assert.ok( false, message + " - missing date" ); return; } d1 = new Date( d1.getFullYear(), d1.getMonth(), d1.getDate() ); d2 = new Date( d2.getFullYear(), d2.getMonth(), d2.getDate() ); assert.equal( d1.toString(), d2.toString(), message ); }, init: function( id, options ) { $.datepicker.setDefaults( $.datepicker.regional[ "" ] ); return $( id ).datepicker( $.extend( { showAnim: "" }, options || {} ) ); }, initNewInput: function( options ) { var id = $( "" ).appendTo( "#qunit-fixture" ); return this.init( id, options ); }, PROP_NAME: "datepicker" } ); } ); jquery-ui-1.12.1/tests/unit/datepicker/images/000077500000000000000000000000001276627555100212475ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/datepicker/images/calendar.gif000066400000000000000000000004021276627555100235030ustar00rootroot00000000000000GIF87awSQ[W^Yc\e^meslzs}1i9qZs,$T [Ѿ 5ME @@\[n)*u/8l6k<2uӸE,inxPU\&ff]  moq =y^`Gdd` G  !;jquery-ui-1.12.1/tests/unit/datepicker/methods.js000066400000000000000000000163211276627555100220060ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/datepicker" ], function( QUnit, $, testHelper ) { QUnit.module( "datepicker: methods" ); QUnit.test( "destroy", function( assert ) { assert.expect( 33 ); var inl, inp = testHelper.init( "#inp" ); assert.ok( inp.is( ".hasDatepicker" ), "Default - marker class set" ); assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Default - instance present" ); assert.ok( inp.next().is( "#alt" ), "Default - button absent" ); inp.datepicker( "destroy" ); inp = $( "#inp" ); assert.ok( !inp.is( ".hasDatepicker" ), "Default - marker class cleared" ); assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Default - instance absent" ); assert.ok( inp.next().is( "#alt" ), "Default - button absent" ); // With button inp = testHelper.init( "#inp", { showOn: "both" } ); assert.ok( inp.is( ".hasDatepicker" ), "Button - marker class set" ); assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Button - instance present" ); assert.ok( inp.next().text() === "...", "Button - button added" ); inp.datepicker( "destroy" ); inp = $( "#inp" ); assert.ok( !inp.is( ".hasDatepicker" ), "Button - marker class cleared" ); assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Button - instance absent" ); assert.ok( inp.next().is( "#alt" ), "Button - button removed" ); // With append text inp = testHelper.init( "#inp", { appendText: "Testing" } ); assert.ok( inp.is( ".hasDatepicker" ), "Append - marker class set" ); assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Append - instance present" ); assert.ok( inp.next().text() === "Testing", "Append - append text added" ); inp.datepicker( "destroy" ); inp = $( "#inp" ); assert.ok( !inp.is( ".hasDatepicker" ), "Append - marker class cleared" ); assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Append - instance absent" ); assert.ok( inp.next().is( "#alt" ), "Append - append text removed" ); // With both inp = testHelper.init( "#inp", { showOn: "both", buttonImageOnly: true, buttonImage: "images/calendar.gif", appendText: "Testing" } ); assert.ok( inp.is( ".hasDatepicker" ), "Both - marker class set" ); assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Both - instance present" ); assert.ok( inp.next()[ 0 ].nodeName.toLowerCase() === "img", "Both - button added" ); assert.ok( inp.next().next().text() === "Testing", "Both - append text added" ); inp.datepicker( "destroy" ); inp = $( "#inp" ); assert.ok( !inp.is( ".hasDatepicker" ), "Both - marker class cleared" ); assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Both - instance absent" ); assert.ok( inp.next().is( "#alt" ), "Both - button and append text absent" ); // Inline inl = testHelper.init( "#inl" ); assert.ok( inl.is( ".hasDatepicker" ), "Inline - marker class set" ); assert.ok( inl.html() !== "", "Inline - datepicker present" ); assert.ok( $.data( inl[ 0 ], testHelper.PROP_NAME ), "Inline - instance present" ); assert.ok( inl.next().length === 0 || inl.next().is( "p" ), "Inline - button absent" ); inl.datepicker( "destroy" ); inl = $( "#inl" ); assert.ok( !inl.is( ".hasDatepicker" ), "Inline - marker class cleared" ); assert.ok( inl.html() === "", "Inline - datepicker absent" ); assert.ok( !$.data( inl[ 0 ], testHelper.PROP_NAME ), "Inline - instance absent" ); assert.ok( inl.next().length === 0 || inl.next().is( "p" ), "Inline - button absent" ); } ); QUnit.test( "enableDisable", function( assert ) { assert.expect( 33 ); var inl, dp, inp = testHelper.init( "#inp" ); assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable - initially marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Enable/disable - field initially enabled" ); inp.datepicker( "disable" ); assert.ok( inp.datepicker( "isDisabled" ), "Enable/disable - now marked as disabled" ); assert.ok( inp[ 0 ].disabled, "Enable/disable - field now disabled" ); inp.datepicker( "enable" ); assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable - now marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Enable/disable - field now enabled" ); inp.datepicker( "destroy" ); // With a button inp = testHelper.init( "#inp", { showOn: "button" } ); assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable button - initially marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Enable/disable button - field initially enabled" ); assert.ok( !inp.next( "button" )[ 0 ].disabled, "Enable/disable button - button initially enabled" ); inp.datepicker( "disable" ); assert.ok( inp.datepicker( "isDisabled" ), "Enable/disable button - now marked as disabled" ); assert.ok( inp[ 0 ].disabled, "Enable/disable button - field now disabled" ); assert.ok( inp.next( "button" )[ 0 ].disabled, "Enable/disable button - button now disabled" ); inp.datepicker( "enable" ); assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable button - now marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Enable/disable button - field now enabled" ); assert.ok( !inp.next( "button" )[ 0 ].disabled, "Enable/disable button - button now enabled" ); inp.datepicker( "destroy" ); // With an image button inp = testHelper.init( "#inp", { showOn: "button", buttonImageOnly: true, buttonImage: "images/calendar.gif" } ); assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable image - initially marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Enable/disable image - field initially enabled" ); assert.ok( parseFloat( inp.next( "img" ).css( "opacity" ) ) === 1, "Enable/disable image - image initially enabled" ); inp.datepicker( "disable" ); assert.ok( inp.datepicker( "isDisabled" ), "Enable/disable image - now marked as disabled" ); assert.ok( inp[ 0 ].disabled, "Enable/disable image - field now disabled" ); assert.ok( parseFloat( inp.next( "img" ).css( "opacity" ) ) !== 1, "Enable/disable image - image now disabled" ); inp.datepicker( "enable" ); assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable image - now marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Enable/disable image - field now enabled" ); assert.ok( parseFloat( inp.next( "img" ).css( "opacity" ) ) === 1, "Enable/disable image - image now enabled" ); inp.datepicker( "destroy" ); // Inline inl = testHelper.init( "#inl", { changeYear: true } ); dp = $( ".ui-datepicker-inline", inl ); assert.ok( !inl.datepicker( "isDisabled" ), "Enable/disable inline - initially marked as enabled" ); assert.ok( !dp.children().is( ".ui-state-disabled" ), "Enable/disable inline - not visually disabled initially" ); assert.ok( !dp.find( "select" ).prop( "disabled" ), "Enable/disable inline - form element enabled initially" ); inl.datepicker( "disable" ); assert.ok( inl.datepicker( "isDisabled" ), "Enable/disable inline - now marked as disabled" ); assert.ok( dp.children().is( ".ui-state-disabled" ), "Enable/disable inline - visually disabled" ); assert.ok( dp.find( "select" ).prop( "disabled" ), "Enable/disable inline - form element disabled" ); inl.datepicker( "enable" ); assert.ok( !inl.datepicker( "isDisabled" ), "Enable/disable inline - now marked as enabled" ); assert.ok( !dp.children().is( ".ui-state-disabled" ), "Enable/disable inline - not visiually disabled" ); assert.ok( !dp.find( "select" ).prop( "disabled" ), "Enable/disable inline - form element enabled" ); inl.datepicker( "destroy" ); } ); } ); jquery-ui-1.12.1/tests/unit/datepicker/options.js000066400000000000000000001612111276627555100220350ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/datepicker", "ui/i18n/datepicker-fr", "ui/i18n/datepicker-he", "ui/i18n/datepicker-zh-CN", "ui/ie" ], function( QUnit, $, testHelper ) { QUnit.module( "datepicker: options" ); QUnit.test( "setDefaults", function( assert ) { assert.expect( 3 ); testHelper.init( "#inp" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Initial showOn" ); $.datepicker.setDefaults( { showOn: "button" } ); assert.equal( $.datepicker._defaults.showOn, "button", "Change default showOn" ); $.datepicker.setDefaults( { showOn: "focus" } ); assert.equal( $.datepicker._defaults.showOn, "focus", "Restore showOn" ); } ); QUnit.test( "option", function( assert ) { assert.expect( 17 ); var inp = testHelper.init( "#inp" ), inst = $.data( inp[ 0 ], testHelper.PROP_NAME ); // Set option assert.equal( inst.settings.showOn, null, "Initial setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "focus", "Initial instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Initial default showOn" ); inp.datepicker( "option", "showOn", "button" ); assert.equal( inst.settings.showOn, "button", "Change setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "button", "Change instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" ); inp.datepicker( "option", { showOn: "both" } ); assert.equal( inst.settings.showOn, "both", "Change setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "both", "Change instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" ); inp.datepicker( "option", "showOn", undefined ); assert.equal( inst.settings.showOn, null, "Clear setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "focus", "Restore instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" ); // Get option inp = testHelper.init( "#inp" ); assert.equal( inp.datepicker( "option", "showOn" ), "focus", "Initial setting showOn" ); inp.datepicker( "option", "showOn", "button" ); assert.equal( inp.datepicker( "option", "showOn" ), "button", "Change instance showOn" ); inp.datepicker( "option", "showOn", undefined ); assert.equal( inp.datepicker( "option", "showOn" ), "focus", "Reset instance showOn" ); assert.deepEqual( inp.datepicker( "option", "all" ), { showAnim: "" }, "Get instance settings" ); assert.deepEqual( inp.datepicker( "option", "defaults" ), $.datepicker._defaults, "Get default settings" ); } ); QUnit.test( "disabled", function( assert ) { assert.expect( 8 ); var inp = testHelper.init( "#inp" ); assert.ok( !inp.datepicker( "isDisabled" ), "Initially marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Field initially enabled" ); inp.datepicker( "option", "disabled", true ); assert.ok( inp.datepicker( "isDisabled" ), "Marked as disabled" ); assert.ok( inp[ 0 ].disabled, "Field now disabled" ); inp.datepicker( "option", "disabled", false ); assert.ok( !inp.datepicker( "isDisabled" ), "Marked as enabled" ); assert.ok( !inp[ 0 ].disabled, "Field now enabled" ); inp.datepicker( "destroy" ); inp = testHelper.init( "#inp", { disabled: true } ); assert.ok( inp.datepicker( "isDisabled" ), "Initially marked as disabled" ); assert.ok( inp[ 0 ].disabled, "Field initially disabled" ); } ); QUnit.test( "change", function( assert ) { assert.expect( 12 ); var inp = testHelper.init( "#inp" ), inst = $.data( inp[ 0 ], testHelper.PROP_NAME ); assert.equal( inst.settings.showOn, null, "Initial setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "focus", "Initial instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Initial default showOn" ); inp.datepicker( "change", "showOn", "button" ); assert.equal( inst.settings.showOn, "button", "Change setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "button", "Change instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" ); inp.datepicker( "change", { showOn: "both" } ); assert.equal( inst.settings.showOn, "both", "Change setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "both", "Change instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" ); inp.datepicker( "change", "showOn", undefined ); assert.equal( inst.settings.showOn, null, "Clear setting showOn" ); assert.equal( $.datepicker._get( inst, "showOn" ), "focus", "Restore instance showOn" ); assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" ); } ); ( function() { var url = window.location.search; url = decodeURIComponent( url.slice( url.indexOf( "swarmURL=" ) + 9 ) ); // TODO: This test occassionally fails in IE in TestSwarm if ( $.ui.ie && url && url.indexOf( "http" ) === 0 ) { return; } QUnit.test( "invocation", function( assert ) { var ready = assert.async(); var button, image, isOldIE = $.ui.ie && ( !document.documentMode || document.documentMode < 9 ), body = $( "body" ); assert.expect( isOldIE ? 25 : 29 ); function step0() { var inp = testHelper.initNewInput(), dp = $( "#ui-datepicker-div" ); button = inp.siblings( "button" ); assert.ok( button.length === 0, "Focus - button absent" ); image = inp.siblings( "img" ); assert.ok( image.length === 0, "Focus - image absent" ); testHelper.onFocus( inp, function() { assert.ok( dp.is( ":visible" ), "Focus - rendered on focus" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.ok( !dp.is( ":visible" ), "Focus - hidden on exit" ); step1(); } ); } function step1() { var inp = testHelper.initNewInput(), dp = $( "#ui-datepicker-div" ); testHelper.onFocus( inp, function() { assert.ok( dp.is( ":visible" ), "Focus - rendered on focus" ); body.simulate( "mousedown", {} ); assert.ok( !dp.is( ":visible" ), "Focus - hidden on external click" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step2(); } ); } function step2() { var inp = testHelper.initNewInput( { showOn: "button", buttonText: "Popup" } ), dp = $( "#ui-datepicker-div" ); assert.ok( !dp.is( ":visible" ), "Button - initially hidden" ); button = inp.siblings( "button" ); image = inp.siblings( "img" ); assert.ok( button.length === 1, "Button - button present" ); assert.ok( image.length === 0, "Button - image absent" ); assert.equal( button.text(), "Popup", "Button - button text" ); testHelper.onFocus( inp, function() { assert.ok( !dp.is( ":visible" ), "Button - not rendered on focus" ); button.trigger( "click" ); assert.ok( dp.is( ":visible" ), "Button - rendered on button click" ); button.trigger( "click" ); assert.ok( !dp.is( ":visible" ), "Button - hidden on second button click" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step3(); } ); } function step3() { var inp = testHelper.initNewInput( { showOn: "button", buttonImageOnly: true, buttonImage: "images/calendar.gif", buttonText: "Cal" } ), dp = $( "#ui-datepicker-div" ); assert.ok( !dp.is( ":visible" ), "Image button - initially hidden" ); button = inp.siblings( "button" ); assert.ok( button.length === 0, "Image button - button absent" ); image = inp.siblings( "img" ); assert.ok( image.length === 1, "Image button - image present" ); assert.ok( /images\/calendar\.gif$/.test( image.attr( "src" ) ), "Image button - image source" ); assert.equal( image.attr( "title" ), "Cal", "Image button - image text" ); testHelper.onFocus( inp, function() { assert.ok( !dp.is( ":visible" ), "Image button - not rendered on focus" ); image.trigger( "click" ); assert.ok( dp.is( ":visible" ), "Image button - rendered on image click" ); image.trigger( "click" ); assert.ok( !dp.is( ":visible" ), "Image button - hidden on second image click" ); inp.datepicker( "hide" ).datepicker( "destroy" ); step4(); } ); } function step4() { var inp = testHelper.initNewInput( { showOn: "both", buttonImage: "images/calendar.gif" } ), dp = $( "#ui-datepicker-div" ); assert.ok( !dp.is( ":visible" ), "Both - initially hidden" ); button = inp.siblings( "button" ); assert.ok( button.length === 1, "Both - button present" ); image = inp.siblings( "img" ); assert.ok( image.length === 0, "Both - image absent" ); image = button.children( "img" ); assert.ok( image.length === 1, "Both - button image present" ); // TODO: This test occasionally fails to focus in IE8 in BrowserStack if ( !isOldIE ) { testHelper.onFocus( inp, function() { assert.ok( dp.is( ":visible" ), "Both - rendered on focus" ); body.simulate( "mousedown", {} ); assert.ok( !dp.is( ":visible" ), "Both - hidden on external click" ); button.trigger( "click" ); assert.ok( dp.is( ":visible" ), "Both - rendered on button click" ); button.trigger( "click" ); assert.ok( !dp.is( ":visible" ), "Both - hidden on second button click" ); inp.datepicker( "hide" ).datepicker( "destroy" ); ready(); } ); } else { ready(); } } step0(); } ); } )(); QUnit.test( "otherMonths", function( assert ) { assert.expect( 8 ); var inp = testHelper.init( "#inp" ), pop = $( "#ui-datepicker-div" ); inp.val( "06/01/2009" ).datepicker( "show" ); assert.equal( pop.find( "tbody" ).text(), // Support: IE <9, jQuery <1.8 // In IE7/8 with jQuery <1.8, encoded spaces behave in strange ways $( "\u00a0123456789101112131415161718192021222324252627282930\u00a0\u00a0\u00a0\u00a0" ).text(), "Other months - none" ); assert.ok( pop.find( "td:last *" ).length === 0, "Other months - no content" ); inp.datepicker( "hide" ).datepicker( "option", "showOtherMonths", true ).datepicker( "show" ); assert.equal( pop.find( "tbody" ).text(), "311234567891011121314151617181920212223242526272829301234", "Other months - show" ); assert.ok( pop.find( "td:last span" ).length === 1, "Other months - span content" ); inp.datepicker( "hide" ).datepicker( "option", "selectOtherMonths", true ).datepicker( "show" ); assert.equal( pop.find( "tbody" ).text(), "311234567891011121314151617181920212223242526272829301234", "Other months - select" ); assert.ok( pop.find( "td:last a" ).length === 1, "Other months - link content" ); inp.datepicker( "hide" ).datepicker( "option", "showOtherMonths", false ).datepicker( "show" ); assert.equal( pop.find( "tbody" ).text(), // Support: IE <9, jQuery <1.8 // In IE7/8 with jQuery <1.8, encoded spaces behave in strange ways $( "\u00a0123456789101112131415161718192021222324252627282930\u00a0\u00a0\u00a0\u00a0" ).text(), "Other months - none" ); assert.ok( pop.find( "td:last *" ).length === 0, "Other months - no content" ); } ); QUnit.test( "defaultDate", function( assert ) { assert.expect( 16 ); var inp = testHelper.init( "#inp" ), date = new Date(); inp.val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date null" ); // Numeric values inp.datepicker( "option", { defaultDate: -2 } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() - 2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date -2" ); date = new Date(); inp.datepicker( "option", { defaultDate: 3 } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 3 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date 3" ); date = new Date(); inp.datepicker( "option", { defaultDate: 1 / "a" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date NaN" ); // String offset values inp.datepicker( "option", { defaultDate: "-1d" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() - 1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date -1d" ); inp.datepicker( "option", { defaultDate: "+3D" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 4 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date +3D" ); inp.datepicker( "option", { defaultDate: " -2 w " } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = new Date(); date.setDate( date.getDate() - 14 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date -2 w" ); inp.datepicker( "option", { defaultDate: "+1 W" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setDate( date.getDate() + 21 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date +1 W" ); inp.datepicker( "option", { defaultDate: " -1 m " } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = testHelper.addMonths( new Date(), -1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date -1 m" ); inp.datepicker( "option", { defaultDate: "+2M" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = testHelper.addMonths( new Date(), 2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date +2M" ); inp.datepicker( "option", { defaultDate: "-2y" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = new Date(); date.setFullYear( date.getFullYear() - 2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date -2y" ); inp.datepicker( "option", { defaultDate: "+1 Y " } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date.setFullYear( date.getFullYear() + 3 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date +1 Y" ); inp.datepicker( "option", { defaultDate: "+1M +10d" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = testHelper.addMonths( new Date(), 1 ); date.setDate( date.getDate() + 10 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date +1M +10d" ); // String date values inp.datepicker( "option", { defaultDate: "07/04/2007" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = new Date( 2007, 7 - 1, 4 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date 07/04/2007" ); inp.datepicker( "option", { dateFormat: "yy-mm-dd", defaultDate: "2007-04-02" } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = new Date( 2007, 4 - 1, 2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date 2007-04-02" ); // Date value date = new Date( 2007, 1 - 1, 26 ); inp.datepicker( "option", { dateFormat: "mm/dd/yy", defaultDate: date } ). datepicker( "hide" ).val( "" ).datepicker( "show" ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Default date 01/26/2007" ); } ); QUnit.test( "miscellaneous", function( assert ) { assert.expect( 19 ); var curYear, longNames, shortNames, date, dp = $( "#ui-datepicker-div" ), inp = testHelper.init( "#inp" ); // Year range function genRange( start, offset ) { var i = start, range = ""; for ( ; i < start + offset; i++ ) { range += i; } return range; } curYear = new Date().getFullYear(); inp.val( "02/04/2008" ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), "2008", "Year range - read-only default" ); inp.datepicker( "hide" ).datepicker( "option", { changeYear: true } ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), genRange( 2008 - 10, 21 ), "Year range - changeable default" ); inp.datepicker( "hide" ).datepicker( "option", { yearRange: "c-6:c+2", changeYear: true } ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), genRange( 2008 - 6, 9 ), "Year range - c-6:c+2" ); inp.datepicker( "hide" ).datepicker( "option", { yearRange: "2000:2010", changeYear: true } ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), genRange( 2000, 11 ), "Year range - 2000:2010" ); inp.datepicker( "hide" ).datepicker( "option", { yearRange: "-5:+3", changeYear: true } ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), genRange( curYear - 5, 9 ), "Year range - -5:+3" ); inp.datepicker( "hide" ).datepicker( "option", { yearRange: "2000:-5", changeYear: true } ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), genRange( 2000, curYear - 2004 ), "Year range - 2000:-5" ); inp.datepicker( "hide" ).datepicker( "option", { yearRange: "", changeYear: true } ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-year" ).text(), genRange( curYear, 1 ), "Year range - -6:+2" ); // Navigation as date format inp.datepicker( "option", { showButtonPanel: true } ); assert.equal( dp.find( ".ui-datepicker-prev" ).text(), "Prev", "Navigation prev - default" ); assert.equal( dp.find( ".ui-datepicker-current" ).text(), "Today", "Navigation current - default" ); assert.equal( dp.find( ".ui-datepicker-next" ).text(), "Next", "Navigation next - default" ); inp.datepicker( "hide" ).datepicker( "option", { navigationAsDateFormat: true, prevText: "< M", currentText: "MM", nextText: "M >" } ). val( "02/04/2008" ).datepicker( "show" ); longNames = $.datepicker.regional[ "" ].monthNames; shortNames = $.datepicker.regional[ "" ].monthNamesShort; date = new Date(); assert.equal( dp.find( ".ui-datepicker-prev" ).text(), "< " + shortNames[ 0 ], "Navigation prev - as date format" ); assert.equal( dp.find( ".ui-datepicker-current" ).text(), longNames[ date.getMonth() ], "Navigation current - as date format" ); assert.equal( dp.find( ".ui-datepicker-next" ).text(), shortNames[ 2 ] + " >", "Navigation next - as date format" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); assert.equal( dp.find( ".ui-datepicker-prev" ).text(), "< " + shortNames[ 1 ], "Navigation prev - as date format + pgdn" ); assert.equal( dp.find( ".ui-datepicker-current" ).text(), longNames[ date.getMonth() ], "Navigation current - as date format + pgdn" ); assert.equal( dp.find( ".ui-datepicker-next" ).text(), shortNames[ 3 ] + " >", "Navigation next - as date format + pgdn" ); inp.datepicker( "hide" ).datepicker( "option", { gotoCurrent: true } ). val( "02/04/2008" ).datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-prev" ).text(), "< " + shortNames[ 0 ], "Navigation prev - as date format + goto current" ); assert.equal( dp.find( ".ui-datepicker-current" ).text(), longNames[ 1 ], "Navigation current - as date format + goto current" ); assert.equal( dp.find( ".ui-datepicker-next" ).text(), shortNames[ 2 ] + " >", "Navigation next - as date format + goto current" ); } ); QUnit.test( "minMax", function( assert ) { assert.expect( 23 ); var date, inp = testHelper.init( "#inp" ), dp = $( "#ui-datepicker-div" ), lastYear = new Date( 2007, 6 - 1, 4 ), nextYear = new Date( 2009, 6 - 1, 4 ), minDate = new Date( 2008, 2 - 1, 29 ), maxDate = new Date( 2008, 12 - 1, 7 ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), lastYear, "Min/max - null, null - ctrl+pgup" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), nextYear, "Min/max - null, null - ctrl+pgdn" ); inp.datepicker( "option", { minDate: minDate } ). datepicker( "hide" ).val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), minDate, "Min/max - 02/29/2008, null - ctrl+pgup" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), nextYear, "Min/max - 02/29/2008, null - ctrl+pgdn" ); inp.datepicker( "option", { maxDate: maxDate } ). datepicker( "hide" ).val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), minDate, "Min/max - 02/29/2008, 12/07/2008 - ctrl+pgup" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), maxDate, "Min/max - 02/29/2008, 12/07/2008 - ctrl+pgdn" ); inp.datepicker( "option", { minDate: null } ). datepicker( "hide" ).val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), lastYear, "Min/max - null, 12/07/2008 - ctrl+pgup" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), maxDate, "Min/max - null, 12/07/2008 - ctrl+pgdn" ); // Relative dates date = new Date(); date.setDate( date.getDate() - 7 ); inp.datepicker( "option", { minDate: "-1w", maxDate: "+1 M +10 D " } ). datepicker( "hide" ).val( "" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Min/max - -1w, +1 M +10 D - ctrl+pgup" ); date = testHelper.addMonths( new Date(), 1 ); date.setDate( date.getDate() + 10 ); inp.val( "" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date, "Min/max - -1w, +1 M +10 D - ctrl+pgdn" ); // With existing date inp = testHelper.init( "#inp" ); inp.val( "06/04/2008" ).datepicker( "option", { minDate: minDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 6 - 1, 4 ), "Min/max - setDate > min" ); inp.datepicker( "option", { minDate: null } ).val( "01/04/2008" ).datepicker( "option", { minDate: minDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), minDate, "Min/max - setDate < min" ); inp.datepicker( "option", { minDate: null } ).val( "06/04/2008" ).datepicker( "option", { maxDate: maxDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 6 - 1, 4 ), "Min/max - setDate < max" ); inp.datepicker( "option", { maxDate: null } ).val( "01/04/2009" ).datepicker( "option", { maxDate: maxDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), maxDate, "Min/max - setDate > max" ); inp.datepicker( "option", { maxDate: null } ).val( "01/04/2008" ).datepicker( "option", { minDate: minDate, maxDate: maxDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), minDate, "Min/max - setDate < min" ); inp.datepicker( "option", { maxDate: null } ).val( "06/04/2008" ).datepicker( "option", { minDate: minDate, maxDate: maxDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), new Date( 2008, 6 - 1, 4 ), "Min/max - setDate > min, < max" ); inp.datepicker( "option", { maxDate: null } ).val( "01/04/2009" ).datepicker( "option", { minDate: minDate, maxDate: maxDate } ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), maxDate, "Min/max - setDate > max" ); inp.datepicker( "option", { yearRange: "-0:+1" } ).val( "01/01/" + new Date().getFullYear() ); assert.ok( dp.find( ".ui-datepicker-prev" ).hasClass( "ui-state-disabled" ), "Year Range Test - previous button disabled at 1/1/minYear" ); inp.datepicker( "setDate", "12/30/" + new Date().getFullYear() ); assert.ok( dp.find( ".ui-datepicker-next" ).hasClass( "ui-state-disabled" ), "Year Range Test - next button disabled at 12/30/maxYear" ); inp.val( "" ).datepicker( "option", { minDate: new Date( 1900, 0, 1 ), maxDate: "-7Y", yearRange: "1900:-7" } ); assert.ok( dp.find( ".ui-datepicker-next" ).hasClass( "ui-state-disabled" ), "Year Range Test - relative - next button disabled" ); assert.ok( !dp.find( ".ui-datepicker-prev" ).hasClass( "ui-state-disabled" ), "Year Range Test - relative - prev button enabled" ); inp.val( "" ).datepicker( "option", { minDate: new Date( 1900, 0, 1 ), maxDate: "1/25/2007", yearRange: "1900:2007" } ); assert.ok( dp.find( ".ui-datepicker-next" ).hasClass( "ui-state-disabled" ), "Year Range Test - absolute - next button disabled" ); assert.ok( !dp.find( ".ui-datepicker-prev" ).hasClass( "ui-state-disabled" ), "Year Range Test - absolute - prev button enabled" ); } ); QUnit.test( "setDate", function( assert ) { assert.expect( 24 ); var inl, alt, minDate, maxDate, dateAndTimeToSet, dateAndTimeClone, inp = testHelper.init( "#inp" ), date1 = new Date( 2008, 6 - 1, 4 ), date2 = new Date(); assert.ok( inp.datepicker( "getDate" ) == null, "Set date - default" ); inp.datepicker( "setDate", date1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date - 2008-06-04" ); date1 = new Date(); date1.setDate( date1.getDate() + 7 ); inp.datepicker( "setDate", +7 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date - +7" ); date2.setFullYear( date2.getFullYear() + 2 ); inp.datepicker( "setDate", "+2y" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date2, "Set date - +2y" ); inp.datepicker( "setDate", date1, date2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date - two dates" ); inp.datepicker( "setDate" ); assert.ok( inp.datepicker( "getDate" ) == null, "Set date - null" ); // Relative to current date date1 = new Date(); date1.setDate( date1.getDate() + 7 ); inp.datepicker( "setDate", "c +7" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date - c +7" ); date1.setDate( date1.getDate() + 7 ); inp.datepicker( "setDate", "c+7" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date - c+7" ); date1.setDate( date1.getDate() - 21 ); inp.datepicker( "setDate", "c -3 w" ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date - c -3 w" ); // Inline inl = testHelper.init( "#inl" ); date1 = new Date( 2008, 6 - 1, 4 ); date2 = new Date(); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date2, "Set date inline - default" ); inl.datepicker( "setDate", date1 ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date1, "Set date inline - 2008-06-04" ); date1 = new Date(); date1.setDate( date1.getDate() + 7 ); inl.datepicker( "setDate", +7 ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date1, "Set date inline - +7" ); date2.setFullYear( date2.getFullYear() + 2 ); inl.datepicker( "setDate", "+2y" ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date2, "Set date inline - +2y" ); inl.datepicker( "setDate", date1, date2 ); testHelper.equalsDate( assert, inl.datepicker( "getDate" ), date1, "Set date inline - two dates" ); inl.datepicker( "setDate" ); assert.ok( inl.datepicker( "getDate" ) == null, "Set date inline - null" ); // Alternate field alt = $( "#alt" ); inp.datepicker( "option", { altField: "#alt", altFormat: "yy-mm-dd" } ); date1 = new Date( 2008, 6 - 1, 4 ); inp.datepicker( "setDate", date1 ); assert.equal( inp.val(), "06/04/2008", "Set date alternate - 06/04/2008" ); assert.equal( alt.val(), "2008-06-04", "Set date alternate - 2008-06-04" ); // With minimum/maximum inp = testHelper.init( "#inp" ); date1 = new Date( 2008, 1 - 1, 4 ); date2 = new Date( 2008, 6 - 1, 4 ); minDate = new Date( 2008, 2 - 1, 29 ); maxDate = new Date( 2008, 3 - 1, 28 ); inp.val( "" ).datepicker( "option", { minDate: minDate } ).datepicker( "setDate", date2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date2, "Set date min/max - setDate > min" ); inp.datepicker( "setDate", date1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), minDate, "Set date min/max - setDate < min" ); inp.val( "" ).datepicker( "option", { maxDate: maxDate, minDate: null } ).datepicker( "setDate", date1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), date1, "Set date min/max - setDate < max" ); inp.datepicker( "setDate", date2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), maxDate, "Set date min/max - setDate > max" ); inp.val( "" ).datepicker( "option", { minDate: minDate } ).datepicker( "setDate", date1 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), minDate, "Set date min/max - setDate < min" ); inp.datepicker( "setDate", date2 ); testHelper.equalsDate( assert, inp.datepicker( "getDate" ), maxDate, "Set date min/max - setDate > max" ); dateAndTimeToSet = new Date( 2008, 3 - 1, 28, 1, 11, 0 ); dateAndTimeClone = new Date( 2008, 3 - 1, 28, 1, 11, 0 ); inp.datepicker( "setDate", dateAndTimeToSet ); assert.equal( dateAndTimeToSet.getTime(), dateAndTimeClone.getTime(), "Date object passed should not be changed by setDate" ); } ); QUnit.test( "altField", function( assert ) { assert.expect( 10 ); var inp = testHelper.init( "#inp" ), alt = $( "#alt" ); // No alternate field set alt.val( "" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( inp.val(), "06/04/2008", "Alt field - dp - enter" ); assert.equal( alt.val(), "", "Alt field - alt not set" ); // Alternate field set alt.val( "" ); inp.datepicker( "option", { altField: "#alt", altFormat: "yy-mm-dd" } ). val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( inp.val(), "06/04/2008", "Alt field - dp - enter" ); assert.equal( alt.val(), "2008-06-04", "Alt field - alt - enter" ); // Move from initial date alt.val( "" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); assert.equal( inp.val(), "07/04/2008", "Alt field - dp - pgdn" ); assert.equal( alt.val(), "2008-07-04", "Alt field - alt - pgdn" ); // Alternate field set - closed alt.val( "" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ). simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); assert.equal( inp.val(), "06/04/2008", "Alt field - dp - pgdn/esc" ); assert.equal( alt.val(), "", "Alt field - alt - pgdn/esc" ); // Clear date and alternate alt.val( "" ); inp.val( "06/04/2008" ).datepicker( "show" ); inp.simulate( "keydown", { ctrlKey: true, keyCode: $.ui.keyCode.END } ); assert.equal( inp.val(), "", "Alt field - dp - ctrl+end" ); assert.equal( alt.val(), "", "Alt field - alt - ctrl+end" ); } ); QUnit.test( "autoSize", function( assert ) { assert.expect( 15 ); var inp = testHelper.init( "#inp" ); assert.equal( inp.prop( "size" ), 20, "Auto size - default" ); inp.datepicker( "option", "autoSize", true ); assert.equal( inp.prop( "size" ), 10, "Auto size - mm/dd/yy" ); inp.datepicker( "option", "dateFormat", "m/d/yy" ); assert.equal( inp.prop( "size" ), 10, "Auto size - m/d/yy" ); inp.datepicker( "option", "dateFormat", "D M d yy" ); assert.equal( inp.prop( "size" ), 15, "Auto size - D M d yy" ); inp.datepicker( "option", "dateFormat", "DD, MM dd, yy" ); assert.equal( inp.prop( "size" ), 29, "Auto size - DD, MM dd, yy" ); // French inp.datepicker( "option", $.extend( { autoSize: false }, $.datepicker.regional.fr ) ); assert.equal( inp.prop( "size" ), 29, "Auto size - fr - default" ); inp.datepicker( "option", "autoSize", true ); assert.equal( inp.prop( "size" ), 10, "Auto size - fr - dd/mm/yy" ); inp.datepicker( "option", "dateFormat", "m/d/yy" ); assert.equal( inp.prop( "size" ), 10, "Auto size - fr - m/d/yy" ); inp.datepicker( "option", "dateFormat", "D M d yy" ); assert.equal( inp.prop( "size" ), 18, "Auto size - fr - D M d yy" ); inp.datepicker( "option", "dateFormat", "DD, MM dd, yy" ); assert.equal( inp.prop( "size" ), 28, "Auto size - fr - DD, MM dd, yy" ); // Hebrew inp.datepicker( "option", $.extend( { autoSize: false }, $.datepicker.regional.he ) ); assert.equal( inp.prop( "size" ), 28, "Auto size - he - default" ); inp.datepicker( "option", "autoSize", true ); assert.equal( inp.prop( "size" ), 10, "Auto size - he - dd/mm/yy" ); inp.datepicker( "option", "dateFormat", "m/d/yy" ); assert.equal( inp.prop( "size" ), 10, "Auto size - he - m/d/yy" ); inp.datepicker( "option", "dateFormat", "D M d yy" ); assert.equal( inp.prop( "size" ), 16, "Auto size - he - D M d yy" ); inp.datepicker( "option", "dateFormat", "DD, MM dd, yy" ); assert.equal( inp.prop( "size" ), 23, "Auto size - he - DD, MM dd, yy" ); } ); QUnit.test( "daylightSaving", function( assert ) { assert.expect( 25 ); var inp = testHelper.init( "#inp" ), dp = $( "#ui-datepicker-div" ); assert.ok( true, "Daylight saving - " + new Date() ); // Australia, Sydney - AM change, southern hemisphere inp.val( "04/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(6) a", dp ).simulate( "click" ); assert.equal( inp.val(), "04/05/2008", "Daylight saving - Australia 04/05/2008" ); inp.val( "04/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(7) a", dp ).simulate( "click" ); assert.equal( inp.val(), "04/06/2008", "Daylight saving - Australia 04/06/2008" ); inp.val( "04/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(8) a", dp ).simulate( "click" ); assert.equal( inp.val(), "04/07/2008", "Daylight saving - Australia 04/07/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(6) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/04/2008", "Daylight saving - Australia 10/04/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(7) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/05/2008", "Daylight saving - Australia 10/05/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(8) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/06/2008", "Daylight saving - Australia 10/06/2008" ); // Brasil, Brasilia - midnight change, southern hemisphere inp.val( "02/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(20) a", dp ).simulate( "click" ); assert.equal( inp.val(), "02/16/2008", "Daylight saving - Brasil 02/16/2008" ); inp.val( "02/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(21) a", dp ).simulate( "click" ); assert.equal( inp.val(), "02/17/2008", "Daylight saving - Brasil 02/17/2008" ); inp.val( "02/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(22) a", dp ).simulate( "click" ); assert.equal( inp.val(), "02/18/2008", "Daylight saving - Brasil 02/18/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(13) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/11/2008", "Daylight saving - Brasil 10/11/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(14) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/12/2008", "Daylight saving - Brasil 10/12/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(15) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/13/2008", "Daylight saving - Brasil 10/13/2008" ); // Lebanon, Beirut - midnight change, northern hemisphere inp.val( "03/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(34) a", dp ).simulate( "click" ); assert.equal( inp.val(), "03/29/2008", "Daylight saving - Lebanon 03/29/2008" ); inp.val( "03/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(35) a", dp ).simulate( "click" ); assert.equal( inp.val(), "03/30/2008", "Daylight saving - Lebanon 03/30/2008" ); inp.val( "03/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(36) a", dp ).simulate( "click" ); assert.equal( inp.val(), "03/31/2008", "Daylight saving - Lebanon 03/31/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(27) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/25/2008", "Daylight saving - Lebanon 10/25/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(28) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/26/2008", "Daylight saving - Lebanon 10/26/2008" ); inp.val( "10/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(29) a", dp ).simulate( "click" ); assert.equal( inp.val(), "10/27/2008", "Daylight saving - Lebanon 10/27/2008" ); // US, Eastern - AM change, northern hemisphere inp.val( "03/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(13) a", dp ).simulate( "click" ); assert.equal( inp.val(), "03/08/2008", "Daylight saving - US 03/08/2008" ); inp.val( "03/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(14) a", dp ).simulate( "click" ); assert.equal( inp.val(), "03/09/2008", "Daylight saving - US 03/09/2008" ); inp.val( "03/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(15) a", dp ).simulate( "click" ); assert.equal( inp.val(), "03/10/2008", "Daylight saving - US 03/10/2008" ); inp.val( "11/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(6) a", dp ).simulate( "click" ); assert.equal( inp.val(), "11/01/2008", "Daylight saving - US 11/01/2008" ); inp.val( "11/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(7) a", dp ).simulate( "click" ); assert.equal( inp.val(), "11/02/2008", "Daylight saving - US 11/02/2008" ); inp.val( "11/01/2008" ).datepicker( "show" ); $( ".ui-datepicker-calendar td:eq(8) a", dp ).simulate( "click" ); assert.equal( inp.val(), "11/03/2008", "Daylight saving - US 11/03/2008" ); } ); var beforeShowThis = null, beforeShowInput = null, beforeShowInst = null, beforeShowDayThis = null, beforeShowDayOK = true; function beforeAll( input, inst ) { beforeShowThis = this; beforeShowInput = input; beforeShowInst = inst; return { currentText: "Current" }; } function beforeDay( date ) { beforeShowDayThis = this; beforeShowDayOK &= ( date > new Date( 2008, 1 - 1, 26 ) && date < new Date( 2008, 3 - 1, 6 ) ); return [ ( date.getDate() % 2 === 0 ), ( date.getDate() % 10 === 0 ? "day10" : "" ), ( date.getDate() % 3 === 0 ? "Divisble by 3" : "" ) ]; } QUnit.test( "callbacks", function( assert ) { assert.expect( 13 ); // Before show var dp, day20, day21, inp = testHelper.init( "#inp", { beforeShow: beforeAll } ), inst = $.data( inp[ 0 ], "datepicker" ); assert.equal( $.datepicker._get( inst, "currentText" ), "Today", "Before show - initial" ); inp.val( "02/04/2008" ).datepicker( "show" ); assert.equal( $.datepicker._get( inst, "currentText" ), "Current", "Before show - changed" ); assert.ok( beforeShowThis.id === inp[ 0 ].id, "Before show - this OK" ); assert.ok( beforeShowInput.id === inp[ 0 ].id, "Before show - input OK" ); assert.deepEqual( beforeShowInst, inst, "Before show - inst OK" ); inp.datepicker( "hide" ).datepicker( "destroy" ); // Before show day inp = testHelper.init( "#inp", { beforeShowDay: beforeDay } ); dp = $( "#ui-datepicker-div" ); inp.val( "02/04/2008" ).datepicker( "show" ); assert.ok( beforeShowDayThis.id === inp[ 0 ].id, "Before show day - this OK" ); assert.ok( beforeShowDayOK, "Before show day - dates OK" ); day20 = dp.find( ".ui-datepicker-calendar td:contains('20')" ); day21 = dp.find( ".ui-datepicker-calendar td:contains('21')" ); assert.ok( !day20.is( ".ui-datepicker-unselectable" ), "Before show day - unselectable 20" ); assert.ok( day21.is( ".ui-datepicker-unselectable" ), "Before show day - unselectable 21" ); assert.ok( day20.is( ".day10" ), "Before show day - CSS 20" ); assert.ok( !day21.is( ".day10" ), "Before show day - CSS 21" ); assert.ok( !day20.attr( "title" ), "Before show day - title 20" ); assert.ok( day21.attr( "title" ) === "Divisble by 3", "Before show day - title 21" ); inp.datepicker( "hide" ).datepicker( "destroy" ); } ); QUnit.test( "beforeShowDay - tooltips with quotes", function( assert ) { assert.expect( 1 ); var inp, dp; inp = testHelper.init( "#inp", { beforeShowDay: function() { return [ true, "", "'" ]; } } ); dp = $( "#ui-datepicker-div" ); inp.datepicker( "show" ); assert.equal( dp.find( ".ui-datepicker-calendar td:contains('9')" ).attr( "title" ), "'" ); inp.datepicker( "hide" ).datepicker( "destroy" ); } ); QUnit.test( "localisation", function( assert ) { assert.expect( 24 ); var dp, month, day, date, inp = testHelper.init( "#inp", $.datepicker.regional.fr ); inp.datepicker( "option", { dateFormat: "DD, d MM yy", showButtonPanel:true, changeMonth:true, changeYear:true } ).val( "" ).datepicker( "show" ); dp = $( "#ui-datepicker-div" ); assert.equal( $( ".ui-datepicker-close", dp ).text(), "Fermer", "Localisation - close" ); $( ".ui-datepicker-close", dp ).simulate( "mouseover" ); assert.equal( $( ".ui-datepicker-prev", dp ).text(), "Précédent", "Localisation - previous" ); assert.equal( $( ".ui-datepicker-current", dp ).text(), "Aujourd'hui", "Localisation - current" ); assert.equal( $( ".ui-datepicker-next", dp ).text(), "Suivant", "Localisation - next" ); month = 0; $( ".ui-datepicker-month option", dp ).each( function() { assert.equal( $( this ).text(), $.datepicker.regional.fr.monthNamesShort[ month ], "Localisation - month " + month ); month++; } ); day = 1; $( ".ui-datepicker-calendar th", dp ).each( function() { assert.equal( $( this ).text(), $.datepicker.regional.fr.dayNamesMin[ day ], "Localisation - day " + day ); day = ( day + 1 ) % 7; } ); inp.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); date = new Date(); assert.equal( inp.val(), $.datepicker.regional.fr.dayNames[ date.getDay() ] + ", " + date.getDate() + " " + $.datepicker.regional.fr.monthNames[ date.getMonth() ] + " " + date.getFullYear(), "Localisation - formatting" ); } ); QUnit.test( "noWeekends", function( assert ) { assert.expect( 31 ); var i, date; for ( i = 1; i <= 31; i++ ) { date = new Date( 2001, 1 - 1, i ); assert.deepEqual( $.datepicker.noWeekends( date ), [ ( i + 1 ) % 7 >= 2, "" ], "No weekends " + date ); } } ); QUnit.test( "iso8601Week", function( assert ) { assert.expect( 12 ); var date = new Date( 2000, 12 - 1, 31 ); assert.equal( $.datepicker.iso8601Week( date ), 52, "ISO 8601 week " + date ); date = new Date( 2001, 1 - 1, 1 ); assert.equal( $.datepicker.iso8601Week( date ), 1, "ISO 8601 week " + date ); date = new Date( 2001, 1 - 1, 7 ); assert.equal( $.datepicker.iso8601Week( date ), 1, "ISO 8601 week " + date ); date = new Date( 2001, 1 - 1, 8 ); assert.equal( $.datepicker.iso8601Week( date ), 2, "ISO 8601 week " + date ); date = new Date( 2003, 12 - 1, 28 ); assert.equal( $.datepicker.iso8601Week( date ), 52, "ISO 8601 week " + date ); date = new Date( 2003, 12 - 1, 29 ); assert.equal( $.datepicker.iso8601Week( date ), 1, "ISO 8601 week " + date ); date = new Date( 2004, 1 - 1, 4 ); assert.equal( $.datepicker.iso8601Week( date ), 1, "ISO 8601 week " + date ); date = new Date( 2004, 1 - 1, 5 ); assert.equal( $.datepicker.iso8601Week( date ), 2, "ISO 8601 week " + date ); date = new Date( 2009, 12 - 1, 28 ); assert.equal( $.datepicker.iso8601Week( date ), 53, "ISO 8601 week " + date ); date = new Date( 2010, 1 - 1, 3 ); assert.equal( $.datepicker.iso8601Week( date ), 53, "ISO 8601 week " + date ); date = new Date( 2010, 1 - 1, 4 ); assert.equal( $.datepicker.iso8601Week( date ), 1, "ISO 8601 week " + date ); date = new Date( 2010, 1 - 1, 10 ); assert.equal( $.datepicker.iso8601Week( date ), 1, "ISO 8601 week " + date ); } ); QUnit.test( "parseDate", function( assert ) { assert.expect( 26 ); testHelper.init( "#inp" ); var currentYear, gmtDate, fr, settings, zh; assert.ok( $.datepicker.parseDate( "d m y", "" ) == null, "Parse date empty" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "d m y", "3 2 01" ), new Date( 2001, 2 - 1, 3 ), "Parse date d m y" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "dd mm yy", "03 02 2001" ), new Date( 2001, 2 - 1, 3 ), "Parse date dd mm yy" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "d m y", "13 12 01" ), new Date( 2001, 12 - 1, 13 ), "Parse date d m y" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "dd mm yy", "13 12 2001" ), new Date( 2001, 12 - 1, 13 ), "Parse date dd mm yy" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-o", "01-34" ), new Date( 2001, 2 - 1, 3 ), "Parse date y-o" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "yy-oo", "2001-347" ), new Date( 2001, 12 - 1, 13 ), "Parse date yy-oo" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "oo yy", "348 2004" ), new Date( 2004, 12 - 1, 13 ), "Parse date oo yy" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "D d M y", "Sat 3 Feb 01" ), new Date( 2001, 2 - 1, 3 ), "Parse date D d M y" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "d MM DD yy", "3 February Saturday 2001" ), new Date( 2001, 2 - 1, 3 ), "Parse date dd MM DD yy" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "DD, MM d, yy", "Saturday, February 3, 2001" ), new Date( 2001, 2 - 1, 3 ), "Parse date DD, MM d, yy" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "'day' d 'of' MM (''DD''), yy", "day 3 of February ('Saturday'), 2001" ), new Date( 2001, 2 - 1, 3 ), "Parse date 'day' d 'of' MM (''DD''), yy" ); currentYear = new Date().getFullYear(); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", ( currentYear - 2000 ) + "-02-03" ), new Date( currentYear, 2 - 1, 3 ), "Parse date y-m-d - default cutuff" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", ( currentYear - 2000 + 10 ) + "-02-03" ), new Date( currentYear + 10, 2 - 1, 3 ), "Parse date y-m-d - default cutuff" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", ( currentYear - 2000 + 11 ) + "-02-03" ), new Date( currentYear - 89, 2 - 1, 3 ), "Parse date y-m-d - default cutuff" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", "80-02-03", { shortYearCutoff: 80 } ), new Date( 2080, 2 - 1, 3 ), "Parse date y-m-d - cutoff 80" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", "81-02-03", { shortYearCutoff: 80 } ), new Date( 1981, 2 - 1, 3 ), "Parse date y-m-d - cutoff 80" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", ( currentYear - 2000 + 60 ) + "-02-03", { shortYearCutoff: "+60" } ), new Date( currentYear + 60, 2 - 1, 3 ), "Parse date y-m-d - cutoff +60" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "y-m-d", ( currentYear - 2000 + 61 ) + "-02-03", { shortYearCutoff: "+60" } ), new Date( currentYear - 39, 2 - 1, 3 ), "Parse date y-m-d - cutoff +60" ); gmtDate = new Date( 2001, 2 - 1, 3 ); gmtDate.setMinutes( gmtDate.getMinutes() - gmtDate.getTimezoneOffset() ); testHelper.equalsDate( assert, $.datepicker.parseDate( "@", "981158400000" ), gmtDate, "Parse date @" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "!", "631167552000000000" ), gmtDate, "Parse date !" ); fr = $.datepicker.regional.fr; settings = { dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames }; testHelper.equalsDate( assert, $.datepicker.parseDate( "D d M y", "Lun. 9 avr. 01", settings ), new Date( 2001, 4 - 1, 9 ), "Parse date D M y with settings" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "d MM DD yy", "9 Avril Lundi 2001", settings ), new Date( 2001, 4 - 1, 9 ), "Parse date d MM DD yy with settings" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "DD, MM d, yy", "Lundi, Avril 9, 2001", settings ), new Date( 2001, 4 - 1, 9 ), "Parse date DD, MM d, yy with settings" ); testHelper.equalsDate( assert, $.datepicker.parseDate( "'jour' d 'de' MM (''DD''), yy", "jour 9 de Avril ('Lundi'), 2001", settings ), new Date( 2001, 4 - 1, 9 ), "Parse date 'jour' d 'de' MM (''DD''), yy with settings" ); zh = $.datepicker.regional[ "zh-CN" ]; testHelper.equalsDate( assert, $.datepicker.parseDate( "yy M d", "2011 十一月 22", zh ), new Date( 2011, 11 - 1, 22 ), "Parse date yy M d with zh-CN" ); } ); QUnit.test( "parseDateErrors", function( assert ) { assert.expect( 18 ); testHelper.init( "#inp" ); var fr, settings; function expectError( expr, value, error ) { try { expr(); assert.ok( false, "Parsed error " + value ); } catch ( e ) { assert.equal( e, error, "Parsed error " + value ); } } expectError( function() { $.datepicker.parseDate( null, "Sat 2 01" ); }, "Sat 2 01", "Invalid arguments" ); expectError( function() { $.datepicker.parseDate( "d m y", null ); }, "null", "Invalid arguments" ); expectError( function() { $.datepicker.parseDate( "d m y", "Sat 2 01" ); }, "Sat 2 01 - d m y", "Missing number at position 0" ); expectError( function() { $.datepicker.parseDate( "dd mm yy", "Sat 2 01" ); }, "Sat 2 01 - dd mm yy", "Missing number at position 0" ); expectError( function() { $.datepicker.parseDate( "d m y", "3 Feb 01" ); }, "3 Feb 01 - d m y", "Missing number at position 2" ); expectError( function() { $.datepicker.parseDate( "dd mm yy", "3 Feb 01" ); }, "3 Feb 01 - dd mm yy", "Missing number at position 2" ); expectError( function() { $.datepicker.parseDate( "mm dd yy", "2 1 01" ); }, "2 1 01 - dd mm yy", "Missing number at position 4" ); expectError( function() { $.datepicker.parseDate( "d m y", "3 2 AD01" ); }, "3 2 AD01 - d m y", "Missing number at position 4" ); expectError( function() { $.datepicker.parseDate( "d m yy", "3 2 AD01" ); }, "3 2 AD01 - dd mm yy", "Missing number at position 4" ); expectError( function() { $.datepicker.parseDate( "y-o", "01-D01" ); }, "2001-D01 - y-o", "Missing number at position 3" ); expectError( function() { $.datepicker.parseDate( "yy-oo", "2001-D01" ); }, "2001-D01 - yy-oo", "Missing number at position 5" ); expectError( function() { $.datepicker.parseDate( "D d M y", "D7 3 Feb 01" ); }, "D7 3 Feb 01 - D d M y", "Unknown name at position 0" ); expectError( function() { $.datepicker.parseDate( "D d M y", "Sat 3 M2 01" ); }, "Sat 3 M2 01 - D d M y", "Unknown name at position 6" ); expectError( function() { $.datepicker.parseDate( "DD, MM d, yy", "Saturday- Feb 3, 2001" ); }, "Saturday- Feb 3, 2001 - DD, MM d, yy", "Unexpected literal at position 8" ); expectError( function() { $.datepicker.parseDate( "'day' d 'of' MM (''DD''), yy", "day 3 of February (\"Saturday\"), 2001" ); }, "day 3 of Mon2 ('Day7'), 2001", "Unexpected literal at position 19" ); expectError( function() { $.datepicker.parseDate( "d m y", "29 2 01" ); }, "29 2 01 - d m y", "Invalid date" ); fr = $.datepicker.regional.fr; settings = { dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames }; expectError( function() { $.datepicker.parseDate( "D d M y", "Mon 9 Avr 01", settings ); }, "Mon 9 Avr 01 - D d M y", "Unknown name at position 0" ); expectError( function() { $.datepicker.parseDate( "D d M y", "Lun. 9 Apr 01", settings ); }, "Lun. 9 Apr 01 - D d M y", "Unknown name at position 7" ); } ); QUnit.test( "Ticket #7244: date parser does not fail when too many numbers are passed into the date function", function( assert ) { assert.expect( 4 ); var date; try { date = $.datepicker.parseDate( "dd/mm/yy", "18/04/19881" ); assert.ok( false, "Did not properly detect an invalid date" ); }catch ( e ) { assert.ok( "invalid date detected" ); } try { date = $.datepicker.parseDate( "dd/mm/yy", "18/04/1988 @ 2:43 pm" ); assert.equal( date.getDate(), 18 ); assert.equal( date.getMonth(), 3 ); assert.equal( date.getFullYear(), 1988 ); } catch ( e ) { assert.ok( false, "Did not properly parse date with extra text separated by whitespace" ); } } ); QUnit.test( "formatDate", function( assert ) { assert.expect( 16 ); testHelper.init( "#inp" ); var gmtDate, fr, settings; assert.equal( $.datepicker.formatDate( "d m y", new Date( 2001, 2 - 1, 3 ) ), "3 2 01", "Format date d m y" ); assert.equal( $.datepicker.formatDate( "dd mm yy", new Date( 2001, 2 - 1, 3 ) ), "03 02 2001", "Format date dd mm yy" ); assert.equal( $.datepicker.formatDate( "d m y", new Date( 2001, 12 - 1, 13 ) ), "13 12 01", "Format date d m y" ); assert.equal( $.datepicker.formatDate( "dd mm yy", new Date( 2001, 12 - 1, 13 ) ), "13 12 2001", "Format date dd mm yy" ); assert.equal( $.datepicker.formatDate( "yy-o", new Date( 2001, 2 - 1, 3 ) ), "2001-34", "Format date yy-o" ); assert.equal( $.datepicker.formatDate( "yy-oo", new Date( 2001, 2 - 1, 3 ) ), "2001-034", "Format date yy-oo" ); assert.equal( $.datepicker.formatDate( "D M y", new Date( 2001, 2 - 1, 3 ) ), "Sat Feb 01", "Format date D M y" ); assert.equal( $.datepicker.formatDate( "DD MM yy", new Date( 2001, 2 - 1, 3 ) ), "Saturday February 2001", "Format date DD MM yy" ); assert.equal( $.datepicker.formatDate( "DD, MM d, yy", new Date( 2001, 2 - 1, 3 ) ), "Saturday, February 3, 2001", "Format date DD, MM d, yy" ); assert.equal( $.datepicker.formatDate( "'day' d 'of' MM (''DD''), yy", new Date( 2001, 2 - 1, 3 ) ), "day 3 of February ('Saturday'), 2001", "Format date 'day' d 'of' MM ('DD'), yy" ); gmtDate = new Date( 2001, 2 - 1, 3 ); gmtDate.setMinutes( gmtDate.getMinutes() - gmtDate.getTimezoneOffset() ); assert.equal( $.datepicker.formatDate( "@", gmtDate ), "981158400000", "Format date @" ); assert.equal( $.datepicker.formatDate( "!", gmtDate ), "631167552000000000", "Format date !" ); fr = $.datepicker.regional.fr; settings = { dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames }; assert.equal( $.datepicker.formatDate( "D M y", new Date( 2001, 4 - 1, 9 ), settings ), "lun. avr. 01", "Format date D M y with settings" ); assert.equal( $.datepicker.formatDate( "DD MM yy", new Date( 2001, 4 - 1, 9 ), settings ), "lundi avril 2001", "Format date DD MM yy with settings" ); assert.equal( $.datepicker.formatDate( "DD, MM d, yy", new Date( 2001, 4 - 1, 9 ), settings ), "lundi, avril 9, 2001", "Format date DD, MM d, yy with settings" ); assert.equal( $.datepicker.formatDate( "'jour' d 'de' MM (''DD''), yy", new Date( 2001, 4 - 1, 9 ), settings ), "jour 9 de avril ('lundi'), 2001", "Format date 'jour' d 'de' MM (''DD''), yy with settings" ); } ); // TODO: Fix this test so it isn't mysteriously flaky in Browserstack on certain OS/Browser combos // test("Ticket 6827: formatDate day of year calculation is wrong during day lights savings time", function(){ // expect( 1 ); // var time = $.datepicker.formatDate("oo", new Date("2010/03/30 12:00:00 CDT")); // equal(time, "089"); // }); QUnit.test( "Ticket 7602: Stop datepicker from appearing with beforeShow event handler", function( assert ) { assert.expect( 3 ); var inp, dp; inp = testHelper.init( "#inp", { beforeShow: function() { } } ); dp = $( "#ui-datepicker-div" ); inp.datepicker( "show" ); assert.equal( dp.css( "display" ), "block", "beforeShow returns nothing" ); inp.datepicker( "hide" ).datepicker( "destroy" ); inp = testHelper.init( "#inp", { beforeShow: function() { return true; } } ); dp = $( "#ui-datepicker-div" ); inp.datepicker( "show" ); assert.equal( dp.css( "display" ), "block", "beforeShow returns true" ); inp.datepicker( "hide" ); inp.datepicker( "destroy" ); inp = testHelper.init( "#inp", { beforeShow: function() { return false; } } ); dp = $( "#ui-datepicker-div" ); inp.datepicker( "show" ); assert.equal( dp.css( "display" ), "none", "beforeShow returns false" ); inp.datepicker( "destroy" ); } ); } ); jquery-ui-1.12.1/tests/unit/dialog/000077500000000000000000000000001276627555100171265ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/dialog/all.html000066400000000000000000000011761276627555100205710ustar00rootroot00000000000000 jQuery UI Dialog Test Suite
    jquery-ui-1.12.1/tests/unit/dialog/common-deprecated.js000066400000000000000000000016121276627555100230520ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/dialog" ], function( common ) { common.testWidget( "dialog", { defaults: { appendTo: "body", autoOpen: true, buttons: [], classes: { "ui-dialog": "ui-corner-all", "ui-dialog-titlebar": "ui-corner-all" }, closeOnEscape: true, closeText: "Close", dialogClass: "", disabled: false, draggable: true, height: "auto", hide: null, maxHeight: null, maxWidth: null, minHeight: 150, minWidth: 150, modal: false, position: { my: "center", at: "center", of: window, collision: "fit", using: $.ui.dialog.prototype.options.position.using }, resizable: true, show: null, title: null, width: 300, // Callbacks beforeClose: null, close: null, create: null, drag: null, dragStart: null, dragStop: null, focus: null, open: null, resize: null, resizeStart: null, resizeStop: null } } ); } ); jquery-ui-1.12.1/tests/unit/dialog/common.js000066400000000000000000000015671276627555100207650ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/dialog" ], function( common ) { common.testWidget( "dialog", { defaults: { appendTo: "body", autoOpen: true, buttons: [], classes: { "ui-dialog": "ui-corner-all", "ui-dialog-titlebar": "ui-corner-all" }, closeOnEscape: true, closeText: "Close", disabled: false, draggable: true, height: "auto", hide: null, maxHeight: null, maxWidth: null, minHeight: 150, minWidth: 150, modal: false, position: { my: "center", at: "center", of: window, collision: "fit", using: $.ui.dialog.prototype.options.position.using }, resizable: true, show: null, title: null, width: 300, // Callbacks beforeClose: null, close: null, create: null, drag: null, dragStart: null, dragStop: null, focus: null, open: null, resize: null, resizeStart: null, resizeStop: null } } ); } ); jquery-ui-1.12.1/tests/unit/dialog/core.js000066400000000000000000000235511276627555100204220ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/dialog" ], function( QUnit, $ ) { // TODO add teardown callback to remove dialogs QUnit.module( "dialog: core" ); QUnit.test( "markup structure", function( assert ) { assert.expect( 11 ); var element = $( "
    " ).dialog( { buttons: [ { text: "Ok", click: $.noop } ] } ), widget = element.dialog( "widget" ), titlebar = widget.find( ".ui-dialog-titlebar" ), title = titlebar.find( ".ui-dialog-title" ), close = titlebar.find( ".ui-dialog-titlebar-close" ), buttonpane = widget.find( ".ui-dialog-buttonpane" ), buttonset = widget.find( ".ui-dialog-buttonset" ), buttons = buttonset.find( ".ui-button" ); assert.hasClasses( widget, "ui-dialog ui-dialog-buttons ui-widget ui-widget-content" ); assert.hasClasses( titlebar, "ui-dialog-titlebar ui-widget-header" ); assert.equal( titlebar.length, 1, "Dialog has exactly one titlebar" ); assert.hasClasses( close, "ui-dialog-titlebar-close ui-widget" ); assert.equal( close.length, 1, "Titlebar has exactly one close button" ); assert.equal( title.length, 1, "Titlebar has exactly one title" ); assert.hasClasses( element, "ui-dialog-content ui-widget-content" ); assert.hasClasses( buttonpane, "ui-dialog-buttonpane ui-widget-content" ); assert.equal( buttonpane.length, 1, "Dialog has exactly one buttonpane" ); assert.equal( buttonset.length, 1, "Buttonpane has exactly one buttonset" ); assert.equal( buttons.length, 1, "Buttonset contains exactly 1 button when created with 1" ); } ); QUnit.test( "markup structure - no buttons", function( assert ) { assert.expect( 7 ); var element = $( "
    " ).dialog(), widget = element.dialog( "widget" ), titlebar = widget.find( ".ui-dialog-titlebar" ), title = titlebar.find( ".ui-dialog-title" ), close = titlebar.find( ".ui-dialog-titlebar-close" ); assert.hasClasses( widget, "ui-dialog ui-widget ui-widget-content" ); assert.hasClasses( titlebar, "ui-dialog-titlebar ui-widget-header" ); assert.equal( titlebar.length, 1, "Dialog has exactly one titlebar" ); assert.hasClasses( close, "ui-dialog-titlebar-close ui-widget" ); assert.equal( close.length, 1, "Titlebar has exactly one close button" ); assert.equal( title.length, 1, "Titlebar has exactly one title" ); assert.hasClasses( element, "ui-dialog-content ui-widget-content" ); } ); QUnit.test( "title id", function( assert ) { assert.expect( 1 ); var titleId, element = $( "
    " ).dialog(); titleId = element.dialog( "widget" ).find( ".ui-dialog-title" ).attr( "id" ); assert.ok( /ui-id-\d+$/.test( titleId ), "auto-numbered title id" ); element.remove(); } ); QUnit.test( "ARIA", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog(), wrapper = element.dialog( "widget" ); assert.equal( wrapper.attr( "role" ), "dialog", "dialog role" ); assert.equal( wrapper.attr( "aria-labelledby" ), wrapper.find( ".ui-dialog-title" ).attr( "id" ) ); assert.equal( wrapper.attr( "aria-describedby" ), element.attr( "id" ), "aria-describedby added" ); element.remove(); element = $( "

    descriotion

    " ).dialog(); assert.equal( element.dialog( "widget" ).attr( "aria-describedby" ), null, "no aria-describedby added, as already present in markup" ); element.remove(); } ); QUnit.test( "widget method", function( assert ) { assert.expect( 1 ); var dialog = $( "
    " ).appendTo( "#qunit-fixture" ).dialog(); assert.deepEqual( dialog.parent()[ 0 ], dialog.dialog( "widget" )[ 0 ] ); dialog.remove(); } ); QUnit.test( "focus tabbable", function( assert ) { var ready = assert.async(); assert.expect( 8 ); var element, options = { buttons: [ { text: "Ok", click: $.noop } ] }; function checkFocus( markup, options, testFn, next ) { // Support: IE8 // For some reason the focus doesn't get set properly if we don't // focus the body first. $( "body" ).trigger( "focus" ); element = $( markup ).dialog( options ); setTimeout( function() { testFn( function done() { element.remove(); setTimeout( next ); } ); } ); } function step1() { checkFocus( "
    ", options, function( done ) { var input = element.find( "input:last" ).trigger( "focus" ).trigger( "blur" ); element.dialog( "instance" )._focusTabbable(); setTimeout( function() { assert.equal( document.activeElement, input[ 0 ], "1. an element that was focused previously." ); done(); } ); }, step2 ); } function step2() { checkFocus( "
    ", options, function( done ) { assert.equal( document.activeElement, element.find( "input" )[ 1 ], "2. first element inside the dialog matching [autofocus]" ); done(); }, step3 ); } function step3() { checkFocus( "
    ", options, function( done ) { assert.equal( document.activeElement, element.find( "input" )[ 0 ], "3. tabbable element inside the content element" ); done(); }, step4 ); } function step4() { checkFocus( "
    text
    ", options, function( done ) { assert.equal( document.activeElement, element.dialog( "widget" ).find( ".ui-dialog-buttonpane button" )[ 0 ], "4. tabbable element inside the buttonpane" ); done(); }, step5 ); } function step5() { checkFocus( "
    text
    ", {}, function( done ) { assert.equal( document.activeElement, element.dialog( "widget" ).find( ".ui-dialog-titlebar .ui-dialog-titlebar-close" )[ 0 ], "5. the close button" ); done(); }, step6 ); } function step6() { checkFocus( "
    text
    ", { autoOpen: false }, function( done ) { element.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).hide(); element.dialog( "open" ); setTimeout( function() { assert.equal( document.activeElement, element.parent()[ 0 ], "6. the dialog itself" ); done(); } ); }, step7 ); } function step7() { checkFocus( "
    ", { open: function() { var inputs = $( this ).find( "input" ); inputs.last().on( "keydown", function( event ) { event.preventDefault(); inputs.first().trigger( "focus" ); } ); } }, function( done ) { var inputs = element.find( "input" ); assert.equal ( document.activeElement, inputs[ 1 ], "Focus starts on second input" ); inputs.last().simulate( "keydown", { keyCode: $.ui.keyCode.TAB } ); setTimeout( function() { assert.equal( document.activeElement, inputs[ 0 ], "Honor preventDefault, allowing custom focus management" ); done(); }, 50 ); }, ready ); } step1(); } ); QUnit.test( "#7960: resizable handles below modal overlays", function( assert ) { assert.expect( 1 ); var resizable = $( "
    " ).resizable(), dialog = $( "
    " ).dialog( { modal: true } ), resizableZindex = parseInt( resizable.find( ".ui-resizable-handle" ).css( "zIndex" ), 10 ), overlayZindex = parseInt( $( ".ui-widget-overlay" ).css( "zIndex" ), 10 ); assert.ok( resizableZindex < overlayZindex, "Resizable handles have lower z-index than modal overlay" ); dialog.dialog( "destroy" ); } ); QUnit.test( "Prevent tabbing out of dialogs", function( assert ) { var ready = assert.async(); assert.expect( 3 ); var element = $( "
    " ).dialog(), inputs = element.find( "input" ); // Remove close button to test focus on just the two buttons element.dialog( "widget" ).find( ".ui-button" ).remove(); function checkTab() { assert.equal( document.activeElement, inputs[ 0 ], "Tab key event move d focus within the modal" ); // Check shift tab $( document.activeElement ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB, shiftKey: true } ); setTimeout( checkShiftTab ); } function checkShiftTab() { assert.equal( document.activeElement, inputs[ 1 ], "Shift-Tab key event moved focus back to second input" ); element.remove(); setTimeout( ready ); } inputs[ 1 ].focus(); setTimeout( function() { assert.equal( document.activeElement, inputs[ 1 ], "Focus set on second input" ); inputs.eq( 1 ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB } ); setTimeout( checkTab ); } ); } ); QUnit.test( "#9048: multiple modal dialogs opened and closed in different order", function( assert ) { var ready = assert.async(); assert.expect( 1 ); $( "#dialog1, #dialog2" ).dialog( { autoOpen: false, modal:true } ); $( "#dialog1" ).dialog( "open" ); $( "#dialog2" ).dialog( "open" ); $( "#dialog1" ).dialog( "close" ); setTimeout( function() { $( "#dialog2" ).dialog( "close" ); $( "#favorite-animal" ).trigger( "focus" ); assert.ok( true, "event handlers cleaned up (no errors thrown)" ); ready(); } ); } ); QUnit.test( "interaction between overlay and other dialogs", function( assert ) { var ready = assert.async(); $.widget( "ui.testWidget", $.ui.dialog, { options: { modal: true, autoOpen: false } } ); assert.expect( 2 ); var first = $( "
    " ).dialog( { modal: true } ), firstInput = first.find( "input" ), second = $( "
    " ).testWidget(), secondInput = second.find( "input" ); // Support: IE8 // For some reason the focus doesn't get set properly if we don't // focus the body first. $( "body" ).trigger( "focus" ); // Wait for the modal to init setTimeout( function() { second. testWidget ( "open" ); // Simulate user tabbing from address bar to an element outside the dialog $( "#favorite-animal" ).trigger( "focus" ); setTimeout( function() { assert.equal( document.activeElement, secondInput[ 0 ] ); // Last active dialog must receive focus firstInput.trigger( "focus" ); $( "#favorite-animal" ).trigger( "focus" ); setTimeout( function() { assert.equal( document.activeElement, firstInput[ 0 ] ); // Cleanup first.remove(); second.remove(); delete $.ui.testWidget; delete $.fn.testWidget; ready(); } ); } ); } ); } ); } ); jquery-ui-1.12.1/tests/unit/dialog/deprecated.html000066400000000000000000000022301276627555100221110ustar00rootroot00000000000000 jQuery UI Dialog Test Suite
    ...
    Please share some personal information

    Some more (optional) information

    jquery-ui-1.12.1/tests/unit/dialog/deprecated.js000066400000000000000000000036371276627555100215750ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/dialog" ], function( QUnit, $ ) { QUnit.module( "dialog (deprecated): options" ); QUnit.test( "dialogClass", function( assert ) { assert.expect( 5 ); var element = $( "
    " ).dialog(), widget = element.dialog( "widget" ); assert.lacksClasses( widget, "foo", "dialogClass not specified. class not added" ); element.remove(); element = $( "
    " ).dialog( { dialogClass: "foo" } ); widget = element.dialog( "widget" ); assert.hasClasses( widget, "foo", "dialogClass in init, foo class added" ); element.dialog( "option", "dialogClass", "foobar" ); assert.lacksClasses( widget, "foo", "dialogClass changed, previous one was removed" ); assert.hasClasses( widget, "foobar", "dialogClass changed, new one was added" ); element.remove(); element = $( "
    " ).dialog( { dialogClass: "foo bar" } ); widget = element.dialog( "widget" ); assert.hasClasses( widget, "foo bar", "dialogClass in init, two classes." ); element.remove(); } ); QUnit.test( "buttons - deprecated options", function( assert ) { assert.expect( 7 ); var buttons, element = $( "
    " ).dialog( { buttons: [ { html: "a button", "class": "additional-class", id: "my-button-id", click: function() { assert.equal( this, element[ 0 ], "correct context" ); }, icons: { primary: "ui-icon-cancel" }, text: false } ] } ); buttons = element.dialog( "widget" ).find( ".ui-dialog-buttonpane button" ); assert.equal( buttons.length, 1, "correct number of buttons" ); assert.equal( buttons.attr( "id" ), "my-button-id", "correct id" ); assert.equal( $.trim( buttons.text() ), "a button", "correct label" ); assert.hasClasses( buttons, "additional-class" ); assert.deepEqual( buttons.button( "option", "icon" ), "ui-icon-cancel" ); assert.equal( buttons.button( "option", "showLabel" ), false ); buttons.trigger( "click" ); element.remove(); } ); } ); jquery-ui-1.12.1/tests/unit/dialog/dialog.html000066400000000000000000000022341276627555100212540ustar00rootroot00000000000000 jQuery UI Dialog Test Suite
    ...
    Please share some personal information

    Some more (optional) information

    jquery-ui-1.12.1/tests/unit/dialog/events.js000066400000000000000000000327061276627555100210000ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/dialog" ], function( QUnit, $, testHelper ) { QUnit.module( "dialog: events" ); QUnit.test( "open", function( assert ) { assert.expect( 13 ); var element = $( "
    " ); element.dialog( { open: function( ev, ui ) { assert.ok( element.dialog( "instance" )._isOpen, "interal _isOpen flag is set" ); assert.ok( true, "autoOpen: true fires open callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogopen", "event type in callback" ); assert.deepEqual( ui, {}, "ui hash in callback" ); } } ); element.remove(); element = $( "
    " ); element.dialog( { autoOpen: false, open: function( ev, ui ) { assert.ok( true, ".dialog('open') fires open callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogopen", "event type in callback" ); assert.deepEqual( ui, {}, "ui hash in callback" ); } } ).on( "dialogopen", function( ev, ui ) { assert.ok( element.dialog( "instance" )._isOpen, "interal _isOpen flag is set" ); assert.ok( true, "dialog('open') fires open event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.deepEqual( ui, {}, "ui hash in event" ); } ); element.dialog( "open" ); element.remove(); } ); QUnit.test( "focus", function( assert ) { assert.expect( 5 ); var element, other; element = $( "#dialog1" ).dialog( { autoOpen: false } ); other = $( "#dialog2" ).dialog( { autoOpen: false } ); element.one( "dialogopen", function() { assert.ok( true, "open, just once" ); } ); element.one( "dialogfocus", function() { assert.ok( true, "focus on open" ); } ); other.dialog( "open" ); element.one( "dialogfocus", function() { assert.ok( true, "when opening and already open and wasn't on top" ); } ); other.dialog( "open" ); element.dialog( "open" ); element.one( "dialogfocus", function() { assert.ok( true, "when calling moveToTop and wasn't on top" ); } ); other.dialog( "moveToTop" ); element.dialog( "moveToTop" ); element.on( "dialogfocus", function() { assert.ok( true, "when mousedown anywhere on the dialog and it wasn't on top" ); } ); other.dialog( "moveToTop" ); element.trigger( "mousedown" ); // Triggers just once when already on top element.dialog( "open" ); element.dialog( "moveToTop" ); element.trigger( "mousedown" ); element.add( other ).remove(); } ); QUnit.test( "dragStart", function( assert ) { assert.expect( 9 ); var handle, element = $( "
    " ).dialog( { dragStart: function( ev, ui ) { assert.ok( true, "dragging fires dragStart callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogdragstart", "event type in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.offset !== undefined, "ui.offset in callback" ); } } ).on( "dialogdragstart", function( ev, ui ) { assert.ok( true, "dragging fires dialogdragstart event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.offset !== undefined, "ui.offset in callback" ); } ); handle = $( ".ui-dialog-titlebar", element.dialog( "widget" ) ); testHelper.drag( element, handle, 50, 50 ); element.remove(); } ); QUnit.test( "drag", function( assert ) { assert.expect( 9 ); var handle, hasDragged = false, element = $( "
    " ).dialog( { drag: function( ev, ui ) { if ( !hasDragged ) { assert.ok( true, "dragging fires drag callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogdrag", "event type in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.offset !== undefined, "ui.offset in callback" ); hasDragged = true; } } } ).one( "dialogdrag", function( ev, ui ) { assert.ok( true, "dragging fires dialogdrag event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.offset !== undefined, "ui.offset in callback" ); } ); handle = $( ".ui-dialog-titlebar", element.dialog( "widget" ) ); testHelper.drag( element, handle, 50, 50 ); element.remove(); } ); QUnit.test( "dragStop", function( assert ) { assert.expect( 9 ); var handle, element = $( "
    " ).dialog( { dragStop: function( ev, ui ) { assert.ok( true, "dragging fires dragStop callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogdragstop", "event type in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.offset !== undefined, "ui.offset in callback" ); } } ).on( "dialogdragstop", function( ev, ui ) { assert.ok( true, "dragging fires dialogdragstop event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.offset !== undefined, "ui.offset in callback" ); } ); handle = $( ".ui-dialog-titlebar", element.dialog( "widget" ) ); testHelper.drag( element, handle, 50, 50 ); element.remove(); } ); QUnit.test( "resizeStart", function( assert ) { assert.expect( 13 ); var handle, element = $( "
    " ).dialog( { resizeStart: function( ev, ui ) { assert.ok( true, "resizing fires resizeStart callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogresizestart", "event type in callback" ); assert.ok( ui.originalPosition !== undefined, "ui.originalPosition in callback" ); assert.ok( ui.originalSize !== undefined, "ui.originalSize in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.size !== undefined, "ui.size in callback" ); } } ).on( "dialogresizestart", function( ev, ui ) { assert.ok( true, "resizing fires dialogresizestart event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.ok( ui.originalPosition !== undefined, "ui.originalPosition in callback" ); assert.ok( ui.originalSize !== undefined, "ui.originalSize in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.size !== undefined, "ui.size in callback" ); } ); handle = $( ".ui-resizable-se", element.dialog( "widget" ) ); testHelper.drag( element, handle, 50, 50 ); element.remove(); } ); QUnit.test( "resize", function( assert ) { assert.expect( 13 ); var handle, hasResized = false, element = $( "
    " ).dialog( { resize: function( ev, ui ) { if ( !hasResized ) { assert.ok( true, "resizing fires resize callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogresize", "event type in callback" ); assert.ok( ui.originalPosition !== undefined, "ui.originalPosition in callback" ); assert.ok( ui.originalSize !== undefined, "ui.originalSize in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.size !== undefined, "ui.size in callback" ); hasResized = true; } } } ).one( "dialogresize", function( ev, ui ) { assert.ok( true, "resizing fires dialogresize event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.ok( ui.originalPosition !== undefined, "ui.originalPosition in callback" ); assert.ok( ui.originalSize !== undefined, "ui.originalSize in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.size !== undefined, "ui.size in callback" ); } ); handle = $( ".ui-resizable-se", element.dialog( "widget" ) ); testHelper.drag( element, handle, 50, 50 ); element.remove(); } ); QUnit.test( "resizeStop", function( assert ) { assert.expect( 13 ); var handle, element = $( "
    " ).dialog( { resizeStop: function( ev, ui ) { assert.ok( true, "resizing fires resizeStop callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogresizestop", "event type in callback" ); assert.ok( ui.originalPosition !== undefined, "ui.originalPosition in callback" ); assert.ok( ui.originalSize !== undefined, "ui.originalSize in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.size !== undefined, "ui.size in callback" ); } } ).on( "dialogresizestop", function( ev, ui ) { assert.ok( true, "resizing fires dialogresizestop event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.ok( ui.originalPosition !== undefined, "ui.originalPosition in callback" ); assert.ok( ui.originalSize !== undefined, "ui.originalSize in callback" ); assert.ok( ui.position !== undefined, "ui.position in callback" ); assert.ok( ui.size !== undefined, "ui.size in callback" ); } ); handle = $( ".ui-resizable-se", element.dialog( "widget" ) ); testHelper.drag( element, handle, 50, 50 ); element.remove(); } ); QUnit.test( "close", function( assert ) { var ready = assert.async(); assert.expect( 14 ); var element = $( "
    " ).dialog( { close: function( ev, ui ) { assert.ok( true, ".dialog('close') fires close callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogclose", "event type in callback" ); assert.deepEqual( ui, {}, "ui hash in callback" ); } } ).on( "dialogclose", function( ev, ui ) { assert.ok( true, ".dialog('close') fires dialogclose event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.deepEqual( ui, {}, "ui hash in event" ); } ); element.dialog( "close" ); element.remove(); // Close event with an effect element = $( "
    " ).dialog( { hide: 10, close: function( ev, ui ) { assert.ok( true, ".dialog('close') fires close callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogclose", "event type in callback" ); assert.deepEqual( ui, {}, "ui hash in callback" ); ready(); } } ).on( "dialogclose", function( ev, ui ) { assert.ok( true, ".dialog('close') fires dialogclose event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.deepEqual( ui, {}, "ui hash in event" ); } ); element.dialog( "close" ); } ); QUnit.test( "beforeClose", function( assert ) { assert.expect( 14 ); var element = $( "
    " ).dialog( { beforeClose: function( ev, ui ) { assert.ok( true, ".dialog('close') fires beforeClose callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogbeforeclose", "event type in callback" ); assert.deepEqual( ui, {}, "ui hash in callback" ); return false; } } ); element.dialog( "close" ); assert.ok( element.dialog( "widget" ).is( ":visible" ), "beforeClose callback should prevent dialog from closing" ); element.remove(); element = $( "
    " ).dialog(); element.dialog( "option", "beforeClose", function( ev, ui ) { assert.ok( true, ".dialog('close') fires beforeClose callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.type, "dialogbeforeclose", "event type in callback" ); assert.deepEqual( ui, {}, "ui hash in callback" ); return false; } ); element.dialog( "close" ); assert.ok( element.dialog( "widget" ).is( ":visible" ), "beforeClose callback should prevent dialog from closing" ); element.remove(); element = $( "
    " ).dialog().on( "dialogbeforeclose", function( ev, ui ) { assert.ok( true, ".dialog('close') triggers dialogbeforeclose event" ); assert.equal( this, element[ 0 ], "context of event" ); assert.deepEqual( ui, {}, "ui hash in event" ); return false; } ); element.dialog( "close" ); assert.ok( element.dialog( "widget" ).is( ":visible" ), "dialogbeforeclose event should prevent dialog from closing" ); element.remove(); } ); // #8789 and #8838 QUnit.test( "ensure dialog's container doesn't scroll on resize and focus", function( assert ) { var ready = assert.async(); assert.expect( 2 ); var element = $( "#dialog1" ).dialog(), initialScroll = $( window ).scrollTop(); element.dialog( "option", "height", 600 ); assert.equal( $( window ).scrollTop(), initialScroll, "scroll hasn't moved after height change" ); setTimeout( function() { $( ".ui-dialog-titlebar-close" ).simulate( "mousedown" ); assert.equal( $( window ).scrollTop(), initialScroll, "scroll hasn't moved after focus moved to dialog" ); element.dialog( "destroy" ); ready(); } ); } ); QUnit.test( "#5184: isOpen in dialogclose event is true", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog( { close: function() { assert.ok( !element.dialog( "isOpen" ), "dialog is not open during close" ); } } ); assert.ok( element.dialog( "isOpen" ), "dialog is open after init" ); element.dialog( "close" ); assert.ok( !element.dialog( "isOpen" ), "dialog is not open after close" ); element.remove(); } ); QUnit.test( "ensure dialog keeps focus when clicking modal overlay", function( assert ) { assert.expect( 2 ); var element = $( "
    " ).dialog( { modal: true } ); assert.equal( $( document.activeElement ).closest( ".ui-dialog" ).length, 1, "focus is in dialog" ); $( ".ui-widget-overlay" ).simulate( "mousedown" ); assert.equal( $( document.activeElement ).closest( ".ui-dialog" ).length, 1, "focus is still in dialog" ); element.remove(); } ); } ); jquery-ui-1.12.1/tests/unit/dialog/helper.js000066400000000000000000000032251276627555100207450ustar00rootroot00000000000000define( [ "qunit", "jquery", "lib/helper", "ui/widgets/dialog" ], function( QUnit, $, helper ) { return $.extend( helper, { drag: function( element, handle, dx, dy ) { var d = element.dialog( "widget" ); //This mouseover is to work around a limitation in resizable //TODO: fix resizable so handle doesn't require mouseover in order to be used $( handle, d ).simulate( "mouseover" ).simulate( "drag", { dx: dx, dy: dy } ); }, testDrag: function( assert, element, dx, dy, expectedDX, expectedDY, msg ) { var actualDX, actualDY, offsetAfter, d = element.dialog( "widget" ), handle = $( ".ui-dialog-titlebar", d ), offsetBefore = d.offset(); this.drag( element, handle, dx, dy ); offsetAfter = d.offset(); msg = msg ? msg + "." : ""; actualDX = offsetAfter.left - offsetBefore.left; actualDY = offsetAfter.top - offsetBefore.top; assert.ok( expectedDX - actualDX <= 1 && expectedDY - actualDY <= 1, "dragged[" + expectedDX + ", " + expectedDY + "] " + msg ); }, shouldResize: function( assert, element, dw, dh, msg ) { var actualDH, actualDW, heightAfter, widthAfter, d = element.dialog( "widget" ), handle = $( ".ui-resizable-se", d ), heightBefore = element.height(), widthBefore = element.width(); this.drag( element, handle, 50, 50 ); heightAfter = element.height(); widthAfter = element.width(); msg = msg ? msg + "." : ""; actualDH = heightAfter - heightBefore; actualDW = widthAfter - widthBefore; // TODO: Switch to assert.close(). // Also change the testDrag() helper. assert.ok( Math.abs( actualDH - dh ) <= 1 && Math.abs( actualDW - dw ) <= 1, "resized[50, 50] " + msg ); } } ); } ); jquery-ui-1.12.1/tests/unit/dialog/methods.js000066400000000000000000000234071276627555100211350ustar00rootroot00000000000000define( [ "qunit", "jquery", "ui/widgets/dialog" ], function( QUnit, $ ) { QUnit.module( "dialog: methods", { afterEach: function() { $( "body>.ui-dialog" ).remove(); } } ); QUnit.test( "init", function( assert ) { assert.expect( 6 ); $( "
    " ).appendTo( "body" ).dialog().remove(); assert.ok( true, ".dialog() called on element" ); $( [] ).dialog().remove(); assert.ok( true, ".dialog() called on empty collection" ); $( "
    " ).dialog().remove(); assert.ok( true, ".dialog() called on disconnected DOMElement - never connected" ); $( "
    " ).appendTo( "body" ).remove().dialog().remove(); assert.ok( true, ".dialog() called on disconnected DOMElement - removed" ); var element = $( "
    " ).dialog(); element.dialog( "option", "foo" ); element.remove(); assert.ok( true, "arbitrary option getter after init" ); $( "
    " ).dialog().dialog( "option", "foo", "bar" ).remove(); assert.ok( true, "arbitrary option setter after init" ); } ); QUnit.test( "destroy", function( assert ) { assert.expect( 17 ); var element, element2; $( "#dialog1, #form-dialog" ).hide(); assert.domEqual( "#dialog1", function() { var dialog = $( "#dialog1" ).dialog().dialog( "destroy" ); assert.equal( dialog.parent()[ 0 ], $( "#qunit-fixture" )[ 0 ] ); assert.equal( dialog.index(), 0 ); } ); assert.domEqual( "#form-dialog", function() { var dialog = $( "#form-dialog" ).dialog().dialog( "destroy" ); assert.equal( dialog.parent()[ 0 ], $( "#qunit-fixture" )[ 0 ] ); assert.equal( dialog.index(), 2 ); } ); // Ensure dimensions are restored (#8119) $( "#dialog1" ).show().css( { width: "400px", minHeight: "100px", height: "200px" } ); assert.domEqual( "#dialog1", function() { $( "#dialog1" ).dialog().dialog( "destroy" ); } ); // Don't throw errors when destroying a never opened modal dialog (#9004) $( "#dialog1" ).dialog( { autoOpen: false, modal: true } ).dialog( "destroy" ); assert.equal( $( ".ui-widget-overlay" ).length, 0, "overlay does not exist" ); assert.equal( $( document ).data( "ui-dialog-overlays" ), undefined, "ui-dialog-overlays equals the number of open overlays" ); element = $( "#dialog1" ).dialog( { modal: true } ), element2 = $( "#dialog2" ).dialog( { modal: true } ); assert.equal( $( ".ui-widget-overlay" ).length, 2, "overlays created when dialogs are open" ); assert.equal( $( document ).data( "ui-dialog-overlays" ), 2, "ui-dialog-overlays equals the number of open overlays" ); element.dialog( "close" ); assert.equal( $( ".ui-widget-overlay" ).length, 1, "overlay remains after closing one dialog" ); assert.equal( $( document ).data( "ui-dialog-overlays" ), 1, "ui-dialog-overlays equals the number of open overlays" ); element.dialog( "destroy" ); assert.equal( $( ".ui-widget-overlay" ).length, 1, "overlay remains after destroying one dialog" ); assert.equal( $( document ).data( "ui-dialog-overlays" ), 1, "ui-dialog-overlays equals the number of open overlays" ); element2.dialog( "destroy" ); assert.equal( $( ".ui-widget-overlay" ).length, 0, "overlays removed when all dialogs are destoryed" ); assert.equal( $( document ).data( "ui-dialog-overlays" ), undefined, "ui-dialog-overlays equals the number of open overlays" ); } ); QUnit.test( "#9000: Dialog leaves broken event handler after close/destroy in certain cases", function( assert ) { var ready = assert.async(); assert.expect( 1 ); $( "#dialog1" ).dialog( { modal:true } ).dialog( "close" ).dialog( "destroy" ); setTimeout( function() { $( "#favorite-animal" ).trigger( "focus" ); assert.ok( true, "close and destroy modal dialog before its really opened" ); ready(); } ); } ); QUnit.test( "#4980: Destroy should place element back in original DOM position", function( assert ) { assert.expect( 2 ); var container = $( "
    " ), modal = container.find( "#modal" ); modal.dialog(); assert.ok( !$.contains( container[ 0 ], modal[ 0 ] ), "dialog should move modal element to outside container element" ); modal.dialog( "destroy" ); assert.ok( $.contains( container[ 0 ], modal[ 0 ] ), "dialog(destroy) should place element back in original DOM position" ); } ); QUnit.test( "enable/disable disabled", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog(); element.dialog( "disable" ); assert.equal( element.dialog( "option", "disabled" ), false, "disable method doesn't do anything" ); assert.lacksClasses( element, "ui-dialog-disabled ui-state-disabled", "disable method doesn't add classes" ); assert.ok( !element.dialog( "widget" ).attr( "aria-disabled" ), "disable method doesn't add aria-disabled" ); } ); QUnit.test( "close", function( assert ) { assert.expect( 3 ); var element, expected = $( "
    " ).dialog(), actual = expected.dialog( "close" ); assert.equal( actual, expected, "close is chainable" ); element = $( "
    " ).dialog(); assert.ok( element.dialog( "widget" ).is( ":visible" ) && !element.dialog( "widget" ).is( ":hidden" ), "dialog visible before close method called" ); element.dialog( "close" ); assert.ok( element.dialog( "widget" ).is( ":hidden" ) && !element.dialog( "widget" ).is( ":visible" ), "dialog hidden after close method called" ); } ); QUnit.test( "isOpen", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog(); assert.equal( element.dialog( "isOpen" ), true, "dialog is open after init" ); element.dialog( "close" ); assert.equal( element.dialog( "isOpen" ), false, "dialog is closed" ); element.remove(); element = $( "
    " ).dialog( { autoOpen: false } ); assert.equal( element.dialog( "isOpen" ), false, "dialog is closed after init" ); element.dialog( "open" ); assert.equal( element.dialog( "isOpen" ), true, "dialog is open" ); element.remove(); } ); QUnit.test( "moveToTop", function( assert ) { assert.expect( 5 ); function order() { var actual = $( ".ui-dialog" ).map( function() { return +$( this ).css( "z-index" ); } ).get(); assert.deepEqual( actual, $.makeArray( arguments ) ); } var dialog1, dialog2, focusOn = "dialog1"; dialog1 = $( "#dialog1" ).dialog( { focus: function() { assert.equal( focusOn, "dialog1" ); } } ); focusOn = "dialog2"; dialog2 = $( "#dialog2" ).dialog( { focus: function() { assert.equal( focusOn, "dialog2" ); } } ); order( 100, 101 ); focusOn = "dialog1"; dialog1.dialog( "moveToTop" ); order( 102, 101 ); } ); QUnit.test( "moveToTop: content scroll stays intact", function( assert ) { assert.expect( 2 ); var otherDialog = $( "#dialog1" ).dialog(), scrollDialog = $( "#form-dialog" ).dialog( { height: 200 } ); scrollDialog.scrollTop( 50 ); assert.equal( scrollDialog.scrollTop(), 50 ); otherDialog.dialog( "moveToTop" ); assert.equal( scrollDialog.scrollTop(), 50 ); } ); QUnit.test( "open", function( assert ) { assert.expect( 3 ); var element, expected = $( "
    " ).dialog(), actual = expected.dialog( "open" ); assert.equal( actual, expected, "open is chainable" ); element = $( "
    " ).dialog( { autoOpen: false } ); assert.ok( element.dialog( "widget" ).is( ":hidden" ) && !element.dialog( "widget" ).is( ":visible" ), "dialog hidden before open method called" ); element.dialog( "open" ); assert.ok( element.dialog( "widget" ).is( ":visible" ) && !element.dialog( "widget" ).is( ":hidden" ), "dialog visible after open method called" ); } ); // http://bugs.jqueryui.com/ticket/6137 QUnit.test( "Ensure form elements don't reset when opening a dialog", function( assert ) { assert.expect( 2 ); var d1 = $( "
    " + "b
    " ).appendTo( "body" ).dialog( { autoOpen: false } ); d1.find( "#b" ).prop( "checked", true ); assert.equal( d1.find( "input:checked" ).val(), "b", "checkbox b is checked" ); d1.dialog( "open" ); assert.equal( d1.find( "input:checked" ).val(), "b", "checkbox b is checked" ); d1.remove(); } ); QUnit.test( "#8958: dialog can be opened while opening", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var element = $( "
    " ).dialog( { autoOpen: false, modal: true, open: function() { assert.equal( $( ".ui-widget-overlay" ).length, 1 ); ready(); } } ); // Support: IE8 // For some reason the #favorite-color input doesn't get focus if we don't // focus the body first, causing the test to hang. $( "body" ).trigger( "focus" ); $( "#favorite-animal" ) // We focus the input to start the test. Once it receives focus, the // dialog will open. Opening the dialog, will cause an element inside // the dialog to gain focus, thus blurring the input. .on( "focus", function() { element.dialog( "open" ); } ) // When the input blurs, the dialog is in the process of opening. We // try to open the dialog again, to make sure that dialogs properly // handle a call to the open() method during the process of the dialog // being opened. .on( "blur", function() { element.dialog( "open" ); } ) .trigger( "focus" ); } ); QUnit.test( "#5531: dialog width should be at least minWidth on creation", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog( { width: 200, minWidth: 300 } ); assert.equal( element.dialog( "option", "width" ), 300, "width is minWidth" ); element.dialog( "option", "width", 200 ); assert.equal( element.dialog( "option", "width" ), 300, "width unchanged when set to < minWidth" ); element.dialog( "option", "width", 320 ); assert.equal( element.dialog( "option", "width" ), 320, "width changed if set to > minWidth" ); element.remove(); element = $( "
    " ).dialog( { minWidth: 300 } ); assert.ok( element.dialog( "option", "width" ) >= 300, "width is at least 300" ); element.remove(); } ); } ); jquery-ui-1.12.1/tests/unit/dialog/options.js000066400000000000000000000504671276627555100211730ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/dialog", "ui/effects/effect-blind", "ui/effects/effect-explode" ], function( QUnit, $, testHelper ) { QUnit.module( "dialog: options" ); QUnit.test( "appendTo", function( assert ) { assert.expect( 16 ); var detached = $( "
    " ), element = $( "#dialog1" ).dialog( { modal: true } ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], document.body, "defaults to body" ); assert.equal( $( ".ui-widget-overlay" ).parent()[ 0 ], document.body, "overlay defaults to body" ); element.dialog( "destroy" ); element.dialog( { appendTo: ".wrap", modal: true } ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], $( "#wrap1" )[ 0 ], "first found element" ); assert.equal( $( ".ui-widget-overlay" ).parent()[ 0 ], $( "#wrap1" )[ 0 ], "overlay first found element" ); assert.equal( $( "#wrap2 .ui-dialog" ).length, 0, "only appends to one element" ); assert.equal( $( "#wrap2 .ui-widget-overlay" ).length, 0, "overlay only appends to one element" ); element.dialog( "destroy" ); element.dialog( { appendTo: null, modal: true } ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], document.body, "null" ); assert.equal( $( ".ui-widget-overlay" ).parent()[ 0 ], document.body, "overlay null" ); element.dialog( "destroy" ); element.dialog( { autoOpen: false, modal: true } ).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], $( "#wrap1" )[ 0 ], "modified after init" ); assert.equal( $( ".ui-widget-overlay" ).parent()[ 0 ], $( "#wrap1" )[ 0 ], "overlay modified after init" ); element.dialog( "destroy" ); element.dialog( { appendTo: detached, modal: true } ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], detached[ 0 ], "detached jQuery object" ); assert.equal( detached.find( ".ui-widget-overlay" ).parent()[ 0 ], detached[ 0 ], "overlay detached jQuery object" ); element.dialog( "destroy" ); element.dialog( { appendTo: detached[ 0 ], modal: true } ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], detached[ 0 ], "detached DOM element" ); assert.equal( detached.find( ".ui-widget-overlay" ).parent()[ 0 ], detached[ 0 ], "overlay detached DOM element" ); element.dialog( "destroy" ); element.dialog( { autoOpen: false, modal: true } ).dialog( "option", "appendTo", detached ); assert.equal( element.dialog( "widget" ).parent()[ 0 ], detached[ 0 ], "detached DOM element via option()" ); assert.equal( detached.find( ".ui-widget-overlay" ).length, 0, "overlay detached DOM element via option()" ); element.dialog( "destroy" ); } ); QUnit.test( "autoOpen", function( assert ) { assert.expect( 2 ); var element = $( "
    " ).dialog( { autoOpen: false } ); assert.ok( !element.dialog( "widget" ).is( ":visible" ), ".dialog({ autoOpen: false })" ); element.remove(); element = $( "
    " ).dialog( { autoOpen: true } ); assert.ok( element.dialog( "widget" ).is( ":visible" ), ".dialog({ autoOpen: true })" ); element.remove(); } ); QUnit.test( "buttons", function( assert ) { assert.expect( 21 ); var btn, i, newButtons, buttons = { "Ok": function( ev ) { assert.ok( true, "button click fires callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.target, btn[ 0 ], "event target" ); }, "Cancel": function( ev ) { assert.ok( true, "button click fires callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.target, btn[ 1 ], "event target" ); } }, element = $( "
    " ).dialog( { buttons: buttons } ); btn = element.dialog( "widget" ).find( ".ui-dialog-buttonpane button" ); assert.equal( btn.length, 2, "number of buttons" ); i = 0; $.each( buttons, function( key ) { assert.equal( btn.eq( i ).text(), key, "text of button " + ( i + 1 ) ); i++; } ); assert.hasClasses( btn.parent(), "ui-dialog-buttonset" ); assert.hasClasses( element.parent(), "ui-dialog-buttons" ); btn.trigger( "click" ); newButtons = { "Close": function( ev ) { assert.ok( true, "button click fires callback" ); assert.equal( this, element[ 0 ], "context of callback" ); assert.equal( ev.target, btn[ 0 ], "event target" ); } }; assert.deepEqual( element.dialog( "option", "buttons" ), buttons, ".dialog('option', 'buttons') getter" ); element.dialog( "option", "buttons", newButtons ); assert.deepEqual( element.dialog( "option", "buttons" ), newButtons, ".dialog('option', 'buttons', ...) setter" ); btn = element.dialog( "widget" ).find( ".ui-dialog-buttonpane button" ); assert.equal( btn.length, 1, "number of buttons after setter" ); btn.trigger( "click" ); i = 0; $.each( newButtons, function( key ) { assert.equal( btn.eq( i ).text(), key, "text of button " + ( i + 1 ) ); i += 1; } ); element.dialog( "option", "buttons", null ); btn = element.dialog( "widget" ).find( ".ui-dialog-buttonpane button" ); assert.equal( btn.length, 0, "all buttons have been removed" ); assert.equal( element.find( ".ui-dialog-buttonset" ).length, 0, "buttonset has been removed" ); assert.lacksClasses( element.parent(), "ui-dialog-buttons" ); element.remove(); } ); QUnit.test( "buttons - advanced", function( assert ) { assert.expect( 7 ); var buttons, element = $( "
    " ).dialog( { buttons: [ { text: "a button", "class": "additional-class", id: "my-button-id", click: function() { assert.equal( this, element[ 0 ], "correct context" ); }, icon: "ui-icon-cancel", showLabel: false } ] } ); buttons = element.dialog( "widget" ).find( ".ui-dialog-buttonpane button" ); assert.equal( buttons.length, 1, "correct number of buttons" ); assert.equal( buttons.attr( "id" ), "my-button-id", "correct id" ); assert.equal( $.trim( buttons.text() ), "a button", "correct label" ); assert.hasClasses( buttons, "additional-class" ); assert.deepEqual( buttons.button( "option", "icon" ), "ui-icon-cancel" ); assert.equal( buttons.button( "option", "showLabel" ), false ); buttons.trigger( "click" ); element.remove(); } ); QUnit.test( "#9043: buttons with Array.prototype modification", function( assert ) { assert.expect( 1 ); Array.prototype.test = $.noop; var element = $( "
    " ).dialog(); assert.equal( element.dialog( "widget" ).find( ".ui-dialog-buttonpane" ).length, 0, "no button pane" ); element.remove(); delete Array.prototype.test; } ); QUnit.test( "closeOnEscape", function( assert ) { assert.expect( 6 ); var element = $( "
    " ).dialog( { closeOnEscape: false } ); assert.ok( true, "closeOnEscape: false" ); assert.ok( element.dialog( "widget" ).is( ":visible" ) && !element.dialog( "widget" ).is( ":hidden" ), "dialog is open before ESC" ); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ) .simulate( "keypress", { keyCode: $.ui.keyCode.ESCAPE } ) .simulate( "keyup", { keyCode: $.ui.keyCode.ESCAPE } ); assert.ok( element.dialog( "widget" ).is( ":visible" ) && !element.dialog( "widget" ).is( ":hidden" ), "dialog is open after ESC" ); element.remove(); element = $( "
    " ).dialog( { closeOnEscape: true } ); assert.ok( true, "closeOnEscape: true" ); assert.ok( element.dialog( "widget" ).is( ":visible" ) && !element.dialog( "widget" ).is( ":hidden" ), "dialog is open before ESC" ); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ) .simulate( "keypress", { keyCode: $.ui.keyCode.ESCAPE } ) .simulate( "keyup", { keyCode: $.ui.keyCode.ESCAPE } ); assert.ok( element.dialog( "widget" ).is( ":hidden" ) && !element.dialog( "widget" ).is( ":visible" ), "dialog is closed after ESC" ); } ); QUnit.test( "closeText", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog(); assert.equal( $.trim( element.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).text() ), "Close", "default close text" ); element.remove(); element = $( "
    " ).dialog( { closeText: "foo" } ); assert.equal( $.trim( element.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).text() ), "foo", "closeText on init" ); element.remove(); element = $( "
    " ).dialog().dialog( "option", "closeText", "bar" ); assert.equal( $.trim( element.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).text() ), "bar", "closeText via option method" ); element.remove(); element = $( "
    " ).dialog( { closeText: "foo" } ); assert.equal( $.trim( element.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).text() ), "foo", "closeText is escaped" ); element.remove(); } ); QUnit.test( "draggable", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog( { draggable: false } ); testHelper.testDrag( assert, element, 50, -50, 0, 0 ); element.dialog( "option", "draggable", true ); testHelper.testDrag( assert, element, 50, -50, 50, -50 ); element.remove(); element = $( "
    " ).dialog( { draggable: true } ); testHelper.testDrag( assert, element, 50, -50, 50, -50 ); element.dialog( "option", "draggable", false ); testHelper.testDrag( assert, element, 50, -50, 0, 0 ); element.remove(); } ); QUnit.test( "height", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog(); assert.equal( element.dialog( "widget" ).outerHeight(), 150, "default height" ); element.remove(); element = $( "
    " ).dialog( { height: 237 } ); assert.equal( element.dialog( "widget" ).outerHeight(), 237, "explicit height" ); element.remove(); element = $( "
    " ).dialog(); element.dialog( "option", "height", 238 ); assert.equal( element.dialog( "widget" ).outerHeight(), 238, "explicit height set after init" ); element.remove(); element = $( "
    " ).css( "padding", "20px" ) .dialog( { height: 240 } ); assert.equal( element.dialog( "widget" ).outerHeight(), 240, "explicit height with padding" ); element.remove(); } ); QUnit.test( "maxHeight", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog( { maxHeight: 200 } ); testHelper.drag( element, ".ui-resizable-s", 1000, 1000 ); assert.close( element.dialog( "widget" ).height(), 200, 1, "maxHeight" ); element.remove(); element = $( "
    " ).dialog( { maxHeight: 200 } ); testHelper.drag( element, ".ui-resizable-n", -1000, -1000 ); assert.close( element.dialog( "widget" ).height(), 200, 1, "maxHeight" ); element.remove(); element = $( "
    " ).dialog( { maxHeight: 200 } ).dialog( "option", "maxHeight", 300 ); testHelper.drag( element, ".ui-resizable-s", 1000, 1000 ); assert.close( element.dialog( "widget" ).height(), 300, 1, "maxHeight" ); element.remove(); } ); QUnit.test( "maxWidth", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog( { maxWidth: 200 } ); testHelper.drag( element, ".ui-resizable-e", 1000, 1000 ); assert.close( element.dialog( "widget" ).width(), 200, 1, "maxWidth" ); element.remove(); element = $( "
    " ).dialog( { maxWidth: 200 } ); testHelper.drag( element, ".ui-resizable-w", -1000, -1000 ); assert.close( element.dialog( "widget" ).width(), 200, 1, "maxWidth" ); element.remove(); element = $( "
    " ).dialog( { maxWidth: 200 } ).dialog( "option", "maxWidth", 300 ); testHelper.drag( element, ".ui-resizable-w", -1000, -1000 ); assert.close( element.dialog( "widget" ).width(), 300, 1, "maxWidth" ); element.remove(); } ); QUnit.test( "minHeight", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog( { minHeight: 10 } ); testHelper.drag( element, ".ui-resizable-s", -1000, -1000 ); assert.close( element.dialog( "widget" ).height(), 10, 1, "minHeight" ); element.remove(); element = $( "
    " ).dialog( { minHeight: 10 } ); testHelper.drag( element, ".ui-resizable-n", 1000, 1000 ); assert.close( element.dialog( "widget" ).height(), 10, 1, "minHeight" ); element.remove(); element = $( "
    " ).dialog( { minHeight: 10 } ).dialog( "option", "minHeight", 30 ); testHelper.drag( element, ".ui-resizable-n", 1000, 1000 ); assert.close( element.dialog( "widget" ).height(), 30, 1, "minHeight" ); element.remove(); } ); QUnit.test( "minWidth", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog( { minWidth: 10 } ); testHelper.drag( element, ".ui-resizable-e", -1000, -1000 ); assert.close( element.dialog( "widget" ).width(), 10, 1, "minWidth" ); element.remove(); element = $( "
    " ).dialog( { minWidth: 10 } ); testHelper.drag( element, ".ui-resizable-w", 1000, 1000 ); assert.close( element.dialog( "widget" ).width(), 10, 1, "minWidth" ); element.remove(); element = $( "
    " ).dialog( { minWidth: 30 } ).dialog( "option", "minWidth", 30 ); testHelper.drag( element, ".ui-resizable-w", 1000, 1000 ); assert.close( element.dialog( "widget" ).width(), 30, 1, "minWidth" ); element.remove(); } ); QUnit.test( "position, default center on window", function( assert ) { assert.expect( 2 ); // Dialogs alter the window width and height in Firefox // so we collect that information before creating the dialog // Support: Firefox var winWidth = $( window ).width(), winHeight = $( window ).height(), element = $( "
    " ).dialog(), dialog = element.dialog( "widget" ), offset = dialog.offset(); assert.close( offset.left, Math.round( winWidth / 2 - dialog.outerWidth() / 2 ) + $( window ).scrollLeft(), 1, "dialog left position of center on window on initilization" ); assert.close( offset.top, Math.round( winHeight / 2 - dialog.outerHeight() / 2 ) + $( window ).scrollTop(), 1, "dialog top position of center on window on initilization" ); element.remove(); } ); QUnit.test( "position, right bottom at right bottom via ui.position args", function( assert ) { assert.expect( 2 ); // Dialogs alter the window width and height in Firefox // so we collect that information before creating the dialog // Support: Firefox var winWidth = $( window ).width(), winHeight = $( window ).height(), element = $( "
    " ).dialog( { position: { my: "right bottom", at: "right bottom" } } ), dialog = element.dialog( "widget" ), offset = dialog.offset(); assert.close( offset.left, winWidth - dialog.outerWidth() + $( window ).scrollLeft(), 1, "dialog left position of right bottom at right bottom on initilization" ); assert.close( offset.top, winHeight - dialog.outerHeight() + $( window ).scrollTop(), 1, "dialog top position of right bottom at right bottom on initilization" ); element.remove(); } ); QUnit.test( "position, at another element", function( assert ) { assert.expect( 4 ); var parent = $( "
    " ).css( { position: "absolute", top: 400, left: 600, height: 10, width: 10 } ).appendTo( "body" ), element = $( "
    " ).dialog( { position: { my: "left top", at: "left top", of: parent, collision: "none" } } ), dialog = element.dialog( "widget" ), offset = dialog.offset(); assert.close( offset.left, 600, 1, "dialog left position at another element on initilization" ); assert.close( offset.top, 400, 1, "dialog top position at another element on initilization" ); element.dialog( "option", "position", { my: "left top", at: "right bottom", of: parent, collision: "none" } ); offset = dialog.offset(); assert.close( offset.left, 610, 1, "dialog left position at another element via setting option" ); assert.close( offset.top, 410, 1, "dialog top position at another element via setting option" ); element.remove(); parent.remove(); } ); QUnit.test( "resizable", function( assert ) { assert.expect( 4 ); var element = $( "
    " ).dialog(); testHelper.shouldResize( assert, element, 50, 50, "[default]" ); element.dialog( "option", "resizable", false ); testHelper.shouldResize( assert, element, 0, 0, "disabled after init" ); element.remove(); element = $( "
    " ).dialog( { resizable: false } ); testHelper.shouldResize( assert, element, 0, 0, "disabled in init options" ); element.dialog( "option", "resizable", true ); testHelper.shouldResize( assert, element, 50, 50, "enabled after init" ); element.remove(); } ); QUnit.test( "title", function( assert ) { assert.expect( 11 ); function titleText() { return element.dialog( "widget" ).find( ".ui-dialog-title" ).html(); } var element = $( "
    " ).dialog(); // Some browsers return a non-breaking space and some return " " // so we generate a non-breaking space for comparison assert.equal( titleText(), $( " " ).html(), "[default]" ); assert.equal( element.dialog( "option", "title" ), null, "option not changed" ); element.remove(); element = $( "
    " ).dialog(); assert.equal( titleText(), "foo", "title in element attribute" ); assert.equal( element.dialog( "option", "title" ), "foo", "option updated from attribute" ); element.remove(); element = $( "
    " ).dialog( { title: "foo" } ); assert.equal( titleText(), "foo", "title in init options" ); assert.equal( element.dialog( "option", "title" ), "foo", "opiton set from options hash" ); element.remove(); element = $( "
    " ).dialog( { title: "bar" } ); assert.equal( titleText(), "bar", "title in init options should override title in element attribute" ); assert.equal( element.dialog( "option", "title" ), "bar", "opiton set from options hash" ); element.remove(); element = $( "
    " ).dialog().dialog( "option", "title", "foo" ); assert.equal( titleText(), "foo", "title after init" ); element.remove(); // Make sure attroperties are properly ignored - #5742 - .attr() might return a DOMElement element = $( "
    " ).dialog(); // Some browsers return a non-breaking space and some return " " // so we get the text to normalize to the actual non-breaking space assert.equal( titleText(), $( " " ).html(), "[default]" ); assert.equal( element.dialog( "option", "title" ), null, "option not changed" ); element.remove(); } ); QUnit.test( "width", function( assert ) { assert.expect( 3 ); var element = $( "
    " ).dialog(); assert.close( element.dialog( "widget" ).width(), 300, 1, "default width" ); element.remove(); element = $( "
    " ).dialog( { width: 437 } ); assert.close( element.dialog( "widget" ).width(), 437, 1, "explicit width" ); element.dialog( "option", "width", 438 ); assert.close( element.dialog( "widget" ).width(), 438, 1, "explicit width after init" ); element.remove(); } ); QUnit.test( "#4826: setting resizable false toggles resizable on dialog", function( assert ) { assert.expect( 6 ); var i, element = $( "
    " ).dialog( { resizable: false } ); testHelper.shouldResize( assert, element, 0, 0, "[default]" ); for ( i = 0; i < 2; i++ ) { element.dialog( "close" ).dialog( "open" ); testHelper.shouldResize( assert, element, 0, 0, "initialized with resizable false toggle (" + ( i + 1 ) + ")" ); } element.remove(); element = $( "
    " ).dialog( { resizable: true } ); testHelper.shouldResize( assert, element, 50, 50, "[default]" ); for ( i = 0; i < 2; i++ ) { element.dialog( "close" ).dialog( "option", "resizable", false ).dialog( "open" ); testHelper.shouldResize( assert, element, 0, 0, "set option resizable false toggle (" + ( i + 1 ) + ")" ); } element.remove(); } ); QUnit.test( "#8051 - 'Explode' dialog animation causes crash in IE 6, 7 and 8", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var element = $( "
    " ).dialog( { show: "explode", focus: function() { assert.ok( true, "dialog opened with animation" ); element.remove(); ready(); } } ); } ); QUnit.test( "#4421 - Focus lost from dialog which uses show-effect", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var element = $( "
    " ).dialog( { show: "blind", focus: function() { assert.equal( element.dialog( "widget" ).find( document.activeElement ).length, 1, "dialog maintains focus" ); element.remove(); ready(); } } ); } ); QUnit.test( "Open followed by close during show effect", function( assert ) { var ready = assert.async(); assert.expect( 1 ); var element = $( "
    " ).dialog( { show: "blind", close: function() { assert.ok( true, "dialog closed properly during animation" ); element.remove(); ready(); } } ); setTimeout( function() { element.dialog( "close" ); }, 100 ); } ); } ); jquery-ui-1.12.1/tests/unit/draggable/000077500000000000000000000000001276627555100175775ustar00rootroot00000000000000jquery-ui-1.12.1/tests/unit/draggable/all.html000066400000000000000000000012041276627555100212320ustar00rootroot00000000000000 jQuery UI Draggable Test Suite
    jquery-ui-1.12.1/tests/unit/draggable/common.js000066400000000000000000000015521276627555100214300ustar00rootroot00000000000000define( [ "lib/common", "ui/widgets/draggable" ], function( common ) { common.testWidget( "draggable", { defaults: { appendTo: "parent", axis: false, cancel: "input, textarea, button, select, option", classes: {}, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, disabled: false, grid: false, handle: false, helper: "original", opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false, //Todo: remove the following option checks when interactions are rewritten: addClasses: true, delay: 0, distance: 1, iframeFix: false, // Callbacks create: null, drag: null, start: null, stop: null } } ); } ); jquery-ui-1.12.1/tests/unit/draggable/core.js000066400000000000000000000335551276627555100211000ustar00rootroot00000000000000define( [ "qunit", "jquery", "./helper", "ui/widgets/draggable", "ui/widgets/droppable", "ui/widgets/resizable" ], function( QUnit, $, testHelper ) { QUnit.module( "draggable: core" ); QUnit.test( "element types", function( assert ) { var typeNames = ( "p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form" + ",table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr" + ",acronym,code,samp,kbd,var,img,hr" + ",input,button,label,select,iframe" ).split( "," ); assert.expect( typeNames.length * 2 ); $.each( typeNames, function( i ) { var offsetBefore, offsetAfter, typeName = typeNames[ i ], el = $( document.createElement( typeName ) ).appendTo( "#qunit-fixture" ); if ( typeName === "table" ) { el.append( "content" ); } el.draggable( { cancel: "" } ); offsetBefore = el.offset(); el.simulate( "drag", { dx: 50, dy: 50 } ); offsetAfter = el.offset(); // Support: FF, Chrome, and IE9, // there are some rounding errors in so we can't say equal, we have to settle for close enough assert.close( offsetBefore.left, offsetAfter.left - 50, 1, "dragged[50, 50] " + "<" + typeName + "> left" ); assert.close( offsetBefore.top, offsetAfter.top - 50, 1, "dragged[50, 50] " + "<" + typeName + "> top" ); el.draggable( "destroy" ); el.remove(); } ); } ); QUnit.test( "No options, relative", function( assert ) { assert.expect( 2 ); testHelper.shouldMove( assert, $( "#draggable1" ).draggable(), "no options, relative" ); } ); QUnit.test( "No options, absolute", function( assert ) { assert.expect( 2 ); testHelper.shouldMove( assert, $( "#draggable2" ).draggable(), "no options, absolute" ); } ); QUnit.test( "resizable handle with complex markup (#8756 / #8757)", function( assert ) { assert.expect( 2 ); $( "#draggable1" ) .append( $( "
    " ) .addClass( "ui-resizable-handle ui-resizable-w" ) .append( $( "
    " ) ) ); var handle = $( ".ui-resizable-w div" ), target = $( "#draggable1" ).draggable().resizable( { handles: "all" } ); // Todo: fix resizable so it doesn't require a mouseover handle.simulate( "mouseover" ).simulate( "drag", { dx: -50 } ); assert.equal( target.width(), 250, "compare width" ); // Todo: fix resizable so it doesn't require a mouseover handle.simulate( "mouseover" ).simulate( "drag", { dx: 50 } ); assert.equal( target.width(), 200, "compare width" ); } ); QUnit.test( "#8269: Removing draggable element on drop", function( assert ) { assert.expect( 2 ); var element = $( "#draggable1" ).wrap( "
    " ).draggable( { stop: function() { assert.ok( true, "stop still called despite element being removed from DOM on drop" ); } } ), dropOffset = $( "#droppable" ).offset(); $( "#droppable" ).droppable( { drop: function() { $( "#wrapper" ).remove(); assert.ok( true, "element removed from DOM on drop" ); } } ); // Support: Opera 12.10, Safari 5.1, jQuery <1.8 if ( testHelper.unreliableContains ) { assert.ok( true, "Opera <12.14 and Safari <6.0 report wrong values for $.contains in jQuery < 1.8" ); assert.ok( true, "Opera <12.14 and Safari <6.0 report wrong values for $.contains in jQuery < 1.8" ); } else { element.simulate( "drag", { handle: "corner", x: dropOffset.left, y: dropOffset.top } ); } } ); // http://bugs.jqueryui.com/ticket/7778 // drag element breaks in IE8 when its content is replaced onmousedown QUnit.test( "Stray mousemove after mousedown still drags", function( assert ) { assert.expect( 2 ); var element = $( "#draggable1" ).draggable( { scroll: false } ); // In IE8, when content is placed under the mouse (e.g. when draggable content is replaced // on mousedown), mousemove is triggered on those elements even though the mouse hasn't moved. // Support: IE <9 element.on( "mousedown", function() { $( document ).simulate( "mousemove", { button: -1 } ); } ); testHelper.shouldMove( assert, element, "element is draggable" ); } ); QUnit.test( "#6258: not following mouse when scrolled and using overflow-y: scroll", function( assert ) { assert.expect( 2 ); var element = $( "#draggable1" ).draggable( { stop: function( event, ui ) { assert.equal( ui.position.left, 1, "left position is correct despite overflow on HTML" ); assert.equal( ui.position.top, 1, "top position is correct despite overflow on HTML" ); $( "html" ) .css( "overflow-y", oldOverflowY ) .css( "overflow-x", oldOverflowX ) .scrollTop( 0 ) .scrollLeft( 0 ); } } ), oldOverflowY = $( "html" ).css( "overflow-y" ), oldOverflowX = $( "html" ).css( "overflow-x" ); testHelper.forceScrollableWindow(); $( "html" ) .css( "overflow-y", "scroll" ) .css( "overflow-x", "scroll" ) .scrollTop( 300 ) .scrollLeft( 300 ); element.simulate( "drag", { dx: 1, dy: 1, moves: 1 } ); } ); QUnit.test( "#9315: jumps down with offset of scrollbar", function( assert ) { assert.expect( 2 ); var element = $( "#draggable2" ).draggable( { stop: function( event, ui ) { assert.equal( ui.position.left, 11, "left position is correct when position is absolute" ); assert.equal( ui.position.top, 11, "top position is correct when position is absolute" ); $( "html" ).scrollTop( 0 ).scrollLeft( 0 ); } } ); testHelper.forceScrollableWindow(); $( "html" ).scrollTop( 300 ).scrollLeft( 300 ); element.simulate( "drag", { dx: 1, dy: 1, moves: 1 } ); } ); QUnit.test( "scroll offset with fixed ancestors", function( assert ) { assert.expect( 2 ); var startValue = 300, element = $( "#draggable1" ) // http://bugs.jqueryui.com/ticket/5009 // scroll not working with parent's position fixed .wrap( "
    " ) // http://bugs.jqueryui.com/ticket/9612 // abspos elements inside of fixed elements moving away from the mouse when scrolling .wrap( "
    " ) .draggable( { drag: function() { startValue += 100; $( document ).scrollTop( startValue ).scrollLeft( startValue ); }, stop: function( event, ui ) { assert.equal( ui.position.left, 10, "left position is correct when parent position is fixed" ); assert.equal( ui.position.top, 10, "top position is correct when parent position is fixed" ); $( document ).scrollTop( 0 ).scrollLeft( 0 ); } } ); testHelper.forceScrollableWindow(); $( "#wrapper" ).css( "position", "fixed" ); $( "#wrapper2" ).css( "position", "absolute" ); element.simulate( "drag", { dx: 10, dy: 10, moves: 3 } ); } ); $( [ "hidden", "auto", "scroll" ] ).each( function() { var overflow = this; // Http://bugs.jqueryui.com/ticket/9379 - position bug in scrollable div // http://bugs.jqueryui.com/ticket/10147 - Wrong position in a parent with "overflow: hidden" QUnit.test( "position in scrollable parent with overflow: " + overflow, function( assert ) { assert.expect( 2 ); $( "#qunit-fixture" ).html( "
    a
    " ); $( "#inner" ).css( { position: "absolute", width: "500px", height: "500px" } ); $( "#outer" ).css( { position: "absolute", width: "300px", height: "300px" } ); $( "#dragged" ).css( { width: "10px", height: "10px" } ); var moves = 3, startValue = 0, dragDelta = 20, delta = 100, // We scroll after each drag event, so subtract 1 from number of moves for expected expected = delta + ( ( moves - 1 ) * dragDelta ), element = $( "#dragged" ).draggable( { drag: function() { startValue += dragDelta; $( "#outer" ).scrollTop( startValue ).scrollLeft( startValue ); }, stop: function( event, ui ) { assert.equal( ui.position.left, expected, "left position is correct when grandparent is scrolled" ); assert.equal( ui.position.top, expected, "top position is correct when grandparent is scrolled" ); } } ); $( "#outer" ).css( "overflow", overflow ); element.simulate( "drag", { dy: delta, dx: delta, moves: moves } ); } ); } ); QUnit.test( "#5727: draggable from iframe", function( assert ) { assert.expect( 1 ); var iframeBody, draggable1, iframe = $( "" ) .append( "

    a bunch of content

    Just another dialog to test stacking
    jquery-ui-1.12.1/tests/visual/draggable/000077500000000000000000000000001276627555100201235ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/draggable/replaced.html000066400000000000000000000012751276627555100225750ustar00rootroot00000000000000 Draggable Visual Test

    WHAT: A draggable, whose content is replaced onmousedown.

    EXPECTED: In IE8, the draggable can actually be dragged.

    content
    jquery-ui-1.12.1/tests/visual/effects/000077500000000000000000000000001276627555100176325ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/effects/all.html000066400000000000000000000055771276627555100213060ustar00rootroot00000000000000 jQuery UI Effects Test Suite
    • Blind up

    • Blind down

    • Blind left

    • Blind right

    • Bounce 3 times

    • Clip horizontally

    • Clip vertically

    • Drop up

    • Drop left

    • Drop right

    • Explode in 9 pieces

    • Explode in 36 pieces

    • Fade

    • Fold

    • Highlight

    • Pulsate 2 times

    • Puff

    • Scale

    • Shake

    • Size Default Show/Hide

    • Size Toggle

    • Slide down

    • Slide up

    • Slide left

    • Slide right

    • Transfer to first element

    • addClass

    • removeClass

    • toggleClass

    • hide/show (jQuery)

    jquery-ui-1.12.1/tests/visual/effects/clip.html000066400000000000000000000131511276627555100214500ustar00rootroot00000000000000 jQuery UI Effects Test Suite

    WHAT: A set of elements with various positions and clips, using the clip effect.

    EXPECTED: When clicking "Toggle" or "Effect Toggle", to observe the same behavior; All elements should not change position, aside from the expected clip animation. At the end of the animation, the animated elements should hide. Layout (i.e. the position of other elements) should not change until the animated elements are hidden.

    EXPECTED: Clicking "Toggle" or "Effect Toggle" a second time reverses the animation, first showing all elements at their original dimensions, and restoring them to their original state.

    EXPECTED: Clicking "Effect Default" should always perform a "hide" animation.

    EXPECTED: Clicking any of the buttons in quick succession should queue the relevant animations.

    EXPECTED CANTFIX: In IE8, the clip animation jumps due to a bug that causes .css('clip') to return undefined unless the clip property is an inline style.

    Bacon ipsum dolor sit amet chuck cow ground round, ham hock short loin tail jowl sausage flank. Venison andouille turducken sausage. Boudin filet mignon shoulder, prosciutto sirloin tail cow pastrami. Salami jerky flank rump, sirloin spare ribs pork belly. Biltong brisket boudin ground round, venison chicken shankle short ribs meatball corned beef. Swine short ribs shoulder, short loin turducken biltong prosciutto ball tip. Biltong beef bresaola sausage prosciutto spare ribs, short loin swine pork chop cow flank pork turkey shankle.

    jQuery Logo

    Jerky corned beef short loin fatback jowl tail. Rump spare ribs shoulder pork belly. Sausage cow ground round bacon. Bresaola kielbasa pastrami brisket ham hock. Andouille kielbasa ham, pork beef tenderloin ground round beef ribs flank turkey pancetta tri-tip.

    Shankle filet mignon ribeye chicken, bacon jowl drumstick frankfurter swine short loin capicola leberkas tenderloin pig. Shankle bacon shank pork loin, shoulder ham drumstick biltong. Shankle ham pastrami ball tip turkey leberkas pork loin ground round. Chicken strip steak venison shoulder biltong ham. Bacon pork loin tenderloin kielbasa, prosciutto sausage leberkas jowl ribeye turducken. Flank short loin venison tenderloin spare ribs boudin, tongue pork chop shank sirloin. Ground round ham pork belly, corned beef jowl strip steak short ribs prosciutto pig bresaola spare ribs.

    jQuery Logo

    Pork loin biltong ball tip tail jerky beef ribs prosciutto short loin turducken. Turkey chicken jowl pork loin shank tri-tip swine brisket. Doner prosciutto leberkas venison ground round, short loin capicola hamburger pork bacon. Spare ribs beef pork tenderloin rump shoulder pork belly turducken cow beef ribs pastrami tail flank. Spare ribs tri-tip shank, pork beef ribs ribeye chicken bacon boudin shoulder venison. Sirloin beef ribs boudin, andouille doner tail ball tip biltong prosciutto chicken beef turkey tongue hamburger tri-tip.

    Doner salami jowl beef ribs. Pork chop beef short loin pork, kielbasa tail andouille salami sausage meatball short ribs t-bone tri-tip ham. Meatball short ribs prosciutto flank chicken fatback frankfurter brisket turducken. Corned beef hamburger swine short ribs pancetta. Jerky bresaola pork chuck spare ribs pastrami shoulder flank chicken leberkas beef.

    Doner salami jowl beef ribs. Pork chop beef short loin pork, kielbasa tail andouille salami sausage meatball short ribs t-bone tri-tip ham. Meatball short ribs prosciutto flank chicken fatback frankfurter brisket turducken. Corned beef hamburger swine short ribs pancetta. Jerky bresaola pork chuck spare ribs pastrami shoulder flank chicken leberkas beef.

    Doner salami jowl beef ribs. Pork chop beef short loin pork, kielbasa tail andouille salami sausage meatball short ribs t-bone tri-tip ham. Meatball short ribs prosciutto flank chicken fatback frankfurter brisket turducken. Corned beef hamburger swine short ribs pancetta. Jerky bresaola pork chuck spare ribs pastrami shoulder flank chicken leberkas beef.

    jquery-ui-1.12.1/tests/visual/effects/effects.css000066400000000000000000000011621276627555100217630ustar00rootroot00000000000000body { margin: 1em; padding: 0; background: #fff; color: #000; } ul.effects { list-style-type: none; margin: 0; padding: 0; } ul.effects li { padding: 0; width: 120px; height: 100px; float: left; margin-top: 20px; margin-left: 20px; } div.effect { width: 120px; height: 100px; background: #ccc; border: 5px outset #aaa; float: left; cursor: pointer; cursor: hand; } div.current { border: 5px outset #FF9C08; background: #FF9C08; } div.effect p { color: #191919; font-weight: bold; margin: 0; padding: 10px; } .ui-effects-transfer { border: 1px dotted #fff; background: #666; opacity: 0.5; } jquery-ui-1.12.1/tests/visual/effects/effects.js000066400000000000000000000054661276627555100216220ustar00rootroot00000000000000var duration = 1000, wait = 500; function effect( elem, name, options ) { $.extend( options, { easing: "easeOutQuint" } ); $( elem ).on( "click", function() { $( this ) .addClass( "current" ) // delaying the initial animation makes sure that the queue stays in tact .delay( 10 ) .hide( name, options, duration ) .delay( wait ) .show( name, options, duration, function() { $( this ).removeClass( "current" ); } ); } ); } $( "#hide" ).on( "click", function() { $( this ) .addClass( "current" ) .hide( duration ) .delay( wait ) .show( duration, function() { $( this ).removeClass( "current" ); } ); } ); effect( "#blindLeft", "blind", { direction: "left" } ); effect( "#blindUp", "blind", { direction: "up" } ); effect( "#blindRight", "blind", { direction: "right" } ); effect( "#blindDown", "blind", { direction: "down" } ); effect( "#bounce3times", "bounce", { times: 3 } ); effect( "#clipHorizontally", "clip", { direction: "horizontal" } ); effect( "#clipVertically", "clip", { direction: "vertical" } ); effect( "#dropDown", "drop", { direction: "down" } ); effect( "#dropUp", "drop", { direction: "up" } ); effect( "#dropLeft", "drop", { direction: "left" } ); effect( "#dropRight", "drop", { direction: "right" } ); effect( "#explode9", "explode", {} ); effect( "#explode36", "explode", { pieces: 36 } ); effect( "#fade", "fade", {} ); effect( "#fold", "fold", { size: 50 } ); effect( "#highlight", "highlight", {} ); effect( "#pulsate", "pulsate", { times: 2 } ); effect( "#puff", "puff", {} ); effect( "#scale", "scale", {} ); effect( "#size", "size", {} ); $( "#sizeToggle" ).on( "click", function() { var options = { to: { width: 300, height: 300 } }; $( this ) .addClass( "current" ) .toggle( "size", options, duration ) .delay( wait ) .toggle( "size", options, duration, function() { $( this ).removeClass( "current" ); } ); } ); $( "#shake" ).on( "click", function() { $( this ) .addClass( "current" ) .effect( "shake", {}, 100, function() { $( this ).removeClass( "current" ); } ); } ); effect( "#slideDown", "slide", { direction: "down" } ); effect( "#slideUp", "slide", { direction: "up" } ); effect( "#slideLeft", "slide", { direction: "left" } ); effect( "#slideRight", "slide", { direction: "right" } ); $( "#transfer" ).on( "click", function() { $( this ) .addClass( "current" ) .effect( "transfer", { to: "div:eq(0)" }, 1000, function() { $( this ).removeClass( "current" ); } ); } ); $( "#addClass" ).on( "click", function() { $( this ).addClass( "current", duration, function() { $( this ).removeClass( "current" ); } ); } ); $( "#removeClass" ).on( "click", function() { $( this ).addClass( "current" ).removeClass( "current", duration ); } ); $( "#toggleClass" ).on( "click", function() { $( this ).toggleClass( "current", duration ); } ); jquery-ui-1.12.1/tests/visual/effects/image.png000066400000000000000000000074321276627555100214300ustar00rootroot00000000000000PNG  IHDR CcPLTE(?EPNT]07B\bk!)5z~kpxEZMd+<#2of^x*]`k)HPAbD^IEl9~R‘pPpo*FM6zʥFv"$NL BO4k?yerv j4 Vȷ*$V+V2-ǀ/$sc$7&BԈ- i[S@e+ 8#{#@t[FMH3aS L 6 JDAd 0J-t\U%Q6=>:#,tP޴'@oLePRϐX R3r]#7&aWF~1ivUClQTB U\LU\@ QqJaֽkЩe]XHF*]UhCaUIP tR˹_z; 7OpV F$ nź3p"^I輬8B;+-~5"c,T$܁5,$ 06>s'P~Dmrh OtU$F#Mģ W4];XvFc4vl )$2B7*aDAᕡiuqMr mD;Cx.=E 7H8՘3`4O2N "`X4V4.c[J|^XZEs])&+^ZSC~&nJ\ķ17%,RN)vgu+2;bIuE?$tF~ 8[9YVjDB.[Ya(fzjv\ozl'npw-L3>X +('20t,ǟ"7U Ԣ|t 2dh|Aa֡3#4-f3q/k,nM-LL3H+s DU?,#1!S N5>8X[L@n{wGD`,m0*ͼV@%g d_#AˉoЅYWJJ=)z !ڐFddz4#iIE^4F<8F$"$`&=(`)ХPC5P 5npI"wG )l62}mI *!cC*(&4R  DIјO=׹Yf>xs|RNUb v6"[0i3 HVCyc{wH - ר (ty@`\0%r T0H5ǃF0;a279( 8:Ϡ пm+չ͒C|N+A[6-2>K}!-r,JN{n >u\Wsf"̟Tbb3Јd4'$xę6 r_9/,?ΟmUZA] YW i2RaIA17k@UL*?*T&48DmAPIE ȹ ~ {H[3t \P! АdF0'8i`4%.`Álf H#gdٍHO\c9 zcM.ٯ^);&a(-og.+j( .<[i] #5k:Mেٲ8Ŷ ^ε2z+~woʵ JIC:<koDKۨ'{qPC)#؃?H.ZX}P:yp,K{DYA3T J\j*UReT_s:݈4JWn~C5TB(߽FlN [=eM`} 8gjb}Mqp',e~ׄ"ulXwTKDt!܈D,$9y^)S )ek/q%S7'R ac` /DFجyΓa^ oNdЬϓn";fb`穅բ7MxB}pmϓ(~>dX:{ii< v$.?9|(sO~_W7O~c_)4Odžۣo Mxгa}۹G$quQNj j ܯ;s0oܞXgS#xm|,,Fh`Ubiͬf `fffD qpUzӠVm v3l%\NzxlsNoY  @8, B:+`?6*$aLWQ22 ;My|O=&OI ZkI(1XU.];ɡi<}cCs,MNw̮jU|#p]!8؞#_trm\0kcM˭f"kh/\,E2]S{n]䕰>â *@y ހa+a}##m‰9-p OSN0<M1s~ѧX YHs .sX&Nrlۭj] BFʲL|>1|9vהw8*<8o[x~eֻe46*և1>J8X,t鄦 3RA"w' P3+{{}p (dV9|ipS AƼK] 5n ׭N|8MUHZXhkSU$&5$٨6 ttZq"Lr$LB "p@Tou>'5G̥1axt #vH$Zu\ M5.b WYɉpO>4Iٔl#nK[`*"ZhJ3yҊxa XĬ8Ic^Q%Of=y{ Ax̜U$9IENDB`jquery-ui-1.12.1/tests/visual/effects/scale.html000066400000000000000000000070711276627555100216140ustar00rootroot00000000000000 jQuery UI Effects Test Suite

    jquery-ui-1.12.1/tests/visual/effects/shake.html000066400000000000000000000047101276627555100216150ustar00rootroot00000000000000 jQuery UI Effects Test Suite

    WHAT: A set of elements with various box-model properties, using the shake effect to toggle.

    EXPECTED: When clicking "Toggle", all elements should not change dimension nor position, aside from the expected shake animation, which should take the number of milliseconds specified to complete. At the end of the animation, all elements should hide.

    EXPECTED: Clicking "Toggle" a second time reverses the animation, first showing all elements at their original dimensions, and restoring them to their original state.

    test
    test
    test
    test
    test
    test
    test
    test
    test
    test
    test
    test
    test
    test
    test
    jquery-ui-1.12.1/tests/visual/index.html000066400000000000000000000055101276627555100202110ustar00rootroot00000000000000 jQuery UI Visual Tests jquery-ui-1.12.1/tests/visual/menu/000077500000000000000000000000001276627555100171575ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/menu/menu.html000066400000000000000000000207231276627555100210150ustar00rootroot00000000000000 Menu Visual Test: Default

    Default inline menu

    Inline with disabled items and submenus

    Menu with icons

    Long menu with scroll overflow, to test menu's scroll-on-keypress behaviour

    Menu with custom markup

    Menu with custom markup, multi-line items and a custom submenu icon

    Inline with dividers and group labels

    Log:
    jquery-ui-1.12.1/tests/visual/position/000077500000000000000000000000001276627555100200575ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/position/position.html000066400000000000000000000066431276627555100226220ustar00rootroot00000000000000 Position Visual Test

    This is the position target element.

    to position

    to position 2

    Position configuration:

    my:
    at:
    collision:
    jquery-ui-1.12.1/tests/visual/position/position_feedback.html000066400000000000000000000063401276627555100244200ustar00rootroot00000000000000 Position Visual Test: Feedback
    all around me
    jquery-ui-1.12.1/tests/visual/selectmenu/000077500000000000000000000000001276627555100203575ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/selectmenu/selectmenu.html000066400000000000000000000207341276627555100234170ustar00rootroot00000000000000 Selectmenu Visual Test: Default

    Event logging tests

    Disabled tests

    Empty tests

    Width tests

    Log:
    jquery-ui-1.12.1/tests/visual/slider/000077500000000000000000000000001276627555100174755ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/slider/range_slider.html000066400000000000000000000017711276627555100230270ustar00rootroot00000000000000 jQuery UI Slider - Range slider

    Range Slider

    When set both values of range slider to the maximum, slider should not lock


    jquery-ui-1.12.1/tests/visual/tooltip/000077500000000000000000000000001276627555100177055ustar00rootroot00000000000000jquery-ui-1.12.1/tests/visual/tooltip/animations.html000066400000000000000000000020331276627555100227330ustar00rootroot00000000000000 Tooltip Visual Test: Animations
    {}
    {
    	"show": {
    		"effect": "slideDown"
    	},
    	"hide": {
    		"effect": "slideUp"
    	}
    }
    {
    	"show": {
    		"effect": "explode"
    	},
    	"hide": {
    		"effect": "explode"
    	}
    }
    {
    	"show": {
    		"effect": "bounce"
    	},
    	"hide": {
    		"effect": "blind"
    	}
    }
    {
    	"show": {
    		"effect": "drop",
    		"direction": "right"
    	},
    	"hide": {
    		"effect": "drop",
    		"direction": "right"
    	}
    }
    jquery-ui-1.12.1/tests/visual/tooltip/tooltip.html000066400000000000000000000131321276627555100222650ustar00rootroot00000000000000 Tooltip Visual Test: Default

    Lots of tooltipped elements close together.
    Mouse through them quickly and slowly.

    These elements are right aligned.
    One collides and one uses custom position.

    collision detection should kick in around here

    right aligned with custom position

    These footnotes pull content form the elements they link to.

    These elements load their content asynchronously.
    There should be a loading message while the content is retrieved.

    async
    async + cache

    Nested elements.

    tooltipped nested tooltipped third level
    Text in bold.

    Play around with focusing and hovering of form elements.

    Some inputs nested inside labels:

    Some button widgets:

    This is the footnote, including other elements
    This is the other footnote, including other elements
    jquery-ui-1.12.1/tests/visual/visual.css000066400000000000000000000002101276627555100202210ustar00rootroot00000000000000#draggable, #resizable { width: 100px; height: 100px; background: #abc; } #droppable { width: 100px; height: 100px; background: #cde; } jquery-ui-1.12.1/themes/000077500000000000000000000000001276627555100150335ustar00rootroot00000000000000jquery-ui-1.12.1/themes/base/000077500000000000000000000000001276627555100157455ustar00rootroot00000000000000jquery-ui-1.12.1/themes/base/accordion.css000066400000000000000000000007511276627555100204230ustar00rootroot00000000000000/*! * jQuery UI Accordion 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/accordion/#theming */ .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } jquery-ui-1.12.1/themes/base/all.css000066400000000000000000000004231276627555100172260ustar00rootroot00000000000000/*! * jQuery UI CSS Framework 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/theming/ */ @import "base.css"; @import "theme.css"; jquery-ui-1.12.1/themes/base/autocomplete.css000066400000000000000000000004741276627555100211650ustar00rootroot00000000000000/*! * jQuery UI Autocomplete 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/autocomplete/#theming */ .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } jquery-ui-1.12.1/themes/base/base.css000066400000000000000000000014271276627555100173750ustar00rootroot00000000000000/*! * jQuery UI CSS Framework 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/theming/ */ @import url("core.css"); @import url("accordion.css"); @import url("autocomplete.css"); @import url("button.css"); @import url("checkboxradio.css"); @import url("controlgroup.css"); @import url("datepicker.css"); @import url("dialog.css"); @import url("draggable.css"); @import url("menu.css"); @import url("progressbar.css"); @import url("resizable.css"); @import url("selectable.css"); @import url("selectmenu.css"); @import url("sortable.css"); @import url("slider.css"); @import url("spinner.css"); @import url("tabs.css"); @import url("tooltip.css"); jquery-ui-1.12.1/themes/base/button.css000066400000000000000000000027311276627555100177750ustar00rootroot00000000000000/*! * jQuery UI Button 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/button/#theming */ .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* Support: IE <= 11 */ overflow: visible; } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2em; box-sizing: border-box; text-indent: -9999px; white-space: nowrap; } /* no icon support for input elements */ input.ui-button.ui-button-icon-only { text-indent: 0; } /* button icon element(s) */ .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; } .ui-button.ui-icon-notext .ui-icon { padding: 0; width: 2.1em; height: 2.1em; text-indent: -9999px; white-space: nowrap; } input.ui-button.ui-icon-notext .ui-icon { width: auto; height: auto; text-indent: 0; white-space: normal; padding: .4em 1em; } /* workarounds */ /* Support: Firefox 5 - 40 */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } jquery-ui-1.12.1/themes/base/checkboxradio.css000066400000000000000000000014251276627555100212660ustar00rootroot00000000000000/*! * jQuery UI Checkboxradio 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/checkboxradio/#theming */ .ui-checkboxradio-label .ui-icon-background { box-shadow: inset 1px 1px 1px #ccc; border-radius: .12em; border: none; } .ui-checkboxradio-radio-label .ui-icon-background { width: 16px; height: 16px; border-radius: 1em; overflow: visible; border: none; } .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { background-image: none; width: 8px; height: 8px; border-width: 4px; border-style: solid; } .ui-checkboxradio-disabled { pointer-events: none; } jquery-ui-1.12.1/themes/base/controlgroup.css000066400000000000000000000027661276627555100212270ustar00rootroot00000000000000/*! * jQuery UI Controlgroup 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/controlgroup/#theming */ .ui-controlgroup { vertical-align: middle; display: inline-block; } .ui-controlgroup > .ui-controlgroup-item { float: left; margin-left: 0; margin-right: 0; } .ui-controlgroup > .ui-controlgroup-item:focus, .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { z-index: 9999; } .ui-controlgroup-vertical > .ui-controlgroup-item { display: block; float: none; width: 100%; margin-top: 0; margin-bottom: 0; text-align: left; } .ui-controlgroup-vertical .ui-controlgroup-item { box-sizing: border-box; } .ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } .ui-controlgroup .ui-controlgroup-label span { font-size: 80%; } .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { border-left: none; } .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { border-top: none; } .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { border-right: none; } .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { border-bottom: none; } /* Spinner specific style fixes */ .ui-controlgroup-vertical .ui-spinner-input { /* Support: IE8 only, Android < 4.4 only */ width: 75%; width: calc( 100% - 2.4em ); } .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { border-top-style: solid; } jquery-ui-1.12.1/themes/base/core.css000066400000000000000000000030461276627555100174120ustar00rootroot00000000000000/*! * jQuery UI CSS Framework 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/theming/ */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; pointer-events: none; } /* Icons ----------------------------------*/ .ui-icon { display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } .ui-widget-icon-block { left: 50%; margin-left: -8px; display: block; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } jquery-ui-1.12.1/themes/base/datepicker.css000066400000000000000000000073141276627555100205770ustar00rootroot00000000000000/*! * jQuery UI Datepicker 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/datepicker/#theming */ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } /* Icons */ .ui-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; left: .5em; top: .3em; } jquery-ui-1.12.1/themes/base/dialog.css000066400000000000000000000033311276627555100177160ustar00rootroot00000000000000/*! * jQuery UI Dialog 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/dialog/#theming */ .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-n { height: 2px; top: 0; } .ui-dialog .ui-resizable-e { width: 2px; right: 0; } .ui-dialog .ui-resizable-s { height: 2px; bottom: 0; } .ui-dialog .ui-resizable-w { width: 2px; left: 0; } .ui-dialog .ui-resizable-se, .ui-dialog .ui-resizable-sw, .ui-dialog .ui-resizable-ne, .ui-dialog .ui-resizable-nw { width: 7px; height: 7px; } .ui-dialog .ui-resizable-se { right: 0; bottom: 0; } .ui-dialog .ui-resizable-sw { left: 0; bottom: 0; } .ui-dialog .ui-resizable-ne { right: 0; top: 0; } .ui-dialog .ui-resizable-nw { left: 0; top: 0; } .ui-draggable .ui-dialog-titlebar { cursor: move; } jquery-ui-1.12.1/themes/base/draggable.css000066400000000000000000000003751276627555100203740ustar00rootroot00000000000000/*! * jQuery UI Draggable 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } jquery-ui-1.12.1/themes/base/images/000077500000000000000000000000001276627555100172125ustar00rootroot00000000000000jquery-ui-1.12.1/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png000066400000000000000000000001261276627555100243300ustar00rootroot00000000000000PNG  IHDR(dΪ9PLTE~IDATxcX\RIENDB`jquery-ui-1.12.1/themes/base/images/ui-icons_444444_256x240.png000066400000000000000000000072541276627555100233170ustar00rootroot00000000000000PNG  IHDRIJPLTEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDr ZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxr:ax|O0AI%=b eY~_|Qd @P(UMZIZ~ &?ׁQ0A`ꇚ^=C cm y M0 vC OK0^eYeYKgqƽ3zHM״iz r88@u۱Z*:>csl52[40'{y#*ajAE;瀣*^WXeYe$/0h@ jro`yg%Y9=@H( (8 dզ"G[chG(<䈹`}8@W:e y/$̰ ޗp@wҏo84f0 7i^ѐrtk8 FdYeYN|a3?b*ICܞ2j`Ul{J-~*SO b2@+(:[m! 3&:o4 E):;@Zc *:x>&zS~7xۥ@rz Cݟ!]jX/C{,˲,tk꛼VO3gLh^~k؈ IeuT?00000zs_>( W`_OfUA6WȻi]l@WIL^6-M^;+t{uQQTE f]1`r- u.p;$ Plu:L`P=@l6/N:ְY vou% =0o8{N?ts $ 0 6 7d;`Z"QNٹ!J @ LEQh&=`^h:!bNK(iR@b5k셳A̕@.**P-Pd; Nr.< ЖQŃUuB;xr!(| NLL.𧶸+\H)1YUYbG !A-=wA&/awk\@c%uN50000pixi%@P@DxgLK ǞpݞpYPJ]ksK4i1p^&Wf$ ^nԘX&@<E[? ǻx~qJZJb2 [0zA/%!J긺>/扫 SIḧ\v|WV&S*o㍴@rTꅊ_bnMq`iCJdK @)qNyI'wzKo\ד0W:5 .[ޕX{X.WI$x哉4 ӆgyQ:ua$74h\:(GV/v20000PB-.ϧ2RT[&"9 \nje!s00;tŚןtYeǀrs ⋲Sz H_ JX,d:W~~tuU;1w݃7~}C?we䝽gR;?Ms~wtOi }_8H/(3m \,uQ?;&C=lRKz`  RxWfzfwK4w.dy})w,(6 tw$9:`[@h/D?HL\wg0LzQ1 G~F~2_Y/uQ50p?WIENDB`jquery-ui-1.12.1/themes/base/images/ui-icons_555555_256x240.png000066400000000000000000000072541276627555100233250ustar00rootroot00000000000000PNG  IHDRIJPLTEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUyZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxr:ax|O0AI%=b eY~_|Qd @P(UMZIZ~ &?ׁQ0A`ꇚ^=C cm y M0 vC OK0^eYeYKgqƽ3zHM״iz r88@u۱Z*:>csl52[40'{y#*ajAE;瀣*^WXeYe$/0h@ jro`yg%Y9=@H( (8 dզ"G[chG(<䈹`}8@W:e y/$̰ ޗp@wҏo84f0 7i^ѐrtk8 FdYeYN|a3?b*ICܞ2j`Ul{J-~*SO b2@+(:[m! 3&:o4 E):;@Zc *:x>&zS~7xۥ@rz Cݟ!]jX/C{,˲,tk꛼VO3gLh^~k؈ IeuT?00000zs_>( W`_OfUA6WȻi]l@WIL^6-M^;+t{uQQTE f]1`r- u.p;$ Plu:L`P=@l6/N:ְY vou% =0o8{N?ts $ 0 6 7d;`Z"QNٹ!J @ LEQh&=`^h:!bNK(iR@b5k셳A̕@.**P-Pd; Nr.< ЖQŃUuB;xr!(| NLL.𧶸+\H)1YUYbG !A-=wA&/awk\@c%uN50000pixi%@P@DxgLK ǞpݞpYPJ]ksK4i1p^&Wf$ ^nԘX&@<E[? ǻx~qJZJb2 [0zA/%!J긺>/扫 SIḧ\v|WV&S*o㍴@rTꅊ_bnMq`iCJdK @)qNyI'wzKo\ד0W:5 .[ޕX{X.WI$x哉4 ӆgyQ:ua$74h\:(GV/v20000PB-.ϧ2RT[&"9 \nje!s00;tŚןtYeǀrs ⋲Sz H_ JX,d:W~~tuU;1w݃7~}C?we䝽gR;?Ms~wtOi }_8H/(3m \,uQ?;&C=lRKz`  RxWfzfwK4w.dy})w,(6 tw$9:`[@h/D?HL\wg0LzQ1 G~F~2_Y/uQ50p?WIENDB`jquery-ui-1.12.1/themes/base/images/ui-icons_777620_256x240.png000066400000000000000000000072541276627555100233240ustar00rootroot00000000000000PNG  IHDRIJPLTEwv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv U.GZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxr:ax|O0AI%=b eY~_|Qd @P(UMZIZ~ &?ׁQ0A`ꇚ^=C cm y M0 vC OK0^eYeYKgqƽ3zHM״iz r88@u۱Z*:>csl52[40'{y#*ajAE;瀣*^WXeYe$/0h@ jro`yg%Y9=@H( (8 dզ"G[chG(<䈹`}8@W:e y/$̰ ޗp@wҏo84f0 7i^ѐrtk8 FdYeYN|a3?b*ICܞ2j`Ul{J-~*SO b2@+(:[m! 3&:o4 E):;@Zc *:x>&zS~7xۥ@rz Cݟ!]jX/C{,˲,tk꛼VO3gLh^~k؈ IeuT?00000zs_>( W`_OfUA6WȻi]l@WIL^6-M^;+t{uQQTE f]1`r- u.p;$ Plu:L`P=@l6/N:ְY vou% =0o8{N?ts $ 0 6 7d;`Z"QNٹ!J @ LEQh&=`^h:!bNK(iR@b5k셳A̕@.**P-Pd; Nr.< ЖQŃUuB;xr!(| NLL.𧶸+\H)1YUYbG !A-=wA&/awk\@c%uN50000pixi%@P@DxgLK ǞpݞpYPJ]ksK4i1p^&Wf$ ^nԘX&@<E[? ǻx~qJZJb2 [0zA/%!J긺>/扫 SIḧ\v|WV&S*o㍴@rTꅊ_bnMq`iCJdK @)qNyI'wzKo\ד0W:5 .[ޕX{X.WI$x哉4 ӆgyQ:ua$74h\:(GV/v20000PB-.ϧ2RT[&"9 \nje!s00;tŚןtYeǀrs ⋲Sz H_ JX,d:W~~tuU;1w݃7~}C?we䝽gR;?Ms~wtOi }_8H/(3m \,uQ?;&C=lRKz`  RxWfzfwK4w.dy})w,(6 tw$9:`[@h/D?HL\wg0LzQ1 G~F~2_Y/uQ50p?WIENDB`jquery-ui-1.12.1/themes/base/images/ui-icons_777777_256x240.png000066400000000000000000000072541276627555100233410ustar00rootroot00000000000000PNG  IHDRIJPLTEwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3<>ZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxr:ax|O0AI%=b eY~_|Qd @P(UMZIZ~ &?ׁQ0A`ꇚ^=C cm y M0 vC OK0^eYeYKgqƽ3zHM״iz r88@u۱Z*:>csl52[40'{y#*ajAE;瀣*^WXeYe$/0h@ jro`yg%Y9=@H( (8 dզ"G[chG(<䈹`}8@W:e y/$̰ ޗp@wҏo84f0 7i^ѐrtk8 FdYeYN|a3?b*ICܞ2j`Ul{J-~*SO b2@+(:[m! 3&:o4 E):;@Zc *:x>&zS~7xۥ@rz Cݟ!]jX/C{,˲,tk꛼VO3gLh^~k؈ IeuT?00000zs_>( W`_OfUA6WȻi]l@WIL^6-M^;+t{uQQTE f]1`r- u.p;$ Plu:L`P=@l6/N:ְY vou% =0o8{N?ts $ 0 6 7d;`Z"QNٹ!J @ LEQh&=`^h:!bNK(iR@b5k셳A̕@.**P-Pd; Nr.< ЖQŃUuB;xr!(| NLL.𧶸+\H)1YUYbG !A-=wA&/awk\@c%uN50000pixi%@P@DxgLK ǞpݞpYPJ]ksK4i1p^&Wf$ ^nԘX&@<E[? ǻx~qJZJb2 [0zA/%!J긺>/扫 SIḧ\v|WV&S*o㍴@rTꅊ_bnMq`iCJdK @)qNyI'wzKo\ד0W:5 .[ޕX{X.WI$x哉4 ӆgyQ:ua$74h\:(GV/v20000PB-.ϧ2RT[&"9 \nje!s00;tŚןtYeǀrs ⋲Sz H_ JX,d:W~~tuU;1w݃7~}C?we䝽gR;?Ms~wtOi }_8H/(3m \,uQ?;&C=lRKz`  RxWfzfwK4w.dy})w,(6 tw$9:`[@h/D?HL\wg0LzQ1 G~F~2_Y/uQ50p?WIENDB`jquery-ui-1.12.1/themes/base/images/ui-icons_cc0000_256x240.png000066400000000000000000000072541276627555100234350ustar00rootroot00000000000000PNG  IHDRIJPLTErZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxr:ax|O0AI%=b eY~_|Qd @P(UMZIZ~ &?ׁQ0A`ꇚ^=C cm y M0 vC OK0^eYeYKgqƽ3zHM״iz r88@u۱Z*:>csl52[40'{y#*ajAE;瀣*^WXeYe$/0h@ jro`yg%Y9=@H( (8 dզ"G[chG(<䈹`}8@W:e y/$̰ ޗp@wҏo84f0 7i^ѐrtk8 FdYeYN|a3?b*ICܞ2j`Ul{J-~*SO b2@+(:[m! 3&:o4 E):;@Zc *:x>&zS~7xۥ@rz Cݟ!]jX/C{,˲,tk꛼VO3gLh^~k؈ IeuT?00000zs_>( W`_OfUA6WȻi]l@WIL^6-M^;+t{uQQTE f]1`r- u.p;$ Plu:L`P=@l6/N:ְY vou% =0o8{N?ts $ 0 6 7d;`Z"QNٹ!J @ LEQh&=`^h:!bNK(iR@b5k셳A̕@.**P-Pd; Nr.< ЖQŃUuB;xr!(| NLL.𧶸+\H)1YUYbG !A-=wA&/awk\@c%uN50000pixi%@P@DxgLK ǞpݞpYPJ]ksK4i1p^&Wf$ ^nԘX&@<E[? ǻx~qJZJb2 [0zA/%!J긺>/扫 SIḧ\v|WV&S*o㍴@rTꅊ_bnMq`iCJdK @)qNyI'wzKo\ד0W:5 .[ޕX{X.WI$x哉4 ӆgyQ:ua$74h\:(GV/v20000PB-.ϧ2RT[&"9 \nje!s00;tŚןtYeǀrs ⋲Sz H_ JX,d:W~~tuU;1w݃7~}C?we䝽gR;?Ms~wtOi }_8H/(3m \,uQ?;&C=lRKz`  RxWfzfwK4w.dy})w,(6 tw$9:`[@h/D?HL\wg0LzQ1 G~F~2_Y/uQ50p?WIENDB`jquery-ui-1.12.1/themes/base/images/ui-icons_ffffff_256x240.png000066400000000000000000000072541276627555100237730ustar00rootroot00000000000000PNG  IHDRIJPLTE)[VZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxr:ax|O0AI%=b eY~_|Qd @P(UMZIZ~ &?ׁQ0A`ꇚ^=C cm y M0 vC OK0^eYeYKgqƽ3zHM״iz r88@u۱Z*:>csl52[40'{y#*ajAE;瀣*^WXeYe$/0h@ jro`yg%Y9=@H( (8 dզ"G[chG(<䈹`}8@W:e y/$̰ ޗp@wҏo84f0 7i^ѐrtk8 FdYeYN|a3?b*ICܞ2j`Ul{J-~*SO b2@+(:[m! 3&:o4 E):;@Zc *:x>&zS~7xۥ@rz Cݟ!]jX/C{,˲,tk꛼VO3gLh^~k؈ IeuT?00000zs_>( W`_OfUA6WȻi]l@WIL^6-M^;+t{uQQTE f]1`r- u.p;$ Plu:L`P=@l6/N:ְY vou% =0o8{N?ts $ 0 6 7d;`Z"QNٹ!J @ LEQh&=`^h:!bNK(iR@b5k셳A̕@.**P-Pd; Nr.< ЖQŃUuB;xr!(| NLL.𧶸+\H)1YUYbG !A-=wA&/awk\@c%uN50000pixi%@P@DxgLK ǞpݞpYPJ]ksK4i1p^&Wf$ ^nԘX&@<E[? ǻx~qJZJb2 [0zA/%!J긺>/扫 SIḧ\v|WV&S*o㍴@rTꅊ_bnMq`iCJdK @)qNyI'wzKo\ד0W:5 .[ޕX{X.WI$x哉4 ӆgyQ:ua$74h\:(GV/v20000PB-.ϧ2RT[&"9 \nje!s00;tŚןtYeǀrs ⋲Sz H_ JX,d:W~~tuU;1w݃7~}C?we䝽gR;?Ms~wtOi }_8H/(3m \,uQ?;&C=lRKz`  RxWfzfwK4w.dy})w,(6 tw$9:`[@h/D?HL\wg0LzQ1 G~F~2_Y/uQ50p?WIENDB`jquery-ui-1.12.1/themes/base/menu.css000066400000000000000000000021441276627555100174240ustar00rootroot00000000000000/*! * jQuery UI Menu 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/menu/#theming */ .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: 0; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { margin: 0; cursor: pointer; /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-item-wrapper { position: relative; padding: 3px 1em 3px .4em; } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item-wrapper { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } jquery-ui-1.12.1/themes/base/progressbar.css000066400000000000000000000056021276627555100210130ustar00rootroot00000000000000/*! * jQuery UI Progressbar 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/progressbar/#theming */ .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } jquery-ui-1.12.1/themes/base/resizable.css000066400000000000000000000022561276627555100204440ustar00rootroot00000000000000/*! * jQuery UI Resizable 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } jquery-ui-1.12.1/themes/base/selectable.css000066400000000000000000000005211276627555100205600ustar00rootroot00000000000000/*! * jQuery UI Selectable 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } jquery-ui-1.12.1/themes/base/selectmenu.css000066400000000000000000000016241276627555100206260ustar00rootroot00000000000000/*! * jQuery UI Selectmenu 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/selectmenu/#theming */ .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-text { display: block; margin-right: 20px; overflow: hidden; text-overflow: ellipsis; } .ui-selectmenu-button.ui-button { text-align: left; white-space: nowrap; width: 14em; } .ui-selectmenu-icon.ui-icon { float: right; margin-top: 0; } jquery-ui-1.12.1/themes/base/slider.css000066400000000000000000000025171276627555100177460ustar00rootroot00000000000000/*! * jQuery UI Slider 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/slider/#theming */ .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } jquery-ui-1.12.1/themes/base/sortable.css000066400000000000000000000003731276627555100202750ustar00rootroot00000000000000/*! * jQuery UI Sortable 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } jquery-ui-1.12.1/themes/base/spinner.css000066400000000000000000000017041276627555100201370ustar00rootroot00000000000000/*! * jQuery UI Spinner 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/spinner/#theming */ .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 2em; } .ui-spinner-button { width: 1.6em; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top-style: none; border-bottom-style: none; border-right-style: none; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } jquery-ui-1.12.1/themes/base/tabs.css000066400000000000000000000023011276627555100174040ustar00rootroot00000000000000/*! * jQuery UI Tabs 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/tabs/#theming */ .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } jquery-ui-1.12.1/themes/base/theme.css000066400000000000000000000431351276627555100175670ustar00rootroot00000000000000/*! * jQuery UI CSS Framework 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/theming/ * * To view and modify this theme, visit http://jqueryui.com/themeroller/ */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Arial,Helvetica,sans-serif/*{ffDefault}*/; font-size: 1em/*{fsDefault}*/; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,Helvetica,sans-serif/*{ffDefault}*/; font-size: 1em; } .ui-widget.ui-widget-content { border: 1px solid #c5c5c5/*{borderColorDefault}*/; } .ui-widget-content { border: 1px solid #dddddd/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ /*{bgImgUrlContent}*/ /*{bgContentXPos}*/ /*{bgContentYPos}*/ /*{bgContentRepeat}*/; color: #333333/*{fcContent}*/; } .ui-widget-content a { color: #333333/*{fcContent}*/; } .ui-widget-header { border: 1px solid #dddddd/*{borderColorHeader}*/; background: #e9e9e9/*{bgColorHeader}*/ /*{bgImgUrlHeader}*/ /*{bgHeaderXPos}*/ /*{bgHeaderYPos}*/ /*{bgHeaderRepeat}*/; color: #333333/*{fcHeader}*/; font-weight: bold; } .ui-widget-header a { color: #333333/*{fcHeader}*/; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, /* We use html here because we need a greater specificity to make sure disabled works properly when clicked or hovered */ html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { border: 1px solid #c5c5c5/*{borderColorDefault}*/; background: #f6f6f6/*{bgColorDefault}*/ /*{bgImgUrlDefault}*/ /*{bgDefaultXPos}*/ /*{bgDefaultYPos}*/ /*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #454545/*{fcDefault}*/; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color: #454545/*{fcDefault}*/; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus { border: 1px solid #cccccc/*{borderColorHover}*/; background: #ededed/*{bgColorHover}*/ /*{bgImgUrlHover}*/ /*{bgHoverXPos}*/ /*{bgHoverYPos}*/ /*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #2b2b2b/*{fcHover}*/; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited, a.ui-button:hover, a.ui-button:focus { color: #2b2b2b/*{fcHover}*/; text-decoration: none; } .ui-visual-focus { box-shadow: 0 0 3px 1px rgb(94, 158, 214); } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border: 1px solid #003eff/*{borderColorActive}*/; background: #007fff/*{bgColorActive}*/ /*{bgImgUrlActive}*/ /*{bgActiveXPos}*/ /*{bgActiveYPos}*/ /*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #ffffff/*{fcActive}*/; } .ui-icon-background, .ui-state-active .ui-icon-background { border: #003eff/*{borderColorActive}*/; background-color: #ffffff/*{fcActive}*/; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff/*{fcActive}*/; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #dad55e/*{borderColorHighlight}*/; background: #fffa90/*{bgColorHighlight}*/ /*{bgImgUrlHighlight}*/ /*{bgHighlightXPos}*/ /*{bgHighlightYPos}*/ /*{bgHighlightRepeat}*/; color: #777620/*{fcHighlight}*/; } .ui-state-checked { border: 1px solid #dad55e/*{borderColorHighlight}*/; background: #fffa90/*{bgColorHighlight}*/; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #777620/*{fcHighlight}*/; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #f1a899/*{borderColorError}*/; background: #fddfdf/*{bgColorError}*/ /*{bgImgUrlError}*/ /*{bgErrorXPos}*/ /*{bgErrorYPos}*/ /*{bgErrorRepeat}*/; color: #5f3f3f/*{fcError}*/; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #5f3f3f/*{fcError}*/; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #5f3f3f/*{fcError}*/; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_444444_256x240.png")/*{iconsContent}*/; } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_444444_256x240.png")/*{iconsHeader}*/; } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-button:hover .ui-icon, .ui-button:focus .ui-icon { background-image: url("images/ui-icons_555555_256x240.png")/*{iconsHover}*/; } .ui-state-active .ui-icon, .ui-button:active .ui-icon { background-image: url("images/ui-icons_ffffff_256x240.png")/*{iconsActive}*/; } .ui-state-highlight .ui-icon, .ui-button .ui-state-highlight.ui-icon { background-image: url("images/ui-icons_777620_256x240.png")/*{iconsHighlight}*/; } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cc0000_256x240.png")/*{iconsError}*/; } .ui-button .ui-icon { background-image: url("images/ui-icons_777777_256x240.png")/*{iconsDefault}*/; } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-caret-1-n { background-position: 0 0; } .ui-icon-caret-1-ne { background-position: -16px 0; } .ui-icon-caret-1-e { background-position: -32px 0; } .ui-icon-caret-1-se { background-position: -48px 0; } .ui-icon-caret-1-s { background-position: -65px 0; } .ui-icon-caret-1-sw { background-position: -80px 0; } .ui-icon-caret-1-w { background-position: -96px 0; } .ui-icon-caret-1-nw { background-position: -112px 0; } .ui-icon-caret-2-n-s { background-position: -128px 0; } .ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 3px/*{cornerRadius}*/; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 3px/*{cornerRadius}*/; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 3px/*{cornerRadius}*/; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 3px/*{cornerRadius}*/; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ /*{bgImgUrlOverlay}*/ /*{bgOverlayXPos}*/ /*{bgOverlayYPos}*/ /*{bgOverlayRepeat}*/; opacity: .3/*{opacityOverlay}*/; filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/; /* support: IE8 */ } .ui-widget-shadow { -webkit-box-shadow: 0/*{offsetLeftShadow}*/ 0/*{offsetTopShadow}*/ 5px/*{thicknessShadow}*/ #666666/*{bgColorShadow}*/; box-shadow: 0/*{offsetLeftShadow}*/ 0/*{offsetTopShadow}*/ 5px/*{thicknessShadow}*/ #666666/*{bgColorShadow}*/; } jquery-ui-1.12.1/themes/base/tooltip.css000066400000000000000000000005431276627555100201530ustar00rootroot00000000000000/*! * jQuery UI Tooltip 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/tooltip/#theming */ .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; } body .ui-tooltip { border-width: 2px; } jquery-ui-1.12.1/ui/000077500000000000000000000000001276627555100141635ustar00rootroot00000000000000jquery-ui-1.12.1/ui/.jshintrc000066400000000000000000000004771276627555100160200ustar00rootroot00000000000000{ "boss": true, "curly": true, "eqeqeq": true, "eqnull": true, "expr": true, "immed": true, "noarg": true, "quotmark": "double", "smarttabs": true, "trailing": true, "undef": true, "unused": true, "browser": true, "es3": true, "jquery": true, "globals": { "define": false, "Globalize": false } } jquery-ui-1.12.1/ui/core.js000066400000000000000000000005251276627555100154530ustar00rootroot00000000000000// This file is deprecated in 1.12.0 to be removed in 1.13 ( function() { define( [ "jquery", "./data", "./disable-selection", "./focusable", "./form", "./ie", "./keycode", "./labels", "./jquery-1-7", "./plugin", "./safe-active-element", "./safe-blur", "./scroll-parent", "./tabbable", "./unique-id", "./version" ] ); } )(); jquery-ui-1.12.1/ui/data.js000066400000000000000000000016071276627555100154360ustar00rootroot00000000000000/*! * jQuery UI :data 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: :data Selector //>>group: Core //>>description: Selects elements which have data stored under the specified key. //>>docs: http://api.jqueryui.com/data-selector/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { return $.extend( $.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo( function( dataName ) { return function( elem ) { return !!$.data( elem, dataName ); }; } ) : // Support: jQuery <1.8 function( elem, i, match ) { return !!$.data( elem, match[ 3 ] ); } } ); } ) ); jquery-ui-1.12.1/ui/disable-selection.js000066400000000000000000000020321276627555100201040ustar00rootroot00000000000000/*! * jQuery UI Disable Selection 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: disableSelection //>>group: Core //>>description: Disable selection of text content within the set of matched elements. //>>docs: http://api.jqueryui.com/disableSelection/ // This file is deprecated ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { return $.fn.extend( { disableSelection: ( function() { var eventType = "onselectstart" in document.createElement( "div" ) ? "selectstart" : "mousedown"; return function() { return this.on( eventType + ".ui-disableSelection", function( event ) { event.preventDefault(); } ); }; } )(), enableSelection: function() { return this.off( ".ui-disableSelection" ); } } ); } ) ); jquery-ui-1.12.1/ui/effect.js000066400000000000000000001175301276627555100157640ustar00rootroot00000000000000/*! * jQuery UI Effects 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Effects Core //>>group: Effects // jscs:disable maximumLineLength //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. // jscs:enable maximumLineLength //>>docs: http://api.jqueryui.com/category/effects-core/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { var dataSpace = "ui-effects-", dataSpaceStyle = "ui-effects-style", dataSpaceAnimated = "ui-effects-animated", // Create a local jQuery because jQuery Color relies on it and the // global may not exist with AMD and a custom build (#10199) jQuery = $; $.effects = { effect: {} }; /*! * jQuery Color Animations v2.1.2 * https://github.com/jquery/jquery-color * * Copyright 2014 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * Date: Wed Jan 16 08:47:09 2013 -0600 */ ( function( jQuery, undefined ) { var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", // 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 ] && jQuery.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; } // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0% // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) if ( diff === 0 ) { s = 0; } 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 cssHook and .fx.step function for each named hook. // accept a space separated string of properties color.hook = function( hook ) { var hooks = hook.split( " " ); each( hooks, function( i, hook ) { jQuery.cssHooks[ hook ] = { set: function( elem, value ) { var parsed, curElem, backgroundColor = ""; if ( value !== "transparent" && ( 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 ( e ) { // 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 ) ); }; } ); }; color.hook( stepHooks ); 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( elem ) { var key, len, style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : elem.currentStyle, styles = {}; if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { len = style.length; while ( len-- ) { key = style[ len ]; if ( typeof style[ key ] === "string" ) { styles[ $.camelCase( key ) ] = style[ key ]; } } // Support: Opera, IE <9 } else { for ( key in style ) { if ( typeof style[ key ] === "string" ) { styles[ key ] = style[ key ]; } } } return styles; } 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; } // Support: jQuery <1.8 if ( !$.fn.addBack ) { $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } $.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( "*" ).addBack() : animated; // Map the animated objects to store the original styles. allAnimations = allAnimations.map( function() { var el = $( this ); return { el: el, start: getElementStyles( 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( 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 = $.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: ( function( orig ) { return function( classNames, speed, easing, callback ) { return speed ? $.effects.animateClass.call( this, { add: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; } )( $.fn.addClass ), removeClass: ( function( orig ) { return function( classNames, speed, easing, callback ) { return arguments.length > 1 ? $.effects.animateClass.call( this, { remove: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; } )( $.fn.removeClass ), toggleClass: ( function( orig ) { return function( classNames, force, speed, easing, callback ) { if ( typeof force === "boolean" || force === undefined ) { if ( !speed ) { // Without speed parameter return orig.apply( this, arguments ); } 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 ); } }; } )( $.fn.toggleClass ), switchClass: function( remove, add, speed, easing, callback ) { return $.effects.animateClass.call( this, { add: add, remove: remove }, speed, easing, callback ); } } ); } )(); /******************************************************************************/ /*********************************** EFFECTS **********************************/ /******************************************************************************/ ( function() { if ( $.expr && $.expr.filters && $.expr.filters.animated ) { $.expr.filters.animated = ( function( orig ) { return function( elem ) { return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); }; } )( $.expr.filters.animated ); } if ( $.uiBackCompat !== false ) { $.extend( $.effects, { // Saves a set of properties in a data storage save: function( element, set ) { var i = 0, length = set.length; for ( ; i < 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 = 0, length = set.length; for ( ; i < length; i++ ) { if ( set[ i ] !== null ) { val = element.data( dataSpace + set[ i ] ); element.css( set[ i ], val ); } } }, setMode: function( el, mode ) { if ( mode === "toggle" ) { mode = el.is( ":hidden" ) ? "show" : "hide"; } return mode; }, // 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 ).trigger( "focus" ); } // Hotfix for jQuery 1.4 since some change in wrap() seems to actually // lose the reference to the wrapped element wrapper = element.parent(); // 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 ).trigger( "focus" ); } } return element; } } ); } $.extend( $.effects, { version: "1.12.1", define: function( name, mode, effect ) { if ( !effect ) { effect = mode; mode = "effect"; } $.effects.effect[ name ] = effect; $.effects.effect[ name ].mode = mode; return effect; }, scaledDimensions: function( element, percent, direction ) { if ( percent === 0 ) { return { height: 0, width: 0, outerHeight: 0, outerWidth: 0 }; } var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; return { height: element.height() * y, width: element.width() * x, outerHeight: element.outerHeight() * y, outerWidth: element.outerWidth() * x }; }, clipToBox: function( animation ) { return { width: animation.clip.right - animation.clip.left, height: animation.clip.bottom - animation.clip.top, left: animation.clip.left, top: animation.clip.top }; }, // Injects recently queued functions to be first in line (after "inprogress") unshift: function( element, queueLength, count ) { var queue = element.queue(); if ( queueLength > 1 ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); } element.dequeue(); }, saveStyle: function( element ) { element.data( dataSpaceStyle, element[ 0 ].style.cssText ); }, restoreStyle: function( element ) { element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; element.removeData( dataSpaceStyle ); }, mode: function( element, mode ) { var hidden = element.is( ":hidden" ); if ( mode === "toggle" ) { mode = hidden ? "show" : "hide"; } if ( hidden ? mode === "hide" : mode === "show" ) { mode = "none"; } return mode; }, // Translates a [top,left] array into a baseline value 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 }; }, // Creates a placeholder element so that the original element can be made absolute createPlaceholder: function( element ) { var placeholder, cssPosition = element.css( "position" ), position = element.position(); // Lock in margins first to account for form elements, which // will change margin if you explicitly set height // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 // Support: Safari element.css( { marginTop: element.css( "marginTop" ), marginBottom: element.css( "marginBottom" ), marginLeft: element.css( "marginLeft" ), marginRight: element.css( "marginRight" ) } ) .outerWidth( element.outerWidth() ) .outerHeight( element.outerHeight() ); if ( /^(static|relative)/.test( cssPosition ) ) { cssPosition = "absolute"; placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { // Convert inline to inline block to account for inline elements // that turn to inline block based on content (like img) display: /^(inline|ruby)/.test( element.css( "display" ) ) ? "inline-block" : "block", visibility: "hidden", // Margins need to be set to account for margin collapse marginTop: element.css( "marginTop" ), marginBottom: element.css( "marginBottom" ), marginLeft: element.css( "marginLeft" ), marginRight: element.css( "marginRight" ), "float": element.css( "float" ) } ) .outerWidth( element.outerWidth() ) .outerHeight( element.outerHeight() ) .addClass( "ui-effects-placeholder" ); element.data( dataSpace + "placeholder", placeholder ); } element.css( { position: cssPosition, left: position.left, top: position.top } ); return placeholder; }, removePlaceholder: function( element ) { var dataKey = dataSpace + "placeholder", placeholder = element.data( dataKey ); if ( placeholder ) { placeholder.remove(); element.removeData( dataKey ); } }, // Removes a placeholder if it exists and restores // properties that were modified during placeholder creation cleanUp: function( element ) { $.effects.restoreStyle( element ); $.effects.removePlaceholder( 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 standardAnimationOption( option ) { // Valid standard speeds (nothing, number, named speed) if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { return true; } // Invalid strings - treat as "normal" speed if ( typeof option === "string" && !$.effects.effect[ option ] ) { return true; } // Complete callback if ( $.isFunction( option ) ) { return true; } // Options hash (but not naming an effect) if ( typeof option === "object" && !option.effect ) { return true; } // Didn't match any standard API return false; } $.fn.extend( { effect: function( /* effect, options, speed, callback */ ) { var args = _normalizeArguments.apply( this, arguments ), effectMethod = $.effects.effect[ args.effect ], defaultMode = effectMethod.mode, queue = args.queue, queueName = queue || "fx", complete = args.complete, mode = args.mode, modes = [], prefilter = function( next ) { var el = $( this ), normalizedMode = $.effects.mode( el, mode ) || defaultMode; // Sentinel for duck-punching the :animated psuedo-selector el.data( dataSpaceAnimated, true ); // Save effect mode for later use, // we can't just call $.effects.mode again later, // as the .show() below destroys the initial state modes.push( normalizedMode ); // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13 if ( defaultMode && ( normalizedMode === "show" || ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { el.show(); } if ( !defaultMode || normalizedMode !== "none" ) { $.effects.saveStyle( el ); } if ( $.isFunction( next ) ) { next(); } }; if ( $.fx.off || !effectMethod ) { // Delegate to the original method (e.g., .show()) if possible if ( mode ) { return this[ mode ]( args.duration, complete ); } else { return this.each( function() { if ( complete ) { complete.call( this ); } } ); } } function run( next ) { var elem = $( this ); function cleanup() { elem.removeData( dataSpaceAnimated ); $.effects.cleanUp( elem ); if ( args.mode === "hide" ) { elem.hide(); } done(); } function done() { if ( $.isFunction( complete ) ) { complete.call( elem[ 0 ] ); } if ( $.isFunction( next ) ) { next(); } } // Override mode option on a per element basis, // as toggle can be either show or hide depending on element state args.mode = modes.shift(); if ( $.uiBackCompat !== false && !defaultMode ) { if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { // Call the core method to track "olddisplay" properly elem[ mode ](); done(); } else { effectMethod.call( elem[ 0 ], args, done ); } } else { if ( args.mode === "none" ) { // Call the core method to track "olddisplay" properly elem[ mode ](); done(); } else { effectMethod.call( elem[ 0 ], args, cleanup ); } } } // Run prefilter on all elements first to ensure that // any showing or hiding happens before placeholder creation, // which ensures that any layout changes are correctly captured. return queue === false ? this.each( prefilter ).each( run ) : this.queue( queueName, prefilter ).queue( queueName, run ); }, show: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "show"; return this.effect.call( this, args ); } }; } )( $.fn.show ), hide: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "hide"; return this.effect.call( this, args ); } }; } )( $.fn.hide ), toggle: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) || typeof option === "boolean" ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "toggle"; return this.effect.call( this, args ); } }; } )( $.fn.toggle ), 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; }, cssClip: function( clipObj ) { if ( clipObj ) { return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + clipObj.bottom + "px " + clipObj.left + "px)" ); } return parseClip( this.css( "clip" ), this ); }, transfer: function( options, done ) { var element = $( this ), target = $( options.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 = element.offset(), transfer = $( "
    " ) .appendTo( "body" ) .addClass( options.className ) .css( { top: startPosition.top - fixTop, left: startPosition.left - fixLeft, height: element.innerHeight(), width: element.innerWidth(), position: targetFixed ? "fixed" : "absolute" } ) .animate( animation, options.duration, options.easing, function() { transfer.remove(); if ( $.isFunction( done ) ) { done(); } } ); } } ); function parseClip( str, element ) { var outerWidth = element.outerWidth(), outerHeight = element.outerHeight(), clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; return { top: parseFloat( values[ 1 ] ) || 0, right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), left: parseFloat( values[ 4 ] ) || 0 }; } $.fx.step.clip = function( fx ) { if ( !fx.clipInit ) { fx.start = $( fx.elem ).cssClip(); if ( typeof fx.end === "string" ) { fx.end = parseClip( fx.end, fx.elem ); } fx.clipInit = true; } $( fx.elem ).cssClip( { top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left } ); }; } )(); /******************************************************************************/ /*********************************** 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; }; } ); } )(); return $.effects; } ) ); jquery-ui-1.12.1/ui/effects/000077500000000000000000000000001276627555100156025ustar00rootroot00000000000000jquery-ui-1.12.1/ui/effects/effect-blind.js000066400000000000000000000031121276627555100204570ustar00rootroot00000000000000/*! * jQuery UI Effects Blind 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Blind Effect //>>group: Effects //>>description: Blinds the element. //>>docs: http://api.jqueryui.com/blind-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "blind", "hide", function( options, done ) { var map = { up: [ "bottom", "top" ], vertical: [ "bottom", "top" ], down: [ "top", "bottom" ], left: [ "right", "left" ], horizontal: [ "right", "left" ], right: [ "left", "right" ] }, element = $( this ), direction = options.direction || "up", start = element.cssClip(), animate = { clip: $.extend( {}, start ) }, placeholder = $.effects.createPlaceholder( element ); animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; if ( options.mode === "show" ) { element.cssClip( animate.clip ); if ( placeholder ) { placeholder.css( $.effects.clipToBox( animate ) ); } animate.clip = start; } if ( placeholder ) { placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); } element.animate( animate, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-bounce.js000066400000000000000000000051021276627555100206430ustar00rootroot00000000000000/*! * jQuery UI Effects Bounce 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Bounce Effect //>>group: Effects //>>description: Bounces an element horizontally or vertically n times. //>>docs: http://api.jqueryui.com/bounce-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "bounce", function( options, done ) { var upAnim, downAnim, refValue, element = $( this ), // Defaults: mode = options.mode, hide = mode === "hide", show = mode === "show", direction = options.direction || "up", distance = options.distance, times = options.times || 5, // Number of internal animations anims = times * 2 + ( show || hide ? 1 : 0 ), speed = options.duration / anims, easing = options.easing, // Utility: ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ), i = 0, queuelen = element.queue().length; $.effects.createPlaceholder( element ); refValue = element.css( ref ); // Default distance for the BIGGEST bounce is the outer Distance / 3 if ( !distance ) { distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; } if ( show ) { downAnim = { opacity: 1 }; downAnim[ ref ] = refValue; // If we are showing, force opacity 0 and set the initial position // then do the "first" animation element .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 ] = refValue; // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here for ( ; i < times; i++ ) { upAnim = {}; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; element .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; element.animate( upAnim, speed, easing ); } element.queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-clip.js000066400000000000000000000030071276627555100203210ustar00rootroot00000000000000/*! * jQuery UI Effects Clip 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Clip Effect //>>group: Effects //>>description: Clips the element on and off like an old TV. //>>docs: http://api.jqueryui.com/clip-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "clip", "hide", function( options, done ) { var start, animate = {}, element = $( this ), direction = options.direction || "vertical", both = direction === "both", horizontal = both || direction === "horizontal", vertical = both || direction === "vertical"; start = element.cssClip(); animate.clip = { top: vertical ? ( start.bottom - start.top ) / 2 : start.top, right: horizontal ? ( start.right - start.left ) / 2 : start.right, bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, left: horizontal ? ( start.right - start.left ) / 2 : start.left }; $.effects.createPlaceholder( element ); if ( options.mode === "show" ) { element.cssClip( animate.clip ); animate.clip = start; } element.animate( animate, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-drop.js000066400000000000000000000030311276627555100203330ustar00rootroot00000000000000/*! * jQuery UI Effects Drop 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Drop Effect //>>group: Effects //>>description: Moves an element in one direction and hides it at the same time. //>>docs: http://api.jqueryui.com/drop-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "drop", "hide", function( options, done ) { var distance, element = $( this ), mode = options.mode, show = mode === "show", direction = options.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", animation = { opacity: 0 }; $.effects.createPlaceholder( element ); distance = options.distance || element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; animation[ ref ] = motion + distance; if ( show ) { element.css( animation ); animation[ ref ] = oppositeMotion + distance; animation.opacity = 1; } // Animate element.animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-explode.js000066400000000000000000000055241276627555100210400ustar00rootroot00000000000000/*! * jQuery UI Effects Explode 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Explode Effect //>>group: Effects // jscs:disable maximumLineLength //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. // jscs:enable maximumLineLength //>>docs: http://api.jqueryui.com/explode-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "explode", "hide", function( options, done ) { var i, j, left, top, mx, my, rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, cells = rows, element = $( this ), mode = options.mode, show = mode === "show", // Show and then visibility:hidden the element before calculating offset offset = element.show().css( "visibility", "hidden" ).offset(), // Width and height of a piece width = Math.ceil( element.outerWidth() / cells ), height = Math.ceil( element.outerHeight() / rows ), pieces = []; // 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 element .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 }, options.duration || 500, options.easing, childComplete ); } } function animComplete() { element.css( { visibility: "visible" } ); $( pieces ).remove(); done(); } } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-fade.js000066400000000000000000000016461276627555100203000ustar00rootroot00000000000000/*! * jQuery UI Effects Fade 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Fade Effect //>>group: Effects //>>description: Fades the element. //>>docs: http://api.jqueryui.com/fade-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "fade", "toggle", function( options, done ) { var show = options.mode === "show"; $( this ) .css( "opacity", show ? 0 : 1 ) .animate( { opacity: show ? 1 : 0 }, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-fold.js000066400000000000000000000041471276627555100203240ustar00rootroot00000000000000/*! * jQuery UI Effects Fold 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Fold Effect //>>group: Effects //>>description: Folds an element first horizontally and then vertically. //>>docs: http://api.jqueryui.com/fold-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "fold", "hide", function( options, done ) { // Create element var element = $( this ), mode = options.mode, show = mode === "show", hide = mode === "hide", size = options.size || 15, percent = /([0-9]+)%/.exec( size ), horizFirst = !!options.horizFirst, ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], duration = options.duration / 2, placeholder = $.effects.createPlaceholder( element ), start = element.cssClip(), animation1 = { clip: $.extend( {}, start ) }, animation2 = { clip: $.extend( {}, start ) }, distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], queuelen = element.queue().length; if ( percent ) { size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; } animation1.clip[ ref[ 0 ] ] = size; animation2.clip[ ref[ 0 ] ] = size; animation2.clip[ ref[ 1 ] ] = 0; if ( show ) { element.cssClip( animation2.clip ); if ( placeholder ) { placeholder.css( $.effects.clipToBox( animation2 ) ); } animation2.clip = start; } // Animate element .queue( function( next ) { if ( placeholder ) { placeholder .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); } next(); } ) .animate( animation1, duration, options.easing ) .animate( animation2, duration, options.easing ) .queue( done ); $.effects.unshift( element, queuelen, 4 ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-highlight.js000066400000000000000000000022711276627555100213430ustar00rootroot00000000000000/*! * jQuery UI Effects Highlight 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Highlight Effect //>>group: Effects //>>description: Highlights the background of an element in a defined color for a custom duration. //>>docs: http://api.jqueryui.com/highlight-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "highlight", "show", function( options, done ) { var element = $( this ), animation = { backgroundColor: element.css( "backgroundColor" ) }; if ( options.mode === "hide" ) { animation.opacity = 0; } $.effects.saveStyle( element ); element .css( { backgroundImage: "none", backgroundColor: options.color || "#ffff99" } ) .animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-puff.js000066400000000000000000000017011276627555100203310ustar00rootroot00000000000000/*! * jQuery UI Effects Puff 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Puff Effect //>>group: Effects //>>description: Creates a puff effect by scaling the element up and hiding it at the same time. //>>docs: http://api.jqueryui.com/puff-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect", "./effect-scale" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "puff", "hide", function( options, done ) { var newOptions = $.extend( true, {}, options, { fade: true, percent: parseInt( options.percent, 10 ) || 150 } ); $.effects.effect.scale.call( this, newOptions, done ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-pulsate.js000066400000000000000000000027751276627555100210620ustar00rootroot00000000000000/*! * jQuery UI Effects Pulsate 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Pulsate Effect //>>group: Effects //>>description: Pulsates an element n times by changing the opacity to zero and back. //>>docs: http://api.jqueryui.com/pulsate-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "pulsate", "show", function( options, done ) { var element = $( this ), mode = options.mode, show = mode === "show", hide = mode === "hide", showhide = show || hide, // Showing or hiding leaves off the "last" animation anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), duration = options.duration / anims, animateTo = 0, i = 1, queuelen = element.queue().length; if ( show || !element.is( ":visible" ) ) { element.css( "opacity", 0 ).show(); animateTo = 1; } // Anims - 1 opacity "toggles" for ( ; i < anims; i++ ) { element.animate( { opacity: animateTo }, duration, options.easing ); animateTo = 1 - animateTo; } element.animate( { opacity: animateTo }, duration, options.easing ); element.queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-scale.js000066400000000000000000000024731276627555100204670ustar00rootroot00000000000000/*! * jQuery UI Effects Scale 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Scale Effect //>>group: Effects //>>description: Grows or shrinks an element and its content. //>>docs: http://api.jqueryui.com/scale-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect", "./effect-size" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "scale", function( options, done ) { // Create element var el = $( this ), mode = options.mode, percent = parseInt( options.percent, 10 ) || ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), newOptions = $.extend( true, { from: $.effects.scaledDimensions( el ), to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), origin: options.origin || [ "middle", "center" ] }, options ); // Fade option to support puff if ( options.fade ) { newOptions.from.opacity = 1; newOptions.to.opacity = 0; } $.effects.effect.size.call( this, newOptions, done ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-shake.js000066400000000000000000000034721276627555100204730ustar00rootroot00000000000000/*! * jQuery UI Effects Shake 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Shake Effect //>>group: Effects //>>description: Shakes an element horizontally or vertically n times. //>>docs: http://api.jqueryui.com/shake-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "shake", function( options, done ) { var i = 1, element = $( this ), direction = options.direction || "left", distance = options.distance || 20, times = options.times || 3, anims = times * 2 + 1, speed = Math.round( options.duration / anims ), ref = ( direction === "up" || direction === "down" ) ? "top" : "left", positiveMotion = ( direction === "up" || direction === "left" ), animation = {}, animation1 = {}, animation2 = {}, queuelen = element.queue().length; $.effects.createPlaceholder( element ); // Animation animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; // Animate element.animate( animation, speed, options.easing ); // Shakes for ( ; i < times; i++ ) { element .animate( animation1, speed, options.easing ) .animate( animation2, speed, options.easing ); } element .animate( animation1, speed, options.easing ) .animate( animation, speed / 2, options.easing ) .queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-size.js000066400000000000000000000123251276627555100203470ustar00rootroot00000000000000/*! * jQuery UI Effects Size 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Size Effect //>>group: Effects //>>description: Resize an element to a specified width and height. //>>docs: http://api.jqueryui.com/size-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "size", function( options, done ) { // Create element var baseline, factor, temp, element = $( this ), // Copy for children cProps = [ "fontSize" ], vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], // Set options mode = options.mode, restore = mode !== "effect", scale = options.scale || "both", origin = options.origin || [ "middle", "center" ], position = element.css( "position" ), pos = element.position(), original = $.effects.scaledDimensions( element ), from = options.from || original, to = options.to || $.effects.scaledDimensions( element, 0 ); $.effects.createPlaceholder( element ); if ( mode === "show" ) { temp = from; from = to; to = temp; } // Set scaling factor factor = { from: { y: from.height / original.height, x: from.width / original.width }, to: { y: to.height / original.height, x: to.width / original.width } }; // Scale the css box if ( scale === "box" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { from = $.effects.setTransition( element, vProps, factor.from.y, from ); to = $.effects.setTransition( element, vProps, factor.to.y, to ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { from = $.effects.setTransition( element, hProps, factor.from.x, from ); to = $.effects.setTransition( element, hProps, factor.to.x, to ); } } // Scale the content if ( scale === "content" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { from = $.effects.setTransition( element, cProps, factor.from.y, from ); to = $.effects.setTransition( element, cProps, factor.to.y, to ); } } // Adjust the position properties based on the provided origin points if ( origin ) { baseline = $.effects.getBaseline( origin, original ); from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; } element.css( from ); // Animate the children if desired if ( scale === "content" || scale === "both" ) { vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); // Only animate children with width attributes specified // TODO: is this right? should we include anything with css width specified as well element.find( "*[width]" ).each( function() { var child = $( this ), childOriginal = $.effects.scaledDimensions( child ), childFrom = { height: childOriginal.height * factor.from.y, width: childOriginal.width * factor.from.x, outerHeight: childOriginal.outerHeight * factor.from.y, outerWidth: childOriginal.outerWidth * factor.from.x }, childTo = { height: childOriginal.height * factor.to.y, width: childOriginal.width * factor.to.x, outerHeight: childOriginal.height * factor.to.y, outerWidth: childOriginal.width * factor.to.x }; // Vertical props scaling if ( factor.from.y !== factor.to.y ) { childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); } if ( restore ) { $.effects.saveStyle( child ); } // Animate children child.css( childFrom ); child.animate( childTo, options.duration, options.easing, function() { // Restore children if ( restore ) { $.effects.restoreStyle( child ); } } ); } ); } // Animate element.animate( to, { queue: false, duration: options.duration, easing: options.easing, complete: function() { var offset = element.offset(); if ( to.opacity === 0 ) { element.css( "opacity", from.opacity ); } if ( !restore ) { element .css( "position", position === "static" ? "relative" : position ) .offset( offset ); // Need to save style here so that automatic style restoration // doesn't restore to the original styles from before the animation. $.effects.saveStyle( element ); } done(); } } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-slide.js000066400000000000000000000036151276627555100204770ustar00rootroot00000000000000/*! * jQuery UI Effects Slide 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Slide Effect //>>group: Effects //>>description: Slides an element in and out of the viewport. //>>docs: http://api.jqueryui.com/slide-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.effects.define( "slide", "show", function( options, done ) { var startClip, startRef, element = $( this ), map = { up: [ "bottom", "top" ], down: [ "top", "bottom" ], left: [ "right", "left" ], right: [ "left", "right" ] }, mode = options.mode, direction = options.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", positiveMotion = ( direction === "up" || direction === "left" ), distance = options.distance || element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), animation = {}; $.effects.createPlaceholder( element ); startClip = element.cssClip(); startRef = element.position()[ ref ]; // Define hide animation animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; animation.clip = element.cssClip(); animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; // Reverse the animation if we're showing if ( mode === "show" ) { element.cssClip( animation.clip ); element.css( ref, animation[ ref ] ); animation.clip = startClip; animation[ ref ] = startRef; } // Actually animate element.animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ) ); jquery-ui-1.12.1/ui/effects/effect-transfer.js000066400000000000000000000015261276627555100212220ustar00rootroot00000000000000/*! * jQuery UI Effects Transfer 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Transfer Effect //>>group: Effects //>>description: Displays a transfer effect from one element to another. //>>docs: http://api.jqueryui.com/transfer-effect/ //>>demos: http://jqueryui.com/effect/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { var effect; if ( $.uiBackCompat !== false ) { effect = $.effects.define( "transfer", function( options, done ) { $( this ).transfer( options, done ); } ); } return effect; } ) ); jquery-ui-1.12.1/ui/escape-selector.js000066400000000000000000000007331276627555100176020ustar00rootroot00000000000000( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { // Internal use only return $.ui.escapeSelector = ( function() { var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g; return function( selector ) { return selector.replace( selectorEscape, "\\$1" ); }; } )(); } ) ); jquery-ui-1.12.1/ui/focusable.js000066400000000000000000000043301276627555100164640ustar00rootroot00000000000000/*! * jQuery UI Focusable 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: :focusable Selector //>>group: Core //>>description: Selects elements which can be focused. //>>docs: http://api.jqueryui.com/focusable-selector/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { // Selectors $.ui.focusable = function( element, hasTabindex ) { var map, mapName, img, focusableIfVisible, fieldset, nodeName = element.nodeName.toLowerCase(); if ( "area" === nodeName ) { map = element.parentNode; mapName = map.name; if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { return false; } img = $( "img[usemap='#" + mapName + "']" ); return img.length > 0 && img.is( ":visible" ); } if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { focusableIfVisible = !element.disabled; if ( focusableIfVisible ) { // Form controls within a disabled fieldset are disabled. // However, controls within the fieldset's legend do not get disabled. // Since controls generally aren't placed inside legends, we skip // this portion of the check. fieldset = $( element ).closest( "fieldset" )[ 0 ]; if ( fieldset ) { focusableIfVisible = !fieldset.disabled; } } } else if ( "a" === nodeName ) { focusableIfVisible = element.href || hasTabindex; } else { focusableIfVisible = hasTabindex; } return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); }; // Support: IE 8 only // IE 8 doesn't resolve inherit to visible/hidden for computed values function visible( element ) { var visibility = element.css( "visibility" ); while ( visibility === "inherit" ) { element = element.parent(); visibility = element.css( "visibility" ); } return visibility !== "hidden"; } $.extend( $.expr[ ":" ], { focusable: function( element ) { return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); } } ); return $.ui.focusable; } ) ); jquery-ui-1.12.1/ui/form-reset-mixin.js000066400000000000000000000034041276627555100177270ustar00rootroot00000000000000/*! * jQuery UI Form Reset Mixin 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Form Reset Mixin //>>group: Core //>>description: Refresh input widgets when their form is reset //>>docs: http://api.jqueryui.com/form-reset-mixin/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./form", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { return $.ui.formResetMixin = { _formResetHandler: function() { var form = $( this ); // Wait for the form reset to actually happen before refreshing setTimeout( function() { var instances = form.data( "ui-form-reset-instances" ); $.each( instances, function() { this.refresh(); } ); } ); }, _bindFormResetHandler: function() { this.form = this.element.form(); if ( !this.form.length ) { return; } var instances = this.form.data( "ui-form-reset-instances" ) || []; if ( !instances.length ) { // We don't use _on() here because we use a single event handler per form this.form.on( "reset.ui-form-reset", this._formResetHandler ); } instances.push( this ); this.form.data( "ui-form-reset-instances", instances ); }, _unbindFormResetHandler: function() { if ( !this.form.length ) { return; } var instances = this.form.data( "ui-form-reset-instances" ); instances.splice( $.inArray( this, instances ), 1 ); if ( instances.length ) { this.form.data( "ui-form-reset-instances", instances ); } else { this.form .removeData( "ui-form-reset-instances" ) .off( "reset.ui-form-reset" ); } } }; } ) ); jquery-ui-1.12.1/ui/form.js000066400000000000000000000010471276627555100154660ustar00rootroot00000000000000( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { // Support: IE8 Only // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop // with a string, so we need to find the proper form. return $.fn.form = function() { return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); }; } ) ); jquery-ui-1.12.1/ui/i18n/000077500000000000000000000000001276627555100147425ustar00rootroot00000000000000jquery-ui-1.12.1/ui/i18n/datepicker-af.js000066400000000000000000000022111276627555100177730ustar00rootroot00000000000000/* Afrikaans initialisation for the jQuery UI date picker plugin. */ /* Written by Renier Pretorius. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.af = { closeText: "Selekteer", prevText: "Vorige", nextText: "Volgende", currentText: "Vandag", monthNames: [ "Januarie","Februarie","Maart","April","Mei","Junie", "Julie","Augustus","September","Oktober","November","Desember" ], monthNamesShort: [ "Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des" ], dayNames: [ "Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag" ], dayNamesShort: [ "Son", "Maa", "Din", "Woe", "Don", "Vry", "Sat" ], dayNamesMin: [ "So","Ma","Di","Wo","Do","Vr","Sa" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.af ); return datepicker.regional.af; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ar-DZ.js000066400000000000000000000027511276627555100203330ustar00rootroot00000000000000/* Algerian Arabic Translation for jQuery UI date picker plugin. /* Used in most of Maghreb countries, primarily in Algeria, Tunisia, Morocco. /* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */ /* Mohamed Amine HADDAD -- zatamine@gmail.com */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "ar-DZ" ] = { closeText: "إغلاق", prevText: "<السابق", nextText: "التالي>", currentText: "اليوم", monthNames: [ "جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر","أكتوبر", "نوفمبر", "ديسمبر" ], monthNamesShort: [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ], dayNames: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ], dayNamesShort: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ], dayNamesMin: [ "ح", "ن", "ث", "ر", "خ", "ج", "س" ], weekHeader: "أسبوع", dateFormat: "dd/mm/yy", firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "ar-DZ" ] ); return datepicker.regional[ "ar-DZ" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ar.js000066400000000000000000000027111276627555100200140ustar00rootroot00000000000000/* Arabic Translation for jQuery UI date picker plugin. */ /* Used in most of Arab countries, primarily in Bahrain, */ /* Kuwait, Oman, Qatar, Saudi Arabia and the United Arab Emirates, Egypt, Sudan and Yemen. */ /* Written by Mohammed Alshehri -- m@dralshehri.com */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ar = { closeText: "إغلاق", prevText: "<السابق", nextText: "التالي>", currentText: "اليوم", monthNames: [ "يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر" ], monthNamesShort: [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ], dayNames: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ], dayNamesShort: [ "أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت" ], dayNamesMin: [ "ح", "ن", "ث", "ر", "خ", "ج", "س" ], weekHeader: "أسبوع", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ar ); return datepicker.regional.ar; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-az.js000066400000000000000000000022411276627555100200220ustar00rootroot00000000000000/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Jamil Najafov (necefov33@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.az = { closeText: "Bağla", prevText: "<Geri", nextText: "İrəli>", currentText: "Bugün", monthNames: [ "Yanvar","Fevral","Mart","Aprel","May","İyun", "İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr" ], monthNamesShort: [ "Yan","Fev","Mar","Apr","May","İyun", "İyul","Avq","Sen","Okt","Noy","Dek" ], dayNames: [ "Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə" ], dayNamesShort: [ "B","Be","Ça","Ç","Ca","C","Ş" ], dayNamesMin: [ "B","B","Ç","С","Ç","C","Ş" ], weekHeader: "Hf", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.az ); return datepicker.regional.az; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-be.js000066400000000000000000000026031276627555100200000ustar00rootroot00000000000000/* Belarusian initialisation for the jQuery UI date picker plugin. */ /* Written by Pavel Selitskas */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.be = { closeText: "Зачыніць", prevText: "←Папяр.", nextText: "Наст.→", currentText: "Сёньня", monthNames: [ "Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень", "Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань" ], monthNamesShort: [ "Сту","Лют","Сак","Кра","Тра","Чэр", "Ліп","Жні","Вер","Кас","Ліс","Сьн" ], dayNames: [ "нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота" ], dayNamesShort: [ "ндз","пнд","аўт","срд","чцв","птн","сбт" ], dayNamesMin: [ "Нд","Пн","Аў","Ср","Чц","Пт","Сб" ], weekHeader: "Тд", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.be ); return datepicker.regional.be; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-bg.js000066400000000000000000000025541276627555100200070ustar00rootroot00000000000000/* Bulgarian initialisation for the jQuery UI date picker plugin. */ /* Written by Stoyan Kyosev (http://svest.org). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.bg = { closeText: "затвори", prevText: "<назад", nextText: "напред>", nextBigText: ">>", currentText: "днес", monthNames: [ "Януари","Февруари","Март","Април","Май","Юни", "Юли","Август","Септември","Октомври","Ноември","Декември" ], monthNamesShort: [ "Яну","Фев","Мар","Апр","Май","Юни", "Юли","Авг","Сеп","Окт","Нов","Дек" ], dayNames: [ "Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота" ], dayNamesShort: [ "Нед","Пон","Вто","Сря","Чет","Пет","Съб" ], dayNamesMin: [ "Не","По","Вт","Ср","Че","Пе","Съ" ], weekHeader: "Wk", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.bg ); return datepicker.regional.bg; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-bs.js000066400000000000000000000021251276627555100200150ustar00rootroot00000000000000/* Bosnian i18n for the jQuery UI date picker plugin. */ /* Written by Kenan Konjo. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.bs = { closeText: "Zatvori", prevText: "<", nextText: ">", currentText: "Danas", monthNames: [ "Januar","Februar","Mart","April","Maj","Juni", "Juli","August","Septembar","Oktobar","Novembar","Decembar" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun", "Jul","Aug","Sep","Okt","Nov","Dec" ], dayNames: [ "Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota" ], dayNamesShort: [ "Ned","Pon","Uto","Sri","Čet","Pet","Sub" ], dayNamesMin: [ "Ne","Po","Ut","Sr","Če","Pe","Su" ], weekHeader: "Wk", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.bs ); return datepicker.regional.bs; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ca.js000066400000000000000000000021631276627555100177760ustar00rootroot00000000000000/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */ /* Writers: (joan.leon@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ca = { closeText: "Tanca", prevText: "Anterior", nextText: "Següent", currentText: "Avui", monthNames: [ "gener","febrer","març","abril","maig","juny", "juliol","agost","setembre","octubre","novembre","desembre" ], monthNamesShort: [ "gen","feb","març","abr","maig","juny", "jul","ag","set","oct","nov","des" ], dayNames: [ "diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte" ], dayNamesShort: [ "dg","dl","dt","dc","dj","dv","ds" ], dayNamesMin: [ "dg","dl","dt","dc","dj","dv","ds" ], weekHeader: "Set", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ca ); return datepicker.regional.ca; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-cs.js000066400000000000000000000022441276627555100200200ustar00rootroot00000000000000/* Czech initialisation for the jQuery UI date picker plugin. */ /* Written by Tomas Muller (tomas@tomas-muller.net). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.cs = { closeText: "Zavřít", prevText: "<Dříve", nextText: "Později>", currentText: "Nyní", monthNames: [ "leden","únor","březen","duben","květen","červen", "červenec","srpen","září","říjen","listopad","prosinec" ], monthNamesShort: [ "led","úno","bře","dub","kvě","čer", "čvc","srp","zář","říj","lis","pro" ], dayNames: [ "neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota" ], dayNamesShort: [ "ne", "po", "út", "st", "čt", "pá", "so" ], dayNamesMin: [ "ne","po","út","st","čt","pá","so" ], weekHeader: "Týd", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.cs ); return datepicker.regional.cs; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-cy-GB.js000066400000000000000000000022621276627555100203140ustar00rootroot00000000000000/* Welsh/UK initialisation for the jQuery UI date picker plugin. */ /* Written by William Griffiths. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "cy-GB" ] = { closeText: "Done", prevText: "Prev", nextText: "Next", currentText: "Today", monthNames: [ "Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin", "Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr" ], monthNamesShort: [ "Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws", "Med", "Hyd", "Tac", "Rha" ], dayNames: [ "Dydd Sul", "Dydd Llun", "Dydd Mawrth", "Dydd Mercher", "Dydd Iau", "Dydd Gwener", "Dydd Sadwrn" ], dayNamesShort: [ "Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad" ], dayNamesMin: [ "Su","Ll","Ma","Me","Ia","Gw","Sa" ], weekHeader: "Wy", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "cy-GB" ] ); return datepicker.regional[ "cy-GB" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-da.js000066400000000000000000000022031276627555100177720ustar00rootroot00000000000000/* Danish initialisation for the jQuery UI date picker plugin. */ /* Written by Jan Christensen ( deletestuff@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.da = { closeText: "Luk", prevText: "<Forrige", nextText: "Næste>", currentText: "Idag", monthNames: [ "Januar","Februar","Marts","April","Maj","Juni", "Juli","August","September","Oktober","November","December" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun", "Jul","Aug","Sep","Okt","Nov","Dec" ], dayNames: [ "Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag" ], dayNamesShort: [ "Søn","Man","Tir","Ons","Tor","Fre","Lør" ], dayNamesMin: [ "Sø","Ma","Ti","On","To","Fr","Lø" ], weekHeader: "Uge", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.da ); return datepicker.regional.da; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-de.js000066400000000000000000000021721276627555100200030ustar00rootroot00000000000000/* German initialisation for the jQuery UI date picker plugin. */ /* Written by Milian Wolff (mail@milianw.de). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.de = { closeText: "Schließen", prevText: "<Zurück", nextText: "Vor>", currentText: "Heute", monthNames: [ "Januar","Februar","März","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember" ], monthNamesShort: [ "Jan","Feb","Mär","Apr","Mai","Jun", "Jul","Aug","Sep","Okt","Nov","Dez" ], dayNames: [ "Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag" ], dayNamesShort: [ "So","Mo","Di","Mi","Do","Fr","Sa" ], dayNamesMin: [ "So","Mo","Di","Mi","Do","Fr","Sa" ], weekHeader: "KW", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.de ); return datepicker.regional.de; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-el.js000066400000000000000000000026551276627555100200210ustar00rootroot00000000000000/* Greek (el) initialisation for the jQuery UI date picker plugin. */ /* Written by Alex Cicovic (http://www.alexcicovic.com) */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.el = { closeText: "Κλείσιμο", prevText: "Προηγούμενος", nextText: "Επόμενος", currentText: "Σήμερα", monthNames: [ "Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος", "Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος" ], monthNamesShort: [ "Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν", "Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ" ], dayNames: [ "Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο" ], dayNamesShort: [ "Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ" ], dayNamesMin: [ "Κυ","Δε","Τρ","Τε","Πε","Πα","Σα" ], weekHeader: "Εβδ", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.el ); return datepicker.regional.el; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-en-AU.js000066400000000000000000000022341276627555100203170ustar00rootroot00000000000000/* English/Australia initialisation for the jQuery UI date picker plugin. */ /* Based on the en-GB initialisation. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "en-AU" ] = { closeText: "Done", prevText: "Prev", nextText: "Next", currentText: "Today", monthNames: [ "January","February","March","April","May","June", "July","August","September","October","November","December" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "en-AU" ] ); return datepicker.regional[ "en-AU" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-en-GB.js000066400000000000000000000022051276627555100203000ustar00rootroot00000000000000/* English/UK initialisation for the jQuery UI date picker plugin. */ /* Written by Stuart. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "en-GB" ] = { closeText: "Done", prevText: "Prev", nextText: "Next", currentText: "Today", monthNames: [ "January","February","March","April","May","June", "July","August","September","October","November","December" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "en-GB" ] ); return datepicker.regional[ "en-GB" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-en-NZ.js000066400000000000000000000022361276627555100203430ustar00rootroot00000000000000/* English/New Zealand initialisation for the jQuery UI date picker plugin. */ /* Based on the en-GB initialisation. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "en-NZ" ] = { closeText: "Done", prevText: "Prev", nextText: "Next", currentText: "Today", monthNames: [ "January","February","March","April","May","June", "July","August","September","October","November","December" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "en-NZ" ] ); return datepicker.regional[ "en-NZ" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-eo.js000066400000000000000000000022061276627555100200140ustar00rootroot00000000000000/* Esperanto initialisation for the jQuery UI date picker plugin. */ /* Written by Olivier M. (olivierweb@ifrance.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.eo = { closeText: "Fermi", prevText: "<Anta", nextText: "Sekv>", currentText: "Nuna", monthNames: [ "Januaro","Februaro","Marto","Aprilo","Majo","Junio", "Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun", "Jul","Aŭg","Sep","Okt","Nov","Dec" ], dayNames: [ "Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato" ], dayNamesShort: [ "Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab" ], dayNamesMin: [ "Di","Lu","Ma","Me","Ĵa","Ve","Sa" ], weekHeader: "Sb", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.eo ); return datepicker.regional.eo; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-es.js000066400000000000000000000022011276627555100200130ustar00rootroot00000000000000/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ /* Traducido por Vester (xvester@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.es = { closeText: "Cerrar", prevText: "<Ant", nextText: "Sig>", currentText: "Hoy", monthNames: [ "enero","febrero","marzo","abril","mayo","junio", "julio","agosto","septiembre","octubre","noviembre","diciembre" ], monthNamesShort: [ "ene","feb","mar","abr","may","jun", "jul","ago","sep","oct","nov","dic" ], dayNames: [ "domingo","lunes","martes","miércoles","jueves","viernes","sábado" ], dayNamesShort: [ "dom","lun","mar","mié","jue","vie","sáb" ], dayNamesMin: [ "D","L","M","X","J","V","S" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.es ); return datepicker.regional.es; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-et.js000066400000000000000000000023171276627555100200240ustar00rootroot00000000000000/* Estonian initialisation for the jQuery UI date picker plugin. */ /* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.et = { closeText: "Sulge", prevText: "Eelnev", nextText: "Järgnev", currentText: "Täna", monthNames: [ "Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni", "Juuli","August","September","Oktoober","November","Detsember" ], monthNamesShort: [ "Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets" ], dayNames: [ "Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev" ], dayNamesShort: [ "Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup" ], dayNamesMin: [ "P","E","T","K","N","R","L" ], weekHeader: "näd", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.et ); return datepicker.regional.et; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-eu.js000066400000000000000000000021241276627555100200210ustar00rootroot00000000000000/* Karrikas-ek itzulia (karrikas@karrikas.com) */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.eu = { closeText: "Egina", prevText: "<Aur", nextText: "Hur>", currentText: "Gaur", monthNames: [ "urtarrila","otsaila","martxoa","apirila","maiatza","ekaina", "uztaila","abuztua","iraila","urria","azaroa","abendua" ], monthNamesShort: [ "urt.","ots.","mar.","api.","mai.","eka.", "uzt.","abu.","ira.","urr.","aza.","abe." ], dayNames: [ "igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata" ], dayNamesShort: [ "ig.","al.","ar.","az.","og.","ol.","lr." ], dayNamesMin: [ "ig","al","ar","az","og","ol","lr" ], weekHeader: "As", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.eu ); return datepicker.regional.eu; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-fa.js000066400000000000000000000025571276627555100200100ustar00rootroot00000000000000/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ /* Javad Mowlanezhad -- jmowla@gmail.com */ /* Jalali calendar should supported soon! (Its implemented but I have to test it) */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.fa = { closeText: "بستن", prevText: "<قبلی", nextText: "بعدی>", currentText: "امروز", monthNames: [ "ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر" ], monthNamesShort: [ "1","2","3","4","5","6","7","8","9","10","11","12" ], dayNames: [ "يکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" ], dayNamesShort: [ "ی", "د", "س", "چ", "پ", "ج", "ش" ], dayNamesMin: [ "ی", "د", "س", "چ", "پ", "ج", "ش" ], weekHeader: "هف", dateFormat: "yy/mm/dd", firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fa ); return datepicker.regional.fa; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-fi.js000066400000000000000000000022721276627555100200120ustar00rootroot00000000000000/* Finnish initialisation for the jQuery UI date picker plugin. */ /* Written by Harri Kilpiö (harrikilpio@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.fi = { closeText: "Sulje", prevText: "«Edellinen", nextText: "Seuraava»", currentText: "Tänään", monthNames: [ "Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu", "Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu" ], monthNamesShort: [ "Tammi","Helmi","Maalis","Huhti","Touko","Kesä", "Heinä","Elo","Syys","Loka","Marras","Joulu" ], dayNamesShort: [ "Su","Ma","Ti","Ke","To","Pe","La" ], dayNames: [ "Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai" ], dayNamesMin: [ "Su","Ma","Ti","Ke","To","Pe","La" ], weekHeader: "Vk", dateFormat: "d.m.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fi ); return datepicker.regional.fi; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-fo.js000066400000000000000000000022641276627555100200210ustar00rootroot00000000000000/* Faroese initialisation for the jQuery UI date picker plugin */ /* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.fo = { closeText: "Lat aftur", prevText: "<Fyrra", nextText: "Næsta>", currentText: "Í dag", monthNames: [ "Januar","Februar","Mars","Apríl","Mei","Juni", "Juli","August","September","Oktober","November","Desember" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Mei","Jun", "Jul","Aug","Sep","Okt","Nov","Des" ], dayNames: [ "Sunnudagur", "Mánadagur", "Týsdagur", "Mikudagur", "Hósdagur", "Fríggjadagur", "Leyardagur" ], dayNamesShort: [ "Sun","Mán","Týs","Mik","Hós","Frí","Ley" ], dayNamesMin: [ "Su","Má","Tý","Mi","Hó","Fr","Le" ], weekHeader: "Vk", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fo ); return datepicker.regional.fo; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-fr-CA.js000066400000000000000000000022471276627555100203060ustar00rootroot00000000000000/* Canadian-French initialisation for the jQuery UI date picker plugin. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "fr-CA" ] = { closeText: "Fermer", prevText: "Précédent", nextText: "Suivant", currentText: "Aujourd'hui", monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" ], monthNamesShort: [ "janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc." ], dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ], dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ], dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ], weekHeader: "Sem.", dateFormat: "yy-mm-dd", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "fr-CA" ] ); return datepicker.regional[ "fr-CA" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-fr-CH.js000066400000000000000000000023301276627555100203060ustar00rootroot00000000000000/* Swiss-French initialisation for the jQuery UI date picker plugin. */ /* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "fr-CH" ] = { closeText: "Fermer", prevText: "<Préc", nextText: "Suiv>", currentText: "Courant", monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" ], monthNamesShort: [ "janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc." ], dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ], dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ], dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ], weekHeader: "Sm", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "fr-CH" ] ); return datepicker.regional[ "fr-CH" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-fr.js000066400000000000000000000024311276627555100200200ustar00rootroot00000000000000/* French initialisation for the jQuery UI date picker plugin. */ /* Written by Keith Wood (kbwood{at}iinet.com.au), Stéphane Nahmani (sholby@sholby.net), Stéphane Raimbault */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.fr = { closeText: "Fermer", prevText: "Précédent", nextText: "Suivant", currentText: "Aujourd'hui", monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" ], monthNamesShort: [ "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc." ], dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ], dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ], dayNamesMin: [ "D","L","M","M","J","V","S" ], weekHeader: "Sem.", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fr ); return datepicker.regional.fr; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-gl.js000066400000000000000000000022031276627555100200100ustar00rootroot00000000000000/* Galician localization for 'UI date picker' jQuery extension. */ /* Translated by Jorge Barreiro . */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.gl = { closeText: "Pechar", prevText: "<Ant", nextText: "Seg>", currentText: "Hoxe", monthNames: [ "Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño", "Xullo","Agosto","Setembro","Outubro","Novembro","Decembro" ], monthNamesShort: [ "Xan","Feb","Mar","Abr","Mai","Xuñ", "Xul","Ago","Set","Out","Nov","Dec" ], dayNames: [ "Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado" ], dayNamesShort: [ "Dom","Lun","Mar","Mér","Xov","Ven","Sáb" ], dayNamesMin: [ "Do","Lu","Ma","Mé","Xo","Ve","Sá" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.gl ); return datepicker.regional.gl; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-he.js000066400000000000000000000023651276627555100200130ustar00rootroot00000000000000/* Hebrew initialisation for the UI Datepicker extension. */ /* Written by Amir Hardon (ahardon at gmail dot com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.he = { closeText: "סגור", prevText: "<הקודם", nextText: "הבא>", currentText: "היום", monthNames: [ "ינואר","פברואר","מרץ","אפריל","מאי","יוני", "יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר" ], monthNamesShort: [ "ינו","פבר","מרץ","אפר","מאי","יוני", "יולי","אוג","ספט","אוק","נוב","דצמ" ], dayNames: [ "ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת" ], dayNamesShort: [ "א'","ב'","ג'","ד'","ה'","ו'","שבת" ], dayNamesMin: [ "א'","ב'","ג'","ד'","ה'","ו'","שבת" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.he ); return datepicker.regional.he; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-hi.js000066400000000000000000000030521276627555100200110ustar00rootroot00000000000000/* Hindi initialisation for the jQuery UI date picker plugin. */ /* Written by Michael Dawart. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.hi = { closeText: "बंद", prevText: "पिछला", nextText: "अगला", currentText: "आज", monthNames: [ "जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून", "जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर" ], monthNamesShort: [ "जन", "फर", "मार्च", "अप्रेल", "मई", "जून", "जूलाई", "अग", "सित", "अक्ट", "नव", "दि" ], dayNames: [ "रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार" ], dayNamesShort: [ "रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि" ], dayNamesMin: [ "रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि" ], weekHeader: "हफ्ता", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.hi ); return datepicker.regional.hi; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-hr.js000066400000000000000000000021561276627555100200260ustar00rootroot00000000000000/* Croatian i18n for the jQuery UI date picker plugin. */ /* Written by Vjekoslav Nesek. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.hr = { closeText: "Zatvori", prevText: "<", nextText: ">", currentText: "Danas", monthNames: [ "Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj", "Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac" ], monthNamesShort: [ "Sij","Velj","Ožu","Tra","Svi","Lip", "Srp","Kol","Ruj","Lis","Stu","Pro" ], dayNames: [ "Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota" ], dayNamesShort: [ "Ned","Pon","Uto","Sri","Čet","Pet","Sub" ], dayNamesMin: [ "Ne","Po","Ut","Sr","Če","Pe","Su" ], weekHeader: "Tje", dateFormat: "dd.mm.yy.", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.hr ); return datepicker.regional.hr; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-hu.js000066400000000000000000000022051276627555100200240ustar00rootroot00000000000000/* Hungarian initialisation for the jQuery UI date picker plugin. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.hu = { closeText: "bezár", prevText: "vissza", nextText: "előre", currentText: "ma", monthNames: [ "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" ], monthNamesShort: [ "Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec" ], dayNames: [ "Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" ], dayNamesShort: [ "Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo" ], dayNamesMin: [ "V", "H", "K", "Sze", "Cs", "P", "Szo" ], weekHeader: "Hét", dateFormat: "yy.mm.dd.", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.hu ); return datepicker.regional.hu; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-hy.js000066400000000000000000000026371276627555100200410ustar00rootroot00000000000000/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.hy = { closeText: "Փակել", prevText: "<Նախ.", nextText: "Հաջ.>", currentText: "Այսօր", monthNames: [ "Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս", "Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր" ], monthNamesShort: [ "Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս", "Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ" ], dayNames: [ "կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ" ], dayNamesShort: [ "կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ" ], dayNamesMin: [ "կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ" ], weekHeader: "ՇԲՏ", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.hy ); return datepicker.regional.hy; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-id.js000066400000000000000000000021731276627555100200100ustar00rootroot00000000000000/* Indonesian initialisation for the jQuery UI date picker plugin. */ /* Written by Deden Fathurahman (dedenf@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.id = { closeText: "Tutup", prevText: "<mundur", nextText: "maju>", currentText: "hari ini", monthNames: [ "Januari","Februari","Maret","April","Mei","Juni", "Juli","Agustus","September","Oktober","Nopember","Desember" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Mei","Jun", "Jul","Agus","Sep","Okt","Nop","Des" ], dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ], dayNamesShort: [ "Min","Sen","Sel","Rab","kam","Jum","Sab" ], dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ], weekHeader: "Mg", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.id ); return datepicker.regional.id; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-is.js000066400000000000000000000023201276627555100200210ustar00rootroot00000000000000/* Icelandic initialisation for the jQuery UI date picker plugin. */ /* Written by Haukur H. Thorsson (haukur@eskill.is). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.is = { closeText: "Loka", prevText: "< Fyrri", nextText: "Næsti >", currentText: "Í dag", monthNames: [ "Janúar","Febrúar","Mars","Apríl","Maí","Júní", "Júlí","Ágúst","September","Október","Nóvember","Desember" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maí","Jún", "Júl","Ágú","Sep","Okt","Nóv","Des" ], dayNames: [ "Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur" ], dayNamesShort: [ "Sun","Mán","Þri","Mið","Fim","Fös","Lau" ], dayNamesMin: [ "Su","Má","Þr","Mi","Fi","Fö","La" ], weekHeader: "Vika", dateFormat: "dd.mm.yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.is ); return datepicker.regional.is; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-it-CH.js000066400000000000000000000022611276627555100203160ustar00rootroot00000000000000/* Italian initialisation for the jQuery UI date picker plugin. */ /* Written by Antonello Pasella (antonello.pasella@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "it-CH" ] = { closeText: "Chiudi", prevText: "<Prec", nextText: "Succ>", currentText: "Oggi", monthNames: [ "Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno", "Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre" ], monthNamesShort: [ "Gen","Feb","Mar","Apr","Mag","Giu", "Lug","Ago","Set","Ott","Nov","Dic" ], dayNames: [ "Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato" ], dayNamesShort: [ "Dom","Lun","Mar","Mer","Gio","Ven","Sab" ], dayNamesMin: [ "Do","Lu","Ma","Me","Gi","Ve","Sa" ], weekHeader: "Sm", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "it-CH" ] ); return datepicker.regional[ "it-CH" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-it.js000066400000000000000000000022311276627555100200230ustar00rootroot00000000000000/* Italian initialisation for the jQuery UI date picker plugin. */ /* Written by Antonello Pasella (antonello.pasella@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.it = { closeText: "Chiudi", prevText: "<Prec", nextText: "Succ>", currentText: "Oggi", monthNames: [ "Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno", "Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre" ], monthNamesShort: [ "Gen","Feb","Mar","Apr","Mag","Giu", "Lug","Ago","Set","Ott","Nov","Dic" ], dayNames: [ "Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato" ], dayNamesShort: [ "Dom","Lun","Mar","Mer","Gio","Ven","Sab" ], dayNamesMin: [ "Do","Lu","Ma","Me","Gi","Ve","Sa" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.it ); return datepicker.regional.it; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ja.js000066400000000000000000000022171276627555100200050ustar00rootroot00000000000000/* Japanese initialisation for the jQuery UI date picker plugin. */ /* Written by Kentaro SATO (kentaro@ranvis.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ja = { closeText: "閉じる", prevText: "<前", nextText: "次>", currentText: "今日", monthNames: [ "1月","2月","3月","4月","5月","6月", "7月","8月","9月","10月","11月","12月" ], monthNamesShort: [ "1月","2月","3月","4月","5月","6月", "7月","8月","9月","10月","11月","12月" ], dayNames: [ "日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日" ], dayNamesShort: [ "日","月","火","水","木","金","土" ], dayNamesMin: [ "日","月","火","水","木","金","土" ], weekHeader: "週", dateFormat: "yy/mm/dd", firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: "年" }; datepicker.setDefaults( datepicker.regional.ja ); return datepicker.regional.ja; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ka.js000066400000000000000000000032641276627555100200110ustar00rootroot00000000000000/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Lado Lomidze (lado.lomidze@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ka = { closeText: "დახურვა", prevText: "< წინა", nextText: "შემდეგი >", currentText: "დღეს", monthNames: [ "იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომბერი", "ნოემბერი", "დეკემბერი" ], monthNamesShort: [ "იან","თებ","მარ","აპრ","მაი","ივნ", "ივლ","აგვ","სექ","ოქტ","ნოე","დეკ" ], dayNames: [ "კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი" ], dayNamesShort: [ "კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ" ], dayNamesMin: [ "კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ" ], weekHeader: "კვირა", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ka ); return datepicker.regional.ka; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-kk.js000066400000000000000000000025461276627555100200250ustar00rootroot00000000000000/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.kk = { closeText: "Жабу", prevText: "<Алдыңғы", nextText: "Келесі>", currentText: "Бүгін", monthNames: [ "Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым", "Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан" ], monthNamesShort: [ "Қаң","Ақп","Нау","Сәу","Мам","Мау", "Шіл","Там","Қыр","Қаз","Қар","Жел" ], dayNames: [ "Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі" ], dayNamesShort: [ "жкс","дсн","ссн","срс","бсн","жма","снб" ], dayNamesMin: [ "Жк","Дс","Сс","Ср","Бс","Жм","Сн" ], weekHeader: "Не", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.kk ); return datepicker.regional.kk; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-km.js000066400000000000000000000030731276627555100200230ustar00rootroot00000000000000/* Khmer initialisation for the jQuery calendar extension. */ /* Written by Chandara Om (chandara.teacher@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.km = { closeText: "ធ្វើ​រួច", prevText: "មុន", nextText: "បន្ទាប់", currentText: "ថ្ងៃ​នេះ", monthNames: [ "មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា", "កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ" ], monthNamesShort: [ "មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា", "កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ" ], dayNames: [ "អាទិត្យ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍" ], dayNamesShort: [ "អា", "ច", "អ", "ពុ", "ព្រហ", "សុ", "សៅ" ], dayNamesMin: [ "អា", "ច", "អ", "ពុ", "ព្រហ", "សុ", "សៅ" ], weekHeader: "សប្ដាហ៍", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.km ); return datepicker.regional.km; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ko.js000066400000000000000000000022541276627555100200250ustar00rootroot00000000000000/* Korean initialisation for the jQuery calendar extension. */ /* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie and Myeongjin Lee. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ko = { closeText: "닫기", prevText: "이전달", nextText: "다음달", currentText: "오늘", monthNames: [ "1월","2월","3월","4월","5월","6월", "7월","8월","9월","10월","11월","12월" ], monthNamesShort: [ "1월","2월","3월","4월","5월","6월", "7월","8월","9월","10월","11월","12월" ], dayNames: [ "일요일","월요일","화요일","수요일","목요일","금요일","토요일" ], dayNamesShort: [ "일","월","화","수","목","금","토" ], dayNamesMin: [ "일","월","화","수","목","금","토" ], weekHeader: "주", dateFormat: "yy. m. d.", firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: "년" }; datepicker.setDefaults( datepicker.regional.ko ); return datepicker.regional.ko; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ky.js000066400000000000000000000025341276627555100200400ustar00rootroot00000000000000/* Kyrgyz (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Sergey Kartashov (ebishkek@yandex.ru). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ky = { closeText: "Жабуу", prevText: "<Мур", nextText: "Кий>", currentText: "Бүгүн", monthNames: [ "Январь","Февраль","Март","Апрель","Май","Июнь", "Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ], monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн", "Июл","Авг","Сен","Окт","Ноя","Дек" ], dayNames: [ "жекшемби", "дүйшөмбү", "шейшемби", "шаршемби", "бейшемби", "жума", "ишемби" ], dayNamesShort: [ "жек", "дүй", "шей", "шар", "бей", "жум", "ише" ], dayNamesMin: [ "Жк","Дш","Шш","Шр","Бш","Жм","Иш" ], weekHeader: "Жум", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ky ); return datepicker.regional.ky; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-lb.js000066400000000000000000000022761276627555100200150ustar00rootroot00000000000000/* Luxembourgish initialisation for the jQuery UI date picker plugin. */ /* Written by Michel Weimerskirch */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.lb = { closeText: "Fäerdeg", prevText: "Zréck", nextText: "Weider", currentText: "Haut", monthNames: [ "Januar","Februar","Mäerz","Abrëll","Mee","Juni", "Juli","August","September","Oktober","November","Dezember" ], monthNamesShort: [ "Jan", "Feb", "Mäe", "Abr", "Mee", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ], dayNames: [ "Sonndeg", "Méindeg", "Dënschdeg", "Mëttwoch", "Donneschdeg", "Freideg", "Samschdeg" ], dayNamesShort: [ "Son", "Méi", "Dën", "Mët", "Don", "Fre", "Sam" ], dayNamesMin: [ "So","Mé","Dë","Më","Do","Fr","Sa" ], weekHeader: "W", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.lb ); return datepicker.regional.lb; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-lt.js000066400000000000000000000023371276627555100200350ustar00rootroot00000000000000/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.lt = { closeText: "Uždaryti", prevText: "<Atgal", nextText: "Pirmyn>", currentText: "Šiandien", monthNames: [ "Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis", "Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis" ], monthNamesShort: [ "Sau","Vas","Kov","Bal","Geg","Bir", "Lie","Rugp","Rugs","Spa","Lap","Gru" ], dayNames: [ "sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis" ], dayNamesShort: [ "sek","pir","ant","tre","ket","pen","šeš" ], dayNamesMin: [ "Se","Pr","An","Tr","Ke","Pe","Še" ], weekHeader: "SAV", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.lt ); return datepicker.regional.lt; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-lv.js000066400000000000000000000023141276627555100200320ustar00rootroot00000000000000/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.lv = { closeText: "Aizvērt", prevText: "Iepr.", nextText: "Nāk.", currentText: "Šodien", monthNames: [ "Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs", "Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Mai","Jūn", "Jūl","Aug","Sep","Okt","Nov","Dec" ], dayNames: [ "svētdiena", "pirmdiena", "otrdiena", "trešdiena", "ceturtdiena", "piektdiena", "sestdiena" ], dayNamesShort: [ "svt","prm","otr","tre","ctr","pkt","sst" ], dayNamesMin: [ "Sv","Pr","Ot","Tr","Ct","Pk","Ss" ], weekHeader: "Ned.", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.lv ); return datepicker.regional.lv; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-mk.js000066400000000000000000000024521276627555100200230ustar00rootroot00000000000000/* Macedonian i18n for the jQuery UI date picker plugin. */ /* Written by Stojce Slavkovski. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.mk = { closeText: "Затвори", prevText: "<", nextText: ">", currentText: "Денес", monthNames: [ "Јануари","Февруари","Март","Април","Мај","Јуни", "Јули","Август","Септември","Октомври","Ноември","Декември" ], monthNamesShort: [ "Јан","Фев","Мар","Апр","Мај","Јун", "Јул","Авг","Сеп","Окт","Ное","Дек" ], dayNames: [ "Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота" ], dayNamesShort: [ "Нед","Пон","Вто","Сре","Чет","Пет","Саб" ], dayNamesMin: [ "Не","По","Вт","Ср","Че","Пе","Са" ], weekHeader: "Сед", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.mk ); return datepicker.regional.mk; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ml.js000066400000000000000000000032451276627555100200250ustar00rootroot00000000000000/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Saji Nediyanchath (saji89@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ml = { closeText: "ശരി", prevText: "മുന്നത്തെ", nextText: "അടുത്തത് ", currentText: "ഇന്ന്", monthNames: [ "ജനുവരി","ഫെബ്രുവരി","മാര്‍ച്ച്","ഏപ്രില്‍","മേയ്","ജൂണ്‍", "ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്‍","ഒക്ടോബര്‍","നവംബര്‍","ഡിസംബര്‍" ], monthNamesShort: [ "ജനു", "ഫെബ്", "മാര്‍", "ഏപ്രി", "മേയ്", "ജൂണ്‍", "ജൂലാ", "ആഗ", "സെപ്", "ഒക്ടോ", "നവം", "ഡിസ" ], dayNames: [ "ഞായര്‍", "തിങ്കള്‍", "ചൊവ്വ", "ബുധന്‍", "വ്യാഴം", "വെള്ളി", "ശനി" ], dayNamesShort: [ "ഞായ", "തിങ്ക", "ചൊവ്വ", "ബുധ", "വ്യാഴം", "വെള്ളി", "ശനി" ], dayNamesMin: [ "ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ" ], weekHeader: "ആ", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ml ); return datepicker.regional.ml; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ms.js000066400000000000000000000022041276627555100200260ustar00rootroot00000000000000/* Malaysian initialisation for the jQuery UI date picker plugin. */ /* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ms = { closeText: "Tutup", prevText: "<Sebelum", nextText: "Selepas>", currentText: "hari ini", monthNames: [ "Januari","Februari","Mac","April","Mei","Jun", "Julai","Ogos","September","Oktober","November","Disember" ], monthNamesShort: [ "Jan","Feb","Mac","Apr","Mei","Jun", "Jul","Ogo","Sep","Okt","Nov","Dis" ], dayNames: [ "Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu" ], dayNamesShort: [ "Aha","Isn","Sel","Rab","kha","Jum","Sab" ], dayNamesMin: [ "Ah","Is","Se","Ra","Kh","Ju","Sa" ], weekHeader: "Mg", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ms ); return datepicker.regional.ms; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-nb.js000066400000000000000000000022551276627555100200140ustar00rootroot00000000000000/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */ /* Written by Bjørn Johansen (post@bjornjohansen.no). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.nb = { closeText: "Lukk", prevText: "«Forrige", nextText: "Neste»", currentText: "I dag", monthNames: [ "januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember" ], monthNamesShort: [ "jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des" ], dayNamesShort: [ "søn","man","tir","ons","tor","fre","lør" ], dayNames: [ "søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag" ], dayNamesMin: [ "sø","ma","ti","on","to","fr","lø" ], weekHeader: "Uke", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.nb ); return datepicker.regional.nb; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-nl-BE.js000066400000000000000000000022611276627555100203070ustar00rootroot00000000000000/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */ /* David De Sloovere @DavidDeSloovere */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "nl-BE" ] = { closeText: "Sluiten", prevText: "←", nextText: "→", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], monthNamesShort: [ "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec" ], dayNames: [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ], dayNamesShort: [ "zon", "maa", "din", "woe", "don", "vri", "zat" ], dayNamesMin: [ "zo", "ma", "di", "wo", "do", "vr", "za" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "nl-BE" ] ); return datepicker.regional[ "nl-BE" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-nl.js000066400000000000000000000022511276627555100200220ustar00rootroot00000000000000/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Mathias Bynens */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.nl = { closeText: "Sluiten", prevText: "←", nextText: "→", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], monthNamesShort: [ "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec" ], dayNames: [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ], dayNamesShort: [ "zon", "maa", "din", "woe", "don", "vri", "zat" ], dayNamesMin: [ "zo", "ma", "di", "wo", "do", "vr", "za" ], weekHeader: "Wk", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.nl ); return datepicker.regional.nl; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-nn.js000066400000000000000000000022521276627555100200250ustar00rootroot00000000000000/* Norwegian Nynorsk initialisation for the jQuery UI date picker plugin. */ /* Written by Bjørn Johansen (post@bjornjohansen.no). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.nn = { closeText: "Lukk", prevText: "«Førre", nextText: "Neste»", currentText: "I dag", monthNames: [ "januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember" ], monthNamesShort: [ "jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des" ], dayNamesShort: [ "sun","mån","tys","ons","tor","fre","lau" ], dayNames: [ "sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag" ], dayNamesMin: [ "su","må","ty","on","to","fr","la" ], weekHeader: "Veke", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.nn ); return datepicker.regional.nn; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-no.js000066400000000000000000000022451276627555100200300ustar00rootroot00000000000000/* Norwegian initialisation for the jQuery UI date picker plugin. */ /* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.no = { closeText: "Lukk", prevText: "«Forrige", nextText: "Neste»", currentText: "I dag", monthNames: [ "januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember" ], monthNamesShort: [ "jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des" ], dayNamesShort: [ "søn","man","tir","ons","tor","fre","lør" ], dayNames: [ "søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag" ], dayNamesMin: [ "sø","ma","ti","on","to","fr","lø" ], weekHeader: "Uke", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.no ); return datepicker.regional.no; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-pl.js000066400000000000000000000022361276627555100200270ustar00rootroot00000000000000/* Polish initialisation for the jQuery UI date picker plugin. */ /* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.pl = { closeText: "Zamknij", prevText: "<Poprzedni", nextText: "Następny>", currentText: "Dziś", monthNames: [ "Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec", "Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień" ], monthNamesShort: [ "Sty","Lu","Mar","Kw","Maj","Cze", "Lip","Sie","Wrz","Pa","Lis","Gru" ], dayNames: [ "Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota" ], dayNamesShort: [ "Nie","Pn","Wt","Śr","Czw","Pt","So" ], dayNamesMin: [ "N","Pn","Wt","Śr","Cz","Pt","So" ], weekHeader: "Tydz", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.pl ); return datepicker.regional.pl; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-pt-BR.js000066400000000000000000000023411276627555100203350ustar00rootroot00000000000000/* Brazilian initialisation for the jQuery UI date picker plugin. */ /* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "pt-BR" ] = { closeText: "Fechar", prevText: "<Anterior", nextText: "Próximo>", currentText: "Hoje", monthNames: [ "Janeiro","Fevereiro","Março","Abril","Maio","Junho", "Julho","Agosto","Setembro","Outubro","Novembro","Dezembro" ], monthNamesShort: [ "Jan","Fev","Mar","Abr","Mai","Jun", "Jul","Ago","Set","Out","Nov","Dez" ], dayNames: [ "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado" ], dayNamesShort: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ], dayNamesMin: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "pt-BR" ] ); return datepicker.regional[ "pt-BR" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-pt.js000066400000000000000000000022021276627555100200300ustar00rootroot00000000000000/* Portuguese initialisation for the jQuery UI date picker plugin. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.pt = { closeText: "Fechar", prevText: "Anterior", nextText: "Seguinte", currentText: "Hoje", monthNames: [ "Janeiro","Fevereiro","Março","Abril","Maio","Junho", "Julho","Agosto","Setembro","Outubro","Novembro","Dezembro" ], monthNamesShort: [ "Jan","Fev","Mar","Abr","Mai","Jun", "Jul","Ago","Set","Out","Nov","Dez" ], dayNames: [ "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado" ], dayNamesShort: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ], dayNamesMin: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ], weekHeader: "Sem", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.pt ); return datepicker.regional.pt; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-rm.js000066400000000000000000000023321276627555100200270ustar00rootroot00000000000000/* Romansh initialisation for the jQuery UI date picker plugin. */ /* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.rm = { closeText: "Serrar", prevText: "<Suandant", nextText: "Precedent>", currentText: "Actual", monthNames: [ "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December" ], monthNamesShort: [ "Scha", "Fev", "Mar", "Avr", "Matg", "Zer", "Fan", "Avu", "Sett", "Oct", "Nov", "Dec" ], dayNames: [ "Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda" ], dayNamesShort: [ "Dum","Gli","Mar","Mes","Gie","Ven","Som" ], dayNamesMin: [ "Du","Gl","Ma","Me","Gi","Ve","So" ], weekHeader: "emna", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.rm ); return datepicker.regional.rm; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ro.js000066400000000000000000000023461276627555100200360ustar00rootroot00000000000000/* Romanian initialisation for the jQuery UI date picker plugin. * * Written by Edmond L. (ll_edmond@walla.com) * and Ionut G. Stan (ionut.g.stan@gmail.com) */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ro = { closeText: "Închide", prevText: "« Luna precedentă", nextText: "Luna următoare »", currentText: "Azi", monthNames: [ "Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie", "Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie" ], monthNamesShort: [ "Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec" ], dayNames: [ "Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă" ], dayNamesShort: [ "Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm" ], dayNamesMin: [ "Du","Lu","Ma","Mi","Jo","Vi","Sâ" ], weekHeader: "Săpt", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ro ); return datepicker.regional.ro; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ru.js000066400000000000000000000025461276627555100200460ustar00rootroot00000000000000/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Andrew Stromnov (stromnov@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ru = { closeText: "Закрыть", prevText: "<Пред", nextText: "След>", currentText: "Сегодня", monthNames: [ "Январь","Февраль","Март","Апрель","Май","Июнь", "Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ], monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн", "Июл","Авг","Сен","Окт","Ноя","Дек" ], dayNames: [ "воскресенье","понедельник","вторник","среда","четверг","пятница","суббота" ], dayNamesShort: [ "вск","пнд","втр","срд","чтв","птн","сбт" ], dayNamesMin: [ "Вс","Пн","Вт","Ср","Чт","Пт","Сб" ], weekHeader: "Нед", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ru ); return datepicker.regional.ru; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-sk.js000066400000000000000000000022221276627555100200240ustar00rootroot00000000000000/* Slovak initialisation for the jQuery UI date picker plugin. */ /* Written by Vojtech Rinik (vojto@hmm.sk). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.sk = { closeText: "Zavrieť", prevText: "<Predchádzajúci", nextText: "Nasledujúci>", currentText: "Dnes", monthNames: [ "január","február","marec","apríl","máj","jún", "júl","august","september","október","november","december" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Máj","Jún", "Júl","Aug","Sep","Okt","Nov","Dec" ], dayNames: [ "nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota" ], dayNamesShort: [ "Ned","Pon","Uto","Str","Štv","Pia","Sob" ], dayNamesMin: [ "Ne","Po","Ut","St","Št","Pia","So" ], weekHeader: "Ty", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sk ); return datepicker.regional.sk; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-sl.js000066400000000000000000000022701276627555100200300ustar00rootroot00000000000000/* Slovenian initialisation for the jQuery UI date picker plugin. */ /* Written by Jaka Jancar (jaka@kubje.org). */ /* c = č, s = š z = ž C = Č S = Š Z = Ž */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.sl = { closeText: "Zapri", prevText: "<Prejšnji", nextText: "Naslednji>", currentText: "Trenutni", monthNames: [ "Januar","Februar","Marec","April","Maj","Junij", "Julij","Avgust","September","Oktober","November","December" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun", "Jul","Avg","Sep","Okt","Nov","Dec" ], dayNames: [ "Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota" ], dayNamesShort: [ "Ned","Pon","Tor","Sre","Čet","Pet","Sob" ], dayNamesMin: [ "Ne","Po","To","Sr","Če","Pe","So" ], weekHeader: "Teden", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sl ); return datepicker.regional.sl; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-sq.js000066400000000000000000000022001276627555100200260ustar00rootroot00000000000000/* Albanian initialisation for the jQuery UI date picker plugin. */ /* Written by Flakron Bytyqi (flakron@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.sq = { closeText: "mbylle", prevText: "<mbrapa", nextText: "Përpara>", currentText: "sot", monthNames: [ "Janar","Shkurt","Mars","Prill","Maj","Qershor", "Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor" ], monthNamesShort: [ "Jan","Shk","Mar","Pri","Maj","Qer", "Kor","Gus","Sht","Tet","Nën","Dhj" ], dayNames: [ "E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune" ], dayNamesShort: [ "Di","Hë","Ma","Më","En","Pr","Sh" ], dayNamesMin: [ "Di","Hë","Ma","Më","En","Pr","Sh" ], weekHeader: "Ja", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sq ); return datepicker.regional.sq; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-sr-SR.js000066400000000000000000000021531276627555100203600ustar00rootroot00000000000000/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "sr-SR" ] = { closeText: "Zatvori", prevText: "<", nextText: ">", currentText: "Danas", monthNames: [ "Januar","Februar","Mart","April","Maj","Jun", "Jul","Avgust","Septembar","Oktobar","Novembar","Decembar" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun", "Jul","Avg","Sep","Okt","Nov","Dec" ], dayNames: [ "Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota" ], dayNamesShort: [ "Ned","Pon","Uto","Sre","Čet","Pet","Sub" ], dayNamesMin: [ "Ne","Po","Ut","Sr","Če","Pe","Su" ], weekHeader: "Sed", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "sr-SR" ] ); return datepicker.regional[ "sr-SR" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-sr.js000066400000000000000000000024261276627555100200410ustar00rootroot00000000000000/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.sr = { closeText: "Затвори", prevText: "<", nextText: ">", currentText: "Данас", monthNames: [ "Јануар","Фебруар","Март","Април","Мај","Јун", "Јул","Август","Септембар","Октобар","Новембар","Децембар" ], monthNamesShort: [ "Јан","Феб","Мар","Апр","Мај","Јун", "Јул","Авг","Сеп","Окт","Нов","Дец" ], dayNames: [ "Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота" ], dayNamesShort: [ "Нед","Пон","Уто","Сре","Чет","Пет","Суб" ], dayNamesMin: [ "Не","По","Ут","Ср","Че","Пе","Су" ], weekHeader: "Сед", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sr ); return datepicker.regional.sr; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-sv.js000066400000000000000000000022031276627555100200360ustar00rootroot00000000000000/* Swedish initialisation for the jQuery UI date picker plugin. */ /* Written by Anders Ekdahl ( anders@nomadiz.se). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.sv = { closeText: "Stäng", prevText: "«Förra", nextText: "Nästa»", currentText: "Idag", monthNames: [ "Januari","Februari","Mars","April","Maj","Juni", "Juli","Augusti","September","Oktober","November","December" ], monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun", "Jul","Aug","Sep","Okt","Nov","Dec" ], dayNamesShort: [ "Sön","Mån","Tis","Ons","Tor","Fre","Lör" ], dayNames: [ "Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag" ], dayNamesMin: [ "Sö","Må","Ti","On","To","Fr","Lö" ], weekHeader: "Ve", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sv ); return datepicker.regional.sv; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-ta.js000066400000000000000000000034131276627555100200160ustar00rootroot00000000000000/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by S A Sureshkumar (saskumar@live.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.ta = { closeText: "மூடு", prevText: "முன்னையது", nextText: "அடுத்தது", currentText: "இன்று", monthNames: [ "தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி", "ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி" ], monthNamesShort: [ "தை","மாசி","பங்","சித்","வைகா","ஆனி", "ஆடி","ஆவ","புர","ஐப்","கார்","மார்" ], dayNames: [ "ஞாயிற்றுக்கிழமை", "திங்கட்கிழமை", "செவ்வாய்க்கிழமை", "புதன்கிழமை", "வியாழக்கிழமை", "வெள்ளிக்கிழமை", "சனிக்கிழமை" ], dayNamesShort: [ "ஞாயிறு", "திங்கள்", "செவ்வாய்", "புதன்", "வியாழன்", "வெள்ளி", "சனி" ], dayNamesMin: [ "ஞா","தி","செ","பு","வி","வெ","ச" ], weekHeader: "Не", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ta ); return datepicker.regional.ta; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-th.js000066400000000000000000000030031276627555100200200ustar00rootroot00000000000000/* Thai initialisation for the jQuery UI date picker plugin. */ /* Written by pipo (pipo@sixhead.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.th = { closeText: "ปิด", prevText: "« ย้อน", nextText: "ถัดไป »", currentText: "วันนี้", monthNames: [ "มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน", "กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม" ], monthNamesShort: [ "ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.", "ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค." ], dayNames: [ "อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์" ], dayNamesShort: [ "อา.","จ.","อ.","พ.","พฤ.","ศ.","ส." ], dayNamesMin: [ "อา.","จ.","อ.","พ.","พฤ.","ศ.","ส." ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.th ); return datepicker.regional.th; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-tj.js000066400000000000000000000024731276627555100200340ustar00rootroot00000000000000/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Abdurahmon Saidov (saidovab@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.tj = { closeText: "Идома", prevText: "<Қафо", nextText: "Пеш>", currentText: "Имрӯз", monthNames: [ "Январ","Феврал","Март","Апрел","Май","Июн", "Июл","Август","Сентябр","Октябр","Ноябр","Декабр" ], monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн", "Июл","Авг","Сен","Окт","Ноя","Дек" ], dayNames: [ "якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе" ], dayNamesShort: [ "якш","душ","сеш","чор","пан","ҷум","шан" ], dayNamesMin: [ "Як","Дш","Сш","Чш","Пш","Ҷм","Шн" ], weekHeader: "Хф", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.tj ); return datepicker.regional.tj; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-tr.js000066400000000000000000000021741276627555100200420ustar00rootroot00000000000000/* Turkish initialisation for the jQuery UI date picker plugin. */ /* Written by Izzet Emre Erkan (kara@karalamalar.net). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.tr = { closeText: "kapat", prevText: "<geri", nextText: "ileri>", currentText: "bugün", monthNames: [ "Ocak","Şubat","Mart","Nisan","Mayıs","Haziran", "Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık" ], monthNamesShort: [ "Oca","Şub","Mar","Nis","May","Haz", "Tem","Ağu","Eyl","Eki","Kas","Ara" ], dayNames: [ "Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi" ], dayNamesShort: [ "Pz","Pt","Sa","Ça","Pe","Cu","Ct" ], dayNamesMin: [ "Pz","Pt","Sa","Ça","Pe","Cu","Ct" ], weekHeader: "Hf", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.tr ); return datepicker.regional.tr; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-uk.js000066400000000000000000000026501276627555100200330ustar00rootroot00000000000000/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ /* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.uk = { closeText: "Закрити", prevText: "<", nextText: ">", currentText: "Сьогодні", monthNames: [ "Січень","Лютий","Березень","Квітень","Травень","Червень", "Липень","Серпень","Вересень","Жовтень","Листопад","Грудень" ], monthNamesShort: [ "Січ","Лют","Бер","Кві","Тра","Чер", "Лип","Сер","Вер","Жов","Лис","Гру" ], dayNames: [ "неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота" ], dayNamesShort: [ "нед","пнд","вів","срд","чтв","птн","сбт" ], dayNamesMin: [ "Нд","Пн","Вт","Ср","Чт","Пт","Сб" ], weekHeader: "Тиж", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.uk ); return datepicker.regional.uk; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-vi.js000066400000000000000000000025171276627555100200340ustar00rootroot00000000000000/* Vietnamese initialisation for the jQuery UI date picker plugin. */ /* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional.vi = { closeText: "Đóng", prevText: "<Trước", nextText: "Tiếp>", currentText: "Hôm nay", monthNames: [ "Tháng Một", "Tháng Hai", "Tháng Ba", "Tháng Tư", "Tháng Năm", "Tháng Sáu", "Tháng Bảy", "Tháng Tám", "Tháng Chín", "Tháng Mười", "Tháng Mười Một", "Tháng Mười Hai" ], monthNamesShort: [ "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" ], dayNames: [ "Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy" ], dayNamesShort: [ "CN", "T2", "T3", "T4", "T5", "T6", "T7" ], dayNamesMin: [ "CN", "T2", "T3", "T4", "T5", "T6", "T7" ], weekHeader: "Tu", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.vi ); return datepicker.regional.vi; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-zh-CN.js000066400000000000000000000023621276627555100203330ustar00rootroot00000000000000/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Cloudream (cloudream@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "zh-CN" ] = { closeText: "关闭", prevText: "<上月", nextText: "下月>", currentText: "今天", monthNames: [ "一月","二月","三月","四月","五月","六月", "七月","八月","九月","十月","十一月","十二月" ], monthNamesShort: [ "一月","二月","三月","四月","五月","六月", "七月","八月","九月","十月","十一月","十二月" ], dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ], dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ], dayNamesMin: [ "日","一","二","三","四","五","六" ], weekHeader: "周", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "年" }; datepicker.setDefaults( datepicker.regional[ "zh-CN" ] ); return datepicker.regional[ "zh-CN" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-zh-HK.js000066400000000000000000000023601276627555100203330ustar00rootroot00000000000000/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by SCCY (samuelcychan@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "zh-HK" ] = { closeText: "關閉", prevText: "<上月", nextText: "下月>", currentText: "今天", monthNames: [ "一月","二月","三月","四月","五月","六月", "七月","八月","九月","十月","十一月","十二月" ], monthNamesShort: [ "一月","二月","三月","四月","五月","六月", "七月","八月","九月","十月","十一月","十二月" ], dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ], dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ], dayNamesMin: [ "日","一","二","三","四","五","六" ], weekHeader: "周", dateFormat: "dd-mm-yy", firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: "年" }; datepicker.setDefaults( datepicker.regional[ "zh-HK" ] ); return datepicker.regional[ "zh-HK" ]; } ) ); jquery-ui-1.12.1/ui/i18n/datepicker-zh-TW.js000066400000000000000000000023541276627555100203660ustar00rootroot00000000000000/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Ressol (ressol@gmail.com). */ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }( function( datepicker ) { datepicker.regional[ "zh-TW" ] = { closeText: "關閉", prevText: "<上月", nextText: "下月>", currentText: "今天", monthNames: [ "一月","二月","三月","四月","五月","六月", "七月","八月","九月","十月","十一月","十二月" ], monthNamesShort: [ "一月","二月","三月","四月","五月","六月", "七月","八月","九月","十月","十一月","十二月" ], dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ], dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ], dayNamesMin: [ "日","一","二","三","四","五","六" ], weekHeader: "周", dateFormat: "yy/mm/dd", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "年" }; datepicker.setDefaults( datepicker.regional[ "zh-TW" ] ); return datepicker.regional[ "zh-TW" ]; } ) ); jquery-ui-1.12.1/ui/ie.js000066400000000000000000000005441276627555100151210ustar00rootroot00000000000000( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { // This file is deprecated return $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); } ) ); jquery-ui-1.12.1/ui/jquery-1-7.js000066400000000000000000000047331276627555100163510ustar00rootroot00000000000000/*! * jQuery UI Support for jQuery core 1.7.x 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * */ //>>label: jQuery 1.7 Support //>>group: Core //>>description: Support version 1.7.x of jQuery core ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { // Support: jQuery 1.7 only // Not a great way to check versions, but since we only support 1.7+ and only // need to detect <1.8, this is a simple check that should suffice. Checking // for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 // and we'll never reach 1.70.0 (if we do, we certainly won't be supporting // 1.7 anymore). See #11197 for why we're not using feature detection. if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() // Unlike jQuery Core 1.8+, these only support numeric values to set the // dimensions in pixels $.each( [ "Width", "Height" ], function( i, name ) { var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce( elem, size, border, margin ) { $.each( side, function() { size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; if ( border ) { size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; } if ( margin ) { size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; } } ); return size; } $.fn[ "inner" + name ] = function( size ) { if ( size === undefined ) { return orig[ "inner" + name ].call( this ); } return this.each( function() { $( this ).css( type, reduce( this, size ) + "px" ); } ); }; $.fn[ "outer" + name ] = function( size, margin ) { if ( typeof size !== "number" ) { return orig[ "outer" + name ].call( this, size ); } return this.each( function() { $( this ).css( type, reduce( this, size, true, margin ) + "px" ); } ); }; } ); $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } } ) ); jquery-ui-1.12.1/ui/keycode.js000066400000000000000000000014261276627555100161470ustar00rootroot00000000000000/*! * jQuery UI Keycode 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Keycode //>>group: Core //>>description: Provide keycodes as keynames //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { return $.ui.keyCode = { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 }; } ) ); jquery-ui-1.12.1/ui/labels.js000066400000000000000000000032601276627555100157640ustar00rootroot00000000000000/*! * jQuery UI Labels 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: labels //>>group: Core //>>description: Find all the labels associated with a given input //>>docs: http://api.jqueryui.com/labels/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version", "./escape-selector" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { return $.fn.labels = function() { var ancestor, selector, id, labels, ancestors; // Check control.labels first if ( this[ 0 ].labels && this[ 0 ].labels.length ) { return this.pushStack( this[ 0 ].labels ); } // Support: IE <= 11, FF <= 37, Android <= 2.3 only // Above browsers do not support control.labels. Everything below is to support them // as well as document fragments. control.labels does not work on document fragments labels = this.eq( 0 ).parents( "label" ); // Look for the label based on the id id = this.attr( "id" ); if ( id ) { // We don't search against the document in case the element // is disconnected from the DOM ancestor = this.eq( 0 ).parents().last(); // Get a full set of top level ancestors ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); // Create a selector for the label based on the id selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; labels = labels.add( ancestors.find( selector ).addBack( selector ) ); } // Return whatever we have found for labels return this.pushStack( labels ); }; } ) ); jquery-ui-1.12.1/ui/plugin.js000066400000000000000000000017371276627555100160270ustar00rootroot00000000000000( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { // $.ui.plugin is deprecated. Use $.widget() extensions instead. return $.ui.plugin = { add: function( module, option, set ) { var i, proto = $.ui[ module ].prototype; for ( i in set ) { proto.plugins[ i ] = proto.plugins[ i ] || []; proto.plugins[ i ].push( [ option, set[ i ] ] ); } }, call: function( instance, name, args, allowDisconnected ) { var i, set = instance.plugins[ name ]; if ( !set ) { return; } if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) { return; } for ( i = 0; i < set.length; i++ ) { if ( instance.options[ set[ i ][ 0 ] ] ) { set[ i ][ 1 ].apply( instance.element, args ); } } } }; } ) ); jquery-ui-1.12.1/ui/position.js000066400000000000000000000350341276627555100163720ustar00rootroot00000000000000/*! * jQuery UI Position 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/position/ */ //>>label: Position //>>group: Core //>>description: Positions elements relative to other elements. //>>docs: http://api.jqueryui.com/position/ //>>demos: http://jqueryui.com/position/ ( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } }( function( $ ) { ( function() { var cachedScrollbarWidth, max = Math.max, abs = Math.abs, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position; function getOffsets( offsets, width, height ) { return [ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) ]; } function parseCss( element, property ) { return parseInt( $.css( element, property ), 10 ) || 0; } function getDimensions( elem ) { var raw = elem[ 0 ]; if ( raw.nodeType === 9 ) { return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 } }; } if ( $.isWindow( raw ) ) { return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } if ( raw.preventDefault ) { return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX } }; } return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() }; } $.position = { scrollbarWidth: function() { if ( cachedScrollbarWidth !== undefined ) { return cachedScrollbarWidth; } var w1, w2, div = $( "
    " + "
    " ), innerDiv = div.children()[ 0 ]; $( "body" ).append( div ); w1 = innerDiv.offsetWidth; div.css( "overflow", "scroll" ); w2 = innerDiv.offsetWidth; if ( w1 === w2 ) { w2 = div[ 0 ].clientWidth; } div.remove(); return ( cachedScrollbarWidth = w1 - w2 ); }, getScrollInfo: function( within ) { var overflowX = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-x" ), overflowY = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), hasOverflowY = overflowY === "scroll" || ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); return { width: hasOverflowY ? $.position.scrollbarWidth() : 0, height: hasOverflowX ? $.position.scrollbarWidth() : 0 }; }, getWithinInfo: function( element ) { var withinElement = $( element || window ), isWindow = $.isWindow( withinElement[ 0 ] ), isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, hasOffset = !isWindow && !isDocument; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), width: withinElement.outerWidth(), height: withinElement.outerHeight() }; } }; $.fn.position = function( options ) { if ( !options || !options.of ) { return _position.apply( this, arguments ); } // Make a copy, we don't want to modify arguments options = $.extend( {}, options ); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $( options.of ), within = $.position.getWithinInfo( options.within ), scrollInfo = $.position.getScrollInfo( within ), collision = ( options.collision || "flip" ).split( " " ), offsets = {}; dimensions = getDimensions( target ); if ( target[ 0 ].preventDefault ) { // Force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; // Clone to reuse original targetOffset later basePosition = $.extend( {}, targetOffset ); // Force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each( [ "my", "at" ], function() { var pos = ( options[ this ] || "" ).split( " " ), horizontalOffset, verticalOffset; if ( pos.length === 1 ) { pos = rhorizontal.test( pos[ 0 ] ) ? pos.concat( [ "center" ] ) : rvertical.test( pos[ 0 ] ) ? [ "center" ].concat( pos ) : [ "center", "center" ]; } pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; // Calculate offsets horizontalOffset = roffset.exec( pos[ 0 ] ); verticalOffset = roffset.exec( pos[ 1 ] ); offsets[ this ] = [ horizontalOffset ? horizontalOffset[ 0 ] : 0, verticalOffset ? verticalOffset[ 0 ] : 0 ]; // Reduce to just the positions without the offsets options[ this ] = [ rposition.exec( pos[ 0 ] )[ 0 ], rposition.exec( pos[ 1 ] )[ 0 ] ]; } ); // Normalize collision option if ( collision.length === 1 ) { collision[ 1 ] = collision[ 0 ]; } if ( options.at[ 0 ] === "right" ) { basePosition.left += targetWidth; } else if ( options.at[ 0 ] === "center" ) { basePosition.left += targetWidth / 2; } if ( options.at[ 1 ] === "bottom" ) { basePosition.top += targetHeight; } else if ( options.at[ 1 ] === "center" ) { basePosition.top += targetHeight / 2; } atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); basePosition.left += atOffset[ 0 ]; basePosition.top += atOffset[ 1 ]; return this.each( function() { var collisionPosition, using, elem = $( this ), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss( this, "marginLeft" ), marginTop = parseCss( this, "marginTop" ), collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, position = $.extend( {}, basePosition ), myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); if ( options.my[ 0 ] === "right" ) { position.left -= elemWidth; } else if ( options.my[ 0 ] === "center" ) { position.left -= elemWidth / 2; } if ( options.my[ 1 ] === "bottom" ) { position.top -= elemHeight; } else if ( options.my[ 1 ] === "center" ) { position.top -= elemHeight / 2; } position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; collisionPosition = { marginLeft: marginLeft, marginTop: marginTop }; $.each( [ "left", "top" ], function( i, dir ) { if ( $.ui.position[ collision[ i ] ] ) { $.ui.position[ collision[ i ] ][ dir ]( position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], my: options.my, at: options.at, within: within, elem: elem } ); } } ); if ( options.using ) { // Adds feedback as second argument to using callback, if present using = function( props ) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" }; if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { feedback.horizontal = "center"; } if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { feedback.vertical = "middle"; } if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { feedback.important = "horizontal"; } else { feedback.important = "vertical"; } options.using.call( this, props, feedback ); }; } elem.offset( $.extend( position, { using: using } ) ); } ); }; $.ui.position = { fit: { left: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; // Element is wider than within if ( data.collisionWidth > outerWidth ) { // Element is initially over the left side of within if ( overLeft > 0 && overRight <= 0 ) { newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left += overLeft - newOverRight; // Element is initially over right side of within } else if ( overRight > 0 && overLeft <= 0 ) { position.left = withinOffset; // Element is initially over both left and right sides of within } else { if ( overLeft > overRight ) { position.left = withinOffset + outerWidth - data.collisionWidth; } else { position.left = withinOffset; } } // Too far left -> align with left edge } else if ( overLeft > 0 ) { position.left += overLeft; // Too far right -> align with right edge } else if ( overRight > 0 ) { position.left -= overRight; // Adjust based on position and margin } else { position.left = max( position.left - collisionPosLeft, position.left ); } }, top: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; // Element is taller than within if ( data.collisionHeight > outerHeight ) { // Element is initially over the top of within if ( overTop > 0 && overBottom <= 0 ) { newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top += overTop - newOverBottom; // Element is initially over bottom of within } else if ( overBottom > 0 && overTop <= 0 ) { position.top = withinOffset; // Element is initially over both top and bottom of within } else { if ( overTop > overBottom ) { position.top = withinOffset + outerHeight - data.collisionHeight; } else { position.top = withinOffset; } } // Too far up -> align with top } else if ( overTop > 0 ) { position.top += overTop; // Too far down -> align with bottom edge } else if ( overBottom > 0 ) { position.top -= overBottom; // Adjust based on position and margin } else { position.top = max( position.top - collisionPosTop, position.top ); } } }, flip: { left: function( position, data ) { var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[ 0 ] === "left" ? -data.elemWidth : data.my[ 0 ] === "right" ? data.elemWidth : 0, atOffset = data.at[ 0 ] === "left" ? data.targetWidth : data.at[ 0 ] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[ 0 ], newOverRight, newOverLeft; if ( overLeft < 0 ) { newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { position.left += myOffset + atOffset + offset; } } else if ( overRight > 0 ) { newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { position.left += myOffset + atOffset + offset; } } }, top: function( position, data ) { var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[ 1 ] === "top", myOffset = top ? -data.elemHeight : data.my[ 1 ] === "bottom" ? data.elemHeight : 0, atOffset = data.at[ 1 ] === "top" ? data.targetHeight : data.at[ 1 ] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[ 1 ], newOverTop, newOverBottom; if ( overTop < 0 ) { newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { position.top += myOffset + atOffset + offset; } } else if ( overBottom > 0 ) { newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { position.top += myOffset + atOffset + offset; } } } }, flipfit: { left: function() { $.ui.position.flip.left.apply( this, arguments ); $.ui.position.fit.left.apply( this, arguments ); }, top: function() { $.ui.position.flip.top.apply( this, arguments ); $.ui.position.fit.top.apply( this, arguments ); } } }; } )(); return $.ui.position; } ) ); jquery-ui-1.12.1/ui/safe-active-element.js000066400000000000000000000017301276627555100203400ustar00rootroot00000000000000( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { return $.ui.safeActiveElement = function( document ) { var activeElement; // Support: IE 9 only // IE9 throws an "Unspecified error" accessing document.activeElement from an