Update linters

* Update eslint and stylelint config
* Fix Gruntfile.js to actually run stylelint
This commit is contained in:
Ed Sanders
2019-11-12 15:06:40 +00:00
committed by Niklas Laxström
parent c4f0fdab15
commit d53beca719
15 changed files with 737 additions and 1308 deletions

View File

@@ -1,14 +1,11 @@
{
"extends": "wikimedia",
"env": {
"browser": true,
"jquery": true,
"qunit": true
},
"root": true,
"extends": [
"wikimedia/client",
"wikimedia/jquery"
],
"globals": {
"require": false
},
"rules": {
"dot-notation": [ "error", { "allowKeywords": true } ]
"jQuery": "readonly",
"$": "off"
}
}

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@
/dist
data/supplementalData.xml
/vendor
.eslintcache

View File

@@ -1,5 +1,7 @@
'use strict';
/* eslint-env node, es6 */
module.exports = function ( grunt ) {
grunt.loadNpmTasks( 'grunt-eslint' );
grunt.loadNpmTasks( 'grunt-stylelint' );
@@ -7,9 +9,13 @@ module.exports = function ( grunt ) {
grunt.initConfig( {
eslint: {
options: {
extensions: [ '.js', '.json' ],
cache: true
},
all: [
'**/*.js',
'src/jquery.uls.data.js',
'**/*.{js,json}',
'!src/jquery.uls.data.js',
'!examples/**',
'!node_modules/**',
'!vendor/**'
@@ -29,7 +35,7 @@ module.exports = function ( grunt ) {
}
} );
grunt.registerTask( 'lint', [ 'eslint' ] );
grunt.registerTask( 'lint', [ 'eslint', 'stylelint' ] );
grunt.registerTask( 'test', [ 'lint', 'qunit' ] );
grunt.registerTask( 'default', 'test' );
};

View File

@@ -17,7 +17,13 @@
padding: 0 16px;
}
.uls-lcd--no-quicklist [data-region="all"] .uls-lcd-region-title {
.uls-lcd-region-title {
color: #555;
font-size: 14px;
padding-left: 28px;
}
.uls-lcd--no-quicklist [ data-region='all' ] .uls-lcd-region-title {
display: none;
}
@@ -25,12 +31,6 @@
margin-top: 10px;
}
.uls-lcd-region-title {
color: #555;
font-size: 14px;
padding-left: 28px;
}
/*
* We need to have this as a grid row to push rest of the content below it, but resetting
* padding and margin so that calculating them for children is easier.

View File

@@ -1,5 +1,5 @@
/* stylelint-disable declaration-no-important */
@media only screen and ( max-width: 767px ) {
.uls-mobile.uls-menu {
width: 95%;
left: 2.5%;
@@ -248,6 +248,7 @@
.uls-mobile .hide-for-xlarge {
display: block !important;
}
.uls-mobile .hide-for-small,
.uls-mobile .show-for-medium,
.uls-mobile .hide-for-medium-down,
@@ -274,6 +275,7 @@
.uls-mobile .hide-for-portrait {
display: block !important;
}
.uls-mobile .hide-for-landscape,
.uls-mobile .show-for-portrait {
display: none !important;
@@ -285,6 +287,7 @@
.uls-mobile .hide-for-landscape {
display: block !important;
}
.uls-mobile .hide-for-portrait,
.uls-mobile .show-for-landscape {
display: none !important;
@@ -297,6 +300,7 @@
display: none !important;
}
/* stylelint-disable-next-line no-descending-specificity */
.uls-mobile .hide-for-touch,
.uls-mobile .touch .show-for-touch {
display: block !important;

1920
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -25,14 +25,13 @@
"Siebrand Mazeland"
],
"devDependencies": {
"eslint-config-wikimedia": "^0.7.2",
"eslint-plugin-qunit": "^3.3.0",
"eslint-config-wikimedia": "^0.15.0",
"grunt": "1.0.4",
"grunt-contrib-qunit": "3.1.0",
"grunt-eslint": "21.0.0",
"grunt-stylelint": "0.11.0",
"stylelint": "10.1.0",
"stylelint-config-wikimedia": "0.6.0"
"grunt-eslint": "22.0.0",
"grunt-stylelint": "0.12.0",
"stylelint": "11.1.1",
"stylelint-config-wikimedia": "0.7.0"
},
"repository": {
"type": "git",

6
scripts/.eslintrc.json Normal file
View File

@@ -0,0 +1,6 @@
{
"root": true,
"extends": [
"wikimedia/server"
]
}

View File

@@ -1,4 +1,4 @@
var through = require( 'through' ); // eslint-disable-line no-implicit-globals
var through = require( 'through' );
module.exports = function () {
var data, end, write;

View File

@@ -149,7 +149,7 @@
this.$menu.addClass( widthClasses[ this.menuWidth ] );
if ( !this.initialized ) {
$( 'body' ).prepend( this.$menu );
$( document.body ).prepend( this.$menu );
this.i18n();
this.initialized = true;
}
@@ -160,7 +160,7 @@
this.shown = true;
if ( !this.isMobile() ) {
this.$languageFilter.focus();
this.$languageFilter.trigger( 'focus' );
}
this.visible();
@@ -267,8 +267,8 @@
this.$languageFilter.on( 'resultsfound.uls', this.success.bind( this ) );
$( 'html' ).click( this.cancel.bind( this ) );
$( window ).resize( $.fn.uls.debounce( this.resize.bind( this ), 250 ) );
$( document.body ).on( 'click', this.cancel.bind( this ) );
$( window ).on( 'resize', $.fn.uls.debounce( this.resize.bind( this ), 250 ) );
},
resize: function () {
@@ -477,6 +477,7 @@
} else {
scrollPosition = panelBottom - windowHeight;
}
// eslint-disable-next-line no-jquery/no-global-selector
$( 'html, body' ).stop().animate( {
scrollTop: scrollPosition
}, 500 );

View File

@@ -103,7 +103,7 @@
e.preventDefault();
e.stopPropagation();
query = $.trim( this.$element.val() ).toLowerCase();
query = ( this.$element.val() || '' ).trim().toLowerCase();
if ( this.selectedLanguage ) {
// this.selectLanguage will be populated from a matching search
@@ -126,7 +126,7 @@
this.$element.val( '' );
if ( !$.fn.uls.Constructor.prototype.isMobile() ) {
this.$element.focus();
this.$element.trigger( 'focus' );
}
this.toggleClear();
@@ -160,7 +160,7 @@
search: function () {
var languages = Object.keys( this.options.languages ),
results = [],
query = $.trim( this.$element.val() ).toLowerCase();
query = ( this.$element.val() || '' ).trim().toLowerCase();
if ( query === '' ) {
this.options.lcd.setGroupByRegionOverride( null );
@@ -189,6 +189,7 @@
var autofillLabel,
results = [];
// eslint-disable-next-line no-jquery/no-each-util
$.each( result.languagesearch, function ( apiCode, name ) {
var code, redirect;

View File

@@ -57,7 +57,7 @@
this.$element.addClass( 'uls-lcd' );
this.regionLanguages = {};
this.renderTimeout = null;
this.cachedQuicklist = null;
this.$cachedQuicklist = null;
this.groupByRegionOverride = null;
this.render();
@@ -327,17 +327,17 @@
buildQuicklist: function () {
var quickList, $quickListSection, $quickListSectionTitle;
if ( this.cachedQuicklist !== null ) {
return this.cachedQuicklist;
if ( this.$cachedQuicklist !== null ) {
return this.$cachedQuicklist;
}
if ( $.isFunction( this.options.quickList ) ) {
if ( typeof this.options.quickList === 'function' ) {
this.options.quickList = this.options.quickList();
}
if ( !this.options.quickList.length ) {
this.cachedQuicklist = $( [] );
return this.cachedQuicklist;
this.$cachedQuicklist = $( [] );
return this.$cachedQuicklist;
}
// Pick only the first elements, because we don't have room for more
@@ -363,8 +363,8 @@
$quickListSectionTitle.i18n();
this.cachedQuicklist = $quickListSection;
return this.cachedQuicklist;
this.$cachedQuicklist = $quickListSection;
return this.$cachedQuicklist;
},
show: function () {
@@ -382,7 +382,7 @@
},
focus: function () {
this.$element.focus();
this.$element.trigger( 'focus' );
},
/**

7
test/.eslintrc.json Normal file
View File

@@ -0,0 +1,7 @@
{
"root": true,
"extends": [
"wikimedia/qunit",
"../.eslintrc.json"
]
}

View File

@@ -18,11 +18,6 @@
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.14.0.css">
<script src="https://code.jquery.com/qunit/qunit-1.14.0.js"></script>
<!-- Test config -->
<script>
QUnit.config.requireExpects = true;
</script>
<!-- Test Suite -->
<script src="jquery.uls.test.js"></script>

View File

@@ -16,9 +16,9 @@
( function ( $ ) {
'use strict';
module( 'jquery.uls' );
QUnit.module( 'jquery.uls' );
test( '-- Initial check', 1, function ( assert ) {
QUnit.test( '-- Initial check', function ( assert ) {
assert.ok( $.fn.uls, '$.fn.uls is defined' );
} );