aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--grunt.js93
-rw-r--r--themes/base/jquery.ui.spinner.css2
-rw-r--r--themes/base/jquery.ui.tabs.css2
-rw-r--r--ui/jquery.ui.autocomplete.js10
-rw-r--r--ui/jquery.ui.menu.js2
-rw-r--r--ui/jquery.ui.position.js2
-rw-r--r--ui/jquery.ui.tabs.js4
7 files changed, 64 insertions, 51 deletions
diff --git a/grunt.js b/grunt.js
index 74713be5d..0887cad4c 100644
--- a/grunt.js
+++ b/grunt.js
@@ -260,21 +260,34 @@ grunt.initConfig({
qunit: {
files: grunt.file.expandFiles( "tests/unit/**/*.html" ).filter(function( file ) {
// disabling everything that doesn't (quite) work with PhantomJS for now
- // except for all|index|test, try to include more as we go
- return !( /(all|index|test|draggable|droppable|selectable|resizable|sortable|dialog|slider|datepicker|tabs|tabs_deprecated)\.html/ ).test( file );
+ // TODO except for all|index|test, try to include more as we go
+ return !( /(all|all-active|index|test|draggable|droppable|selectable|resizable|sortable|dialog|slider|datepicker|tabs|tabs_deprecated)\.html$/ ).test( file );
})
},
lint: {
- ui: "ui/*",
- grunt: "grunt.js",
- tests: "tests/unit/**/*.js"
+ ui: grunt.file.expandFiles( "ui/*.js" ).filter(function( file ) {
+ // TODO remove items from this list once rewritten
+ return !( /(effects.core|mouse|datepicker|draggable|droppable|resizable|selectable|sortable)\.js$/ ).test( file );
+ }),
+ grunt: "grunt.js"
+ // TODO enabled once fixed up
+ // tests: "tests/unit/**/*.js"
},
csslint: {
+ // nothing: []
+ // TODO figure out what to check for, then fix and enable
base_theme: {
- src: "themes/base/*.css",
+ src: grunt.file.expandFiles( "themes/base/*.css" ).filter(function( file ) {
+ // TODO remove items from this list once rewritten
+ return !( /(button|datepicker|core|dialog|theme)\.css$/ ).test( file );
+ }),
+ // TODO consider reenabling some of these rules
rules: {
"import": false,
- "overqualified-elements": 2
+ "important": false,
+ "outline-none": false,
+ // especially this one
+ "overqualified-elements": false
}
}
},
@@ -348,9 +361,11 @@ grunt.registerMultiTask( "copy", "Copy files to destination folder and replace @
function replaceVersion( source ) {
return source.replace( "@VERSION", grunt.config( "pkg.version" ) );
}
- var files = grunt.file.expandFiles( this.file.src );
- var target = this.file.dest + "/";
- var strip = this.data.strip;
+ var files = grunt.file.expandFiles( this.file.src ),
+ target = this.file.dest + "/",
+ strip = this.data.strip,
+ renameCount = 0,
+ fileName;
if ( typeof strip === "string" ) {
strip = new RegExp( "^" + grunt.template.process( strip, grunt.config() ).replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ) );
}
@@ -365,8 +380,7 @@ grunt.registerMultiTask( "copy", "Copy files to destination folder and replace @
}
});
grunt.log.writeln( "Copied " + files.length + " files." );
- var renameCount = 0;
- for ( var fileName in this.data.renames ) {
+ for ( fileName in this.data.renames ) {
renameCount += 1;
grunt.file.copy( fileName, target + grunt.template.process( this.data.renames[ fileName ], grunt.config() ) );
}
@@ -393,9 +407,9 @@ grunt.registerMultiTask( "zip", "Create a zip file for release", function() {
//zip.writeZip( "dist/" + this.file.dest );
//grunt.log.writeln( "Wrote " + files.length + " files to " + this.file.dest );
- var done = this.async();
- var dest = this.file.dest;
- var src = grunt.template.process( this.file.src, grunt.config() );
+ var done = this.async(),
+ dest = this.file.dest,
+ src = grunt.template.process( this.file.src, grunt.config() );
grunt.utils.spawn({
cmd: "zip",
args: [ "-r", dest, src ],
@@ -418,9 +432,9 @@ grunt.registerMultiTask( "md5", "Create list of md5 hashes for CDN uploads", fun
if ( path.existsSync( this.file.dest ) ) {
fs.unlinkSync( this.file.dest );
}
- var crypto = require( "crypto" );
- var dir = this.file.src + "/";
- var hashes = [];
+ var crypto = require( "crypto" ),
+ dir = this.file.src + "/",
+ hashes = [];
grunt.file.expandFiles( dir + "**/*" ).forEach(function( fileName ) {
var hash = crypto.createHash( "md5" );
hash.update( grunt.file.read( fileName, "ascii" ) );
@@ -436,15 +450,15 @@ grunt.registerTask( "download_docs", function() {
return value[0].toUpperCase() + value.slice(1);
}
// should be grunt.config("pkg.version")?
- var version = "1.8";
- var docsDir = "dist/docs";
- var files = "draggable droppable resizable selectable sortable accordion autocomplete button datepicker dialog progressbar slider tabs position"
- .split(" ").map(function(widget) {
- return {
- url: "http://docs.jquery.com/action/render/UI/API/" + version + "/" + capitalize(widget),
- dest: docsDir + '/' + widget + '.html'
- };
- });
+ var version = "1.8",
+ docsDir = "dist/docs",
+ files = "draggable droppable resizable selectable sortable accordion autocomplete button datepicker dialog progressbar slider tabs position"
+ .split(" ").map(function(widget) {
+ return {
+ url: "http://docs.jquery.com/action/render/UI/API/" + version + "/" + capitalize(widget),
+ dest: docsDir + '/' + widget + '.html'
+ };
+ });
files = files.concat("animate addClass effect hide removeClass show switchClass toggle toggleClass".split(" ").map(function(widget) {
return {
url: "http://docs.jquery.com/action/render/UI/Effects/" + widget,
@@ -467,15 +481,15 @@ grunt.registerTask( "download_docs", function() {
grunt.registerTask( "download_themes", function() {
// var AdmZip = require('adm-zip');
- var done = this.async();
- var themes = grunt.file.read( "build/themes" ).split(",");
- var requests = 0;
+ var done = this.async(),
+ themes = grunt.file.read( "build/themes" ).split(","),
+ requests = 0;
grunt.file.mkdir( "dist/tmp" );
themes.forEach(function( theme, index ) {
requests += 1;
grunt.file.mkdir( "dist/tmp/" + index );
- var zipFileName = "dist/tmp/" + index + ".zip";
- var out = fs.createWriteStream( zipFileName );
+ var zipFileName = "dist/tmp/" + index + ".zip",
+ out = fs.createWriteStream( zipFileName );
out.on( "close", function() {
grunt.log.writeln( "done downloading " + zipFileName );
// TODO AdmZip produces "crc32 checksum failed", need to figure out why
@@ -500,20 +514,19 @@ grunt.registerTask( "download_themes", function() {
grunt.registerTask( "copy_themes", function() {
// each package includes the base theme, ignore that
- var filter = /themes\/base/;
- var files = grunt.file.expandFiles( "dist/tmp/*/development-bundle/themes/**/*" ).filter(function( fileĀ ) {
- return !filter.test( file );
- });
- // TODO the grunt.template.process call shouldn't be necessary
- var target = "dist/" + grunt.template.process( grunt.config( "files.themes" ), grunt.config() ) + "/";
+ var filter = /themes\/base/,
+ files = grunt.file.expandFiles( "dist/tmp/*/development-bundle/themes/**/*" ).filter(function( fileĀ ) {
+ return !filter.test( file );
+ }),
+ // TODO the grunt.template.process call shouldn't be necessary
+ target = "dist/" + grunt.template.process( grunt.config( "files.themes" ), grunt.config() ) + "/",
+ distFolder = "dist/" + grunt.template.process( grunt.config( "files.dist" ), grunt.config() );
files.forEach(function( fileName ) {
var targetFile = fileName.replace( /dist\/tmp\/\d+\/development-bundle\//, "" ).replace( "jquery-ui-.custom", "jquery-ui" );
grunt.file.copy( fileName, target + targetFile );
});
// copy minified base theme from regular release
- // TODO same as the one above
- var distFolder = "dist/" + grunt.template.process( grunt.config( "files.dist" ), grunt.config() );
files = grunt.file.expandFiles( distFolder + "/themes/base/**/*" );
files.forEach(function( fileName ) {
grunt.file.copy( fileName, target + fileName.replace( distFolder, "" ) );
diff --git a/themes/base/jquery.ui.spinner.css b/themes/base/jquery.ui.spinner.css
index 7c0737c31..50d8e19b7 100644
--- a/themes/base/jquery.ui.spinner.css
+++ b/themes/base/jquery.ui.spinner.css
@@ -9,7 +9,7 @@
*/
.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
-.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; z-index: 100; text-align: center; vertical-align: middle; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
+.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; z-index: 100; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
.ui-spinner-up { top: 0; }
diff --git a/themes/base/jquery.ui.tabs.css b/themes/base/jquery.ui.tabs.css
index 5282817c2..6a5c455f9 100644
--- a/themes/base/jquery.ui.tabs.css
+++ b/themes/base/jquery.ui.tabs.css
@@ -13,5 +13,5 @@
.ui-tabs .ui-tabs-nav li a { 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 a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index 226d40605..ab4d17584 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -107,13 +107,13 @@ $.widget( "ui.autocomplete", {
// which causes forms to submit
suppressKeyPress = true;
event.preventDefault();
+ self.menu.select( event );
}
- //passthrough - ENTER and TAB both select the current element
+ break;
case keyCode.TAB:
- if ( !self.menu.active ) {
- return;
+ if ( self.menu.active ) {
+ self.menu.select( event );
}
- self.menu.select( event );
break;
case keyCode.ESCAPE:
if ( self.menu.element.is(":visible") ) {
@@ -524,7 +524,7 @@ $.widget( "ui.autocomplete", {
$.extend( $.ui.autocomplete, {
escapeRegex: function( value ) {
- return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
},
filter: function(array, term) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js
index af22c19b0..526789e9e 100644
--- a/ui/jquery.ui.menu.js
+++ b/ui/jquery.ui.menu.js
@@ -189,7 +189,7 @@ $.widget( "ui.menu", {
character = prev + character;
}
function escape( value ) {
- return value.replace( /[-[\]{}()*+?.,\\^$|#\s]/g , "\\$&" );
+ return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
}
match = this.activeMenu.children( ".ui-menu-item" ).filter( function() {
return new RegExp("^" + escape(character), "i")
diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js
index 538daed26..95b8b460d 100644
--- a/ui/jquery.ui.position.js
+++ b/ui/jquery.ui.position.js
@@ -13,7 +13,7 @@ $.ui = $.ui || {};
var rhorizontal = /left|center|right/,
rvertical = /top|center|bottom/,
- roffset = /[+-]\d+%?/,
+ roffset = /[\+\-]\d+%?/,
rposition = /^\w+/,
rpercent = /%$/,
center = "center",
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index 95113fc57..fb384e563 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -162,7 +162,7 @@ $.widget( "ui.tabs", {
},
_sanitizeSelector: function( hash ) {
- return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@[\]^`{|}~]/g, "\\$&" ) : "";
+ return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
},
refresh: function() {
@@ -841,7 +841,7 @@ if ( $.uiBackCompat !== false ) {
_tabId: function( a ) {
return $( a ).attr( "aria-controls" ) ||
- a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF-]/g, "" ) ||
+ a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF\-]/g, "" ) ||
this.options.idPrefix + getNextTabId();
}
});