Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
7d15604
Improve docs:
kswedberg Mar 3, 2013
bf53003
Clean up defaults object comments
kswedberg Mar 3, 2013
2e2206d
Rename (deprecated) component.json to bower.json
kswedberg Jul 15, 2013
eac3d02
Add preventDefault option and bump to 1.4.11.
kswedberg Jul 15, 2013
38a975a
Add syntax highlighting for index.html
kswedberg Jul 16, 2013
11668bd
Ensure scrollable element is set with proper direction
kswedberg Sep 19, 2013
e915e10
Bumped version and updated dist files
kswedberg Sep 19, 2013
2c246cf
Update bbq demo
kswedberg Sep 20, 2013
2da2bf3
Add "options" argument feature to get/set options after init
kswedberg Nov 2, 2013
ffdc220
Build files and bump version
kswedberg Nov 2, 2013
037a27b
Update jquery.js
kswedberg Feb 22, 2014
2a141c2
Readme: Add note about setting options after init
kswedberg Feb 22, 2014
1a91440
Avoid "Cannot call method 'replace' of undefined" error
kswedberg Feb 22, 2014
2682426
Update bower.json, package.json
kswedberg Aug 11, 2014
34cd172
Fix value of 'speed' when set default is 'auto'. Closes #33
Aug 11, 2014
d2b1604
Make jshint stricter and cleanup lint warnings
kswedberg Aug 11, 2014
252e4a5
Fix misspelling of autoCoefficient
kswedberg Aug 11, 2014
da9dc97
Release 1.5.0
kswedberg Aug 11, 2014
f4f4179
Avoid false positive on pathMatch when filtered link.pathname is empt…
kswedberg Oct 1, 2014
9090e13
Clean up package.json and Gruntfile.js and build files
kswedberg Oct 1, 2014
d34cb80
Release 1.5.1
kswedberg Oct 1, 2014
9165228
Update docs & fix out-of-sync versions for bower.json and jquery conf…
kswedberg Oct 1, 2014
bbca1e9
Indentation only
kswedberg Oct 15, 2014
767ab54
Make plugin UMD-compliant (works with AMD, CommonJS, or neither). Cle…
kswedberg Oct 15, 2014
b2ec212
Make plugin name consistent across package managers (and across my pl…
kswedberg Nov 17, 2014
311c460
Escape slashes in hash. Fixes #66.
kswedberg Nov 17, 2014
4e52f7e
Release 1.5.4
kswedberg Nov 17, 2014
b541240
Add proper commonjs support. Closes #74
callumacrae Feb 19, 2015
8cd0908
Add commonjs to build process and bump.
kswedberg Feb 19, 2015
27e5053
Update readme with link to demo
kswedberg Mar 23, 2015
d353eea
Remove moot `version` property from bower.json
kkirsche Jun 12, 2015
2864923
Merge pull request #76 from kkirsche/patch-1
kswedberg Jun 13, 2015
806bdb8
Remove bower.json from list of files to be revved on grunt version
kswedberg Jun 13, 2015
041962a
Add a few tests (finally). Many more needed.
kswedberg Sep 8, 2015
f2b800c
Remove smooth-scroll.jquery.json. No longer used.
kswedberg Sep 8, 2015
6478c43
Add check for `document.scrollingElement`
kswedberg Sep 8, 2015
ba978e1
Bower is dead. Long live npm.
kswedberg Nov 15, 2015
adcccaa
Ensure variable [scrollDir]() is used, not scrollTop(). Use Math.ab()…
koenpunt Dec 16, 2015
e381940
Release 1.5.7
kswedberg Dec 16, 2015
9f34a80
Add optional support for event delegation
koenpunt Dec 22, 2015
dfe6c9e
Update docs and minor bump
kswedberg Dec 22, 2015
6568da7
Request window location on every click.
koenpunt Dec 26, 2015
f077aa1
Update grunt plugins and bump version.
kswedberg Dec 26, 2015
0d48ac7
Add grunt-jscs task
kswedberg Jan 16, 2016
d28ff55
Lint files with both jshint and jscs.
kswedberg Jan 16, 2016
b4288d0
Add contributing guidelines
kswedberg Jan 16, 2016
a7cadd3
Add devel: true to jshint options
kswedberg Jan 16, 2016
0987f08
Make plugin work in Firefox when CSS has `html {scroll-behavior: smoo…
kswedberg Jan 16, 2016
6bb5c2d
Update demos
kswedberg Jan 16, 2016
3064e26
Fix uglifying.
kswedberg Jan 16, 2016
bf6705f
Build and bump to 1.6.2.
kswedberg Jan 16, 2016
c768fee
Put Bower support (bower.json) back in. Fixes #91
kswedberg Jan 18, 2016
6902687
Fix version from bad tag
kswedberg Jan 18, 2016
b192367
Bump for bower support and bad tag fix
kswedberg Jan 18, 2016
b37f577
Ensure links to nonexistent elements don't trigger scroll. Fixes #92.
kswedberg Jan 23, 2016
baa0e68
Add link to nonexistent element to demo and tests for avoiding scroll…
kswedberg Jan 23, 2016
cfb4c29
Gruntfile: fix grunt-version config so everything gets correct version.
kswedberg Jan 23, 2016
7c32726
Build and bump to 1.7.2.
kswedberg Jan 25, 2016
f0de324
Update readme with a couple examples
kswedberg Mar 20, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions .jscsrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"esnext": true,
"requireCurlyBraces": [
"if",
"else",
"for",
"while",
"do",
"try",
"catch"
],
"requireSpaceAfterKeywords": [
"if",
"else",
"for",
"while",
"do",
"switch",
"case",
"return",
"try",
"catch",
"typeof"
],
"requireSpaceBeforeBlockStatements": true,
"requireParenthesesAroundIIFE": true,
"requireSpacesInConditionalExpression": true,
"disallowSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInFunctionDeclaration": {
"beforeOpeningRoundBrace": true
},
"requireSpaceBetweenArguments": true,
"requireBlocksOnNewline": true,
"disallowEmptyBlocks": true,
"disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideParentheses": true,
"disallowDanglingUnderscores": true,
"requireCommaBeforeLineBreak": true,
"disallowSpacesInCallExpression": true,
"disallowSpaceAfterPrefixUnaryOperators": true,
"disallowSpaceBeforePostfixUnaryOperators": true,
"disallowSpaceBeforeBinaryOperators": [
","
],
"requireSpacesInForStatement": true,
"requireSpaceBeforeBinaryOperators": true,
"requireSpaceAfterBinaryOperators": true,
"disallowKeywords": [
"with"
],
"disallowMixedSpacesAndTabs": true,
"disallowTrailingWhitespace": true,
"disallowKeywordsOnNewLine": [
"else"
],
"requireLineFeedAtFileEnd": true,
"requireCapitalizedConstructors": true,
"requireDotNotation": true,
"disallowNewlineBeforeBlockStatements": true,
"disallowMultipleLineStrings": true,
"requireSpaceBeforeObjectValues": true,
"validateQuoteMarks": "'",
"requireSpaceAfterLineComment": true,
"validateIndentation": 2,
"validateLineBreaks": "LF",
"disallowSpacesInFunction": {
"beforeOpeningRoundBrace": true
},
"requireSpacesInFunction": {
"beforeOpeningCurlyBrace": true
},
"disallowMultipleLineBreaks": true,
"disallowYodaConditions": true,
"disallowFunctionDeclarations": true,
"disallowMultipleVarDecl": "exceptUndefined",
"requirePaddingNewlinesBeforeKeywords": [
"do",
"for",
"if",
"switch",
"try",
"void",
"while",
"return"
],
"excludeFiles": ["**/node_modules/**", "**/min/**", "**/*.min.js"]
}
5 changes: 5 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
demo
node_modules
lib
bower.json
smooth-scroll.jquery.json
181 changes: 89 additions & 92 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -1,73 +1,85 @@
/*global module:false*/

module.exports = function(grunt) {
var pkg = grunt.file.readJSON('package.json');
var marked = require('marked');
var hl = require('node-syntaxhighlighter');

// Path to private settings (used here for user/pwd to rsync to remote site)
marked.setOptions({
highlight: function(code, lang) {
lang = lang || 'javascript';
lang = hl.getLanguage(lang);


// Because I'm lazy
var _ = grunt.util._;
return hl.highlight(code, lang);
},
gfm: true
});

// Project configuration.
grunt.initConfig({
component: './component.json',
pkg: grunt.file.readJSON('smooth-scroll.jquery.json'),
pluginName: 'smooth-scroll',
pkg: pkg,
meta: {
banner: '/*!<%= "\\n" %>' +
' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
' * <%= pkg.title %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") + "\\n" %>' +
'<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' +
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' +
'<%= "\\n" %>' +
' * Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>' +
' (<%= _.pluck(pkg.licenses, "url").join(", ") %>)' +
' * Licensed <%= pkg.license %>' +
'<%= "\\n" %>' + ' */' +
'<%= "\\n\\n" %>'
},
concat: {
concat: {
all: {
src: ['src/jquery.<%= pkg.name %>.js'],
dest: 'jquery.<%= pkg.name %>.js'
src: ['src/jquery.<%= pluginName %>.js'],
dest: 'jquery.<%= pluginName %>.js'
},
options: {
stripBanners: true,
banner: '<%= meta.banner %>'
banner: '<%= meta.banner %>',
process: function(src) {
var umdHead = grunt.file.read('lib/tmpl/umdhead.tpl');
var umdFoot = grunt.file.read('lib/tmpl/umdfoot.tpl');

src = src
.replace('(function($) {', umdHead)
.replace('})(jQuery);', umdFoot);

return src;
}
}
},
uglify: {
all: {
files: {
'jquery.<%= pkg.name %>.min.js': ['<%= concat.all.dest %>']
'jquery.<%= pluginName %>.min.js': ['<%= concat.all.dest %>']
},
options: {
preserveComments: 'some'
banner: '<%= meta.banner %>',
// preserveComments: /\/\*[\s\S]*/
}
}
},
watch: {
scripts: {
files: '<%= jshint.all %>',
tasks: ['jshint:all']
},
docs: {
files: ['readme.md', 'lib/tmpl/**/*.html'],
tasks: ['docs']
}
},
shell: {
rsync: {
// command is set by setshell:rsync.
stdout: true
}
},
setshell: {
rsync: {
file: 'gitignore/settings.json',
cmdAppend: '<%= pkg.name %>/'
}

},
jshint: {
all: ['Gruntfile.js', 'src/**/*.js'],
options: {
curly: true,
// eqeqeq: true,
// immed: true,
devel: true,
eqeqeq: true,
unused: true,
immed: true,
latedef: true,
newcap: true,
noarg: true,
Expand All @@ -77,95 +89,80 @@ module.exports = function(grunt) {
eqnull: true,
browser: true,
globals: {
jQuery: true
jQuery: true,
require: false
}
}
},
jscs: {
src: 'src/**/*.js',
options: {
config: '.jscsrc',
fix: true,
verbose: true
}
},
version: {
patch: {
src: {
src: ['src/jquery.<%= pluginName %>.js']
},
banners: {
pkg: pkg,
src: [
'<%= pkg.name %>.jquery.json',
'package.json',
'src/jquery.<%= pkg.name %>.js',
'jquery.<%= pkg.name %>.js'
'jquery.<%= pluginName %>.js',
'jquery.<%= pluginName %>.min.js'
],
options: {
release: 'patch'
prefix: '- v'
}
},
same: {
src: ['package.json', 'src/jquery.<%= pkg.name %>.js', 'jquery.<%= pkg.name %>.js']
package: {
src: ['package.json']
},
bannerPatch: {
src: ['jquery.<%= pkg.name %>.js'],
options: {
prefix: '- v',
release: 'patch'
}
}
}
});

grunt.registerMultiTask( 'setshell', 'Set grunt shell commands', function() {
var settings, cmd,
tgt = this.target,
cmdLabel = 'shell.' + tgt + '.command',
file = this.data.file,
append = this.data.cmdAppend || '';

if ( !grunt.file.exists(file) ) {
grunt.warn('File does not exist: ' + file);
}

settings = grunt.file.readJSON(file);
if (!settings[tgt]) {
grunt.warn('No ' + tgt + ' property found in ' + file);
}

cmd = settings[tgt] + append;
grunt.config(cmdLabel, cmd);
grunt.log.writeln( ('Setting ' + cmdLabel + ' to:').cyan );

grunt.log.writeln(cmd);
grunt.registerTask('docs', 'Convert readme.md to html and concat with header and footer for index.html', function() {
var readme = grunt.file.read('readme.md');
var head = grunt.template.process(grunt.file.read('lib/tmpl/header.tpl'));
var foot = grunt.file.read('lib/tmpl/footer.tpl');
var doc = marked(readme);

grunt.file.write('index.html', head + doc + foot);
});

grunt.registerTask( 'deploy', ['setshell:rsync', 'shell:rsync']);

grunt.registerTask( 'component', 'Update component.json', function() {
var comp = grunt.config('component'),
pkgName = grunt.config('pkg').name,
pkg = grunt.file.readJSON(pkgName + '.jquery.json'),
json = {};


grunt.registerTask('updateBower', 'Update bower.json to match package.json', function() {
var pkg = require('./package.json');
var props = ['name', 'main', 'homepage', 'repository', 'dependencies', 'keywords', 'license'];
var json = {
description: 'Easy implementation of smooth scrolling for same-page links'
};

['name', 'version', 'dependencies'].forEach(function(el) {
json[el] = pkg[el];
props.forEach(function(item) {
if (pkg[item]) {
json[item] = pkg[item];
}
});

_.extend(json, {
main: grunt.config('concat.all.dest'),
ignore: [
'demo/',
'lib/',
'src/',
'*.json'
]
});
json.name = 'jquery.' + json.name;
json.authors = [pkg.author];
json.moduleType = ['amd', 'node'];
json.ignore = ['demo/', 'lib/', 'src/', 'test/', '**/.*', 'Gruntfile.js', 'package.json'];

grunt.file.write( comp, JSON.stringify(json, null, 2) );
grunt.log.writeln( "File '" + comp + "' updated." );
grunt.file.write('bower.json', JSON.stringify(json, null, 2));
});

grunt.registerTask('build', ['jshint', 'concat', 'version:same', 'component', 'uglify']);
grunt.registerTask('patch', ['jshint', 'concat', 'version:bannerPatch', 'version:patch', 'component', 'uglify']);
grunt.registerTask('lint', ['jshint', 'jscs']);
grunt.registerTask('build', ['lint', 'concat', 'version', 'uglify', 'docs']);
grunt.registerTask('default', ['build']);

['patch', 'minor', 'major'].forEach(function(release) {
grunt.registerTask(release, ['lint', 'version:src:' + release, 'concat', 'uglify', 'version:banners:' + release, 'version:package:' + release]);
});

grunt.loadNpmTasks('grunt-jscs');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-version');
grunt.loadNpmTasks('grunt-shell');
};
40 changes: 40 additions & 0 deletions bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"description": "Easy implementation of smooth scrolling for same-page links",
"name": "jquery-smooth-scroll",
"main": "jquery.smooth-scroll.js",
"homepage": "https://github.com/kswedberg/jquery-smooth-scroll",
"repository": {
"type": "git",
"url": "https://github.com/kswedberg/jquery-smooth-scroll"
},
"dependencies": {
"jquery": ">=1.4.2"
},
"keywords": [
"jQuery",
"jquery-plugin",
"scroll",
"animation"
],
"license": "MIT",
"authors": [
{
"name": "Karl Swedberg",
"email": "kswedberg@gmail.com",
"url": "http://www.learningjquery.com/"
}
],
"moduleType": [
"amd",
"node"
],
"ignore": [
"demo/",
"lib/",
"src/",
"test/",
"**/.*",
"Gruntfile.js",
"package.json"
]
}
Loading