diff --git a/.circleci/config.yml b/.circleci/config.yml index d2e6a3d8d8..8c95d1f3ae 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -31,6 +31,9 @@ jobs: - run: name: Setup Snyk command: sudo npm install -g snyk + - run: # run snyk auth - authenticate snyk use environment variables to add token + name: snyk auth + command: snyk auth $SNYK_TOKEN - run: name: Run test command: npm test diff --git a/.eslintrc.yml b/.eslintrc.yml index 804dd60e63..3ca9a68039 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -5,3 +5,7 @@ env: node: true browser: true es6: true +rules: + import/no-extraneous-dependencies: + - error + - devDependencies: true diff --git a/README.md b/README.md index 057645bdcb..e50c34644d 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ This repository is for the design system code itself. We maintain [another repos ## Background -USWDS components and style guide follow industry-standard accessibility guidelines and use the best practices of existing style libraries and modern web design. The [U.S. Digital Service](https://www.whitehouse.gov/digital/united-states-digital-service) and [18F](https://18f.gsa.gov/) created USWDS for designers and developers. USWDS is a project of GSA’s [Technology Transformation Service](https://www.gsa.gov/about-us/organization/federal-acquisition-service/technology-transformation-services), maintained by the Office of Products and Programs. They are designed for use by government product teams who want to create beautiful, easy-to-use online experiences for the public. To learn more about the project, check out this [blog post](https://18f.gsa.gov/2015/09/28/web-design-standards/) and to view websites and applications check out our list [here](docs/WHO_IS_USING_USWDS.md). +USWDS components and style guide follow industry-standard accessibility guidelines and use the best practices of existing style libraries and modern web design. The [U.S. Digital Service](https://www.usds.gov/) and [18F](https://18f.gsa.gov/) created USWDS for designers and developers. USWDS is a project of GSA’s [Technology Transformation Service](https://www.gsa.gov/about-us/organization/federal-acquisition-service/technology-transformation-services), maintained by the Office of Products and Programs. They are designed for use by government product teams who want to create beautiful, easy-to-use online experiences for the public. To learn more about the project, check out this [blog post](https://18f.gsa.gov/2015/09/28/web-design-standards/) and to view websites and applications check out our list [here](docs/WHO_IS_USING_USWDS.md). ## Recent updates @@ -119,7 +119,7 @@ How you implement the design system depends on the needs of your project and you ``` -We offer both the CSS and the JavaScript in two versions — minified and un-minified. (In the examples above, we are using the minified files.) Use the minified files in a production environment or to reduce the file size of your downloaded assets. Use the un-minified files if you are in a development environment or would like to debug the CSS or JavaScript assets in the browser. +We offer both the CSS and the JavaScript in two versions — minified and un-minified. (In the examples above, we are using the minified files.) Use the minified files in a production environment or to reduce the file size of your downloaded assets. Use the un-minified files if you are in a development environment or would like to debug the CSS or JavaScript assets in the browser. And that’s it — you should now be able to copy our code samples into your `index.html` and start using the design system. diff --git a/config/gulp/build.js b/config/gulp/build.js index 05f6f14f8a..298cb57a87 100644 --- a/config/gulp/build.js +++ b/config/gulp/build.js @@ -1,49 +1,48 @@ -var gulp = require('gulp'); -var dutil = require('./doc-util'); -var del = require('del'); - -gulp.task('clean-dist', function (done) { +const gulp = require('gulp'); +const del = require('del'); +const dutil = require('./doc-util'); +const cFlags = require('./cflags'); +gulp.task('clean-dist', (done) => { if (!cFlags.cleanup) { dutil.logMessage( 'clean-dist', - 'Skipping cleaning up the distribution directories.' + 'Skipping cleaning up the distribution directories.', ); return done(); } - dutil.logMessage('clean-dist', 'Removing distribution directories.'); return del('dist'); - }); -gulp.task('docs', function (done) { +gulp.task('docs', (done) => { dutil.logMessage('docs', 'Copying documentation dist dir'); - var stream = gulp.src([ + const stream = gulp.src([ 'README.md', 'LICENSE.md', - 'CONTRIBUTING.md' - ]) + 'CONTRIBUTING.md', + ]) .pipe(gulp.dest('dist')); + done(); return stream; - }); + gulp.task('build', gulp.series( - function (done) { + (done) => { dutil.logIntroduction(); dutil.logMessage( 'build', - 'Creating distribution directories.' + 'Creating distribution directories.', ); done(); - }, - 'clean-dist', + }, + 'clean-dist', 'docs', gulp.parallel( 'sass', @@ -54,5 +53,4 @@ gulp.task('build', // We need to copy the Sass to dist *after* the sass task, to ensure // that vendor libraries have been copied to the Sass directory first. 'copy-dist-sass', - ), -); \ No newline at end of file + )); diff --git a/config/gulp/cflags.js b/config/gulp/cflags.js new file mode 100644 index 0000000000..097ea0dff7 --- /dev/null +++ b/config/gulp/cflags.js @@ -0,0 +1,4 @@ +module.exports = { + test: true, + cleanup: true, +}; diff --git a/config/gulp/doc-util.js b/config/gulp/doc-util.js index f135b3d554..47697caf70 100644 --- a/config/gulp/doc-util.js +++ b/config/gulp/doc-util.js @@ -1,122 +1,102 @@ -var pkg = require('../../package.json'); -var log = require('fancy-log'); -var colors = require('ansi-colors'); -var notifier = require('node-notifier'); +const log = require('fancy-log'); +const colors = require('ansi-colors'); +const notifier = require('node-notifier'); +const pkg = require('../../package.json'); -var shellPrefix = '$'; +const shellPrefix = '$'; -function drawFlag () { - - // American Flag in ASCII - // +function drawFlag() { log( - colors.white('') + colors.white(''), ); log( - colors.white('* * * * * ========================') + colors.white('* * * * * ========================'), ); log( - colors.white('* * * * * ========================') + colors.white('* * * * * ========================'), ); log( - colors.white('* * * * * ========================') + colors.white('* * * * * ========================'), ); log( - colors.white('* * * * * ========================') + colors.white('* * * * * ========================'), ); log( - colors.white('==================================') + colors.white('=================================='), ); log( - colors.white('==================================') + colors.white('=================================='), ); log( - colors.white('==================================') + colors.white('=================================='), ); log( - colors.white('') + colors.white(''), ); } -function notify (title, message, wait) { +function notify(title, message, wait) { notifier.notify({ - title: title, - message: message, + title, + message, icon: 'src/img/favicons/favicon-192.png', - wait: wait, + wait, }); } module.exports = { - pkg: { - name: pkg.name, version: pkg.version, - }, - dirName: pkg.name + '-' + pkg.version, - - logIntroduction: function (message) { - - message = message || 'U.S. Web Design System'; + dirName: `${pkg.name}-${pkg.version}`, + logIntroduction(message) { + const introMessage = message || 'USWDS'; log( - colors.yellow('v' + pkg.version), - message + colors.yellow(`${introMessage} v${pkg.version}`), ); drawFlag(); - }, - logCommand: function (name, message) { - + logCommand(name, message) { log( shellPrefix, colors.cyan(name), - colors.magenta(message) + colors.magenta(message), ); - }, - logHelp: function (name, message) { + logHelp(name, message) { log( shellPrefix, colors.cyan(name), - colors.yellow(message) + colors.yellow(message), ); - }, - logData: function (name, message) { - + logData(name, message) { log( colors.cyan(name), - colors.yellow(message) + colors.yellow(message), ); - }, - logError: function (name, message) { - + logError(name, message) { log( colors.red(name), - colors.yellow(message) + colors.yellow(message), ); - notify(this.dirName + ' gulp ' + name, message, true); - + notify(`${this.dirName} gulp ${name}`, message, true); }, - logMessage: function (name, message) { - + logMessage(name, message) { log( colors.cyan(name), - colors.green(message) + colors.green(message), ); - notify(this.dirName + ' gulp ' + name, message, false); - + notify(`${this.dirName} gulp ${name}`, message, false); }, - }; diff --git a/config/gulp/flags.js b/config/gulp/flags.js index 8cec38eed0..c7a4aa1842 100644 --- a/config/gulp/flags.js +++ b/config/gulp/flags.js @@ -1,31 +1,21 @@ -var gulp = require('gulp'); -var dutil = require('./doc-util'); - -global.cFlags = { - - test: true, - cleanup: true, - -}; - -gulp.task('no-test', function (done) { +const gulp = require('gulp'); +const dutil = require('./doc-util'); +const cFlags = require('./cflags'); +gulp.task('no-test', (done) => { dutil.logMessage( 'no-test', - 'Disabling linting and tests for all assets.' + 'Disabling linting and tests for all assets.', ); cFlags.test = false; done(); - }); -gulp.task('no-cleanup', function (done) { - +gulp.task('no-cleanup', (done) => { dutil.logMessage( 'no-cleanup', - 'Disabling cleanup of distribution directories.' + 'Disabling cleanup of distribution directories.', ); cFlags.cleanup = false; done(); - }); diff --git a/config/gulp/fonts.js b/config/gulp/fonts.js index 4ad3747a48..0a9d4fcda7 100644 --- a/config/gulp/fonts.js +++ b/config/gulp/fonts.js @@ -1,14 +1,13 @@ -var gulp = require('gulp'); -var dutil = require('./doc-util'); -var task = 'fonts'; +const gulp = require('gulp'); +const dutil = require('./doc-util'); -gulp.task(task, function (done) { +const task = 'fonts'; +gulp.task(task, (done) => { dutil.logMessage(task, 'Copying Fonts'); - - var stream = gulp.src('src/fonts/**/*') + const stream = gulp.src('src/fonts/**/*') .pipe(gulp.dest('dist/fonts')); + done(); return stream; - }); diff --git a/config/gulp/images.js b/config/gulp/images.js index 9f860c62e4..0452bf68ba 100644 --- a/config/gulp/images.js +++ b/config/gulp/images.js @@ -1,14 +1,13 @@ -var gulp = require('gulp'); -var dutil = require('./doc-util'); -var task = 'images'; +const gulp = require('gulp'); +const dutil = require('./doc-util'); -gulp.task(task, function (done) { +const task = 'images'; +gulp.task(task, (done) => { dutil.logMessage(task, 'Copying Images'); - - var stream = gulp.src('src/img/**/*') + const stream = gulp.src('src/img/**/*') .pipe(gulp.dest('dist/img')); + done(); return stream; - }); diff --git a/config/gulp/javascript.js b/config/gulp/javascript.js index e4c4ea6e9f..45d7feedde 100644 --- a/config/gulp/javascript.js +++ b/config/gulp/javascript.js @@ -1,30 +1,31 @@ -var child_process = require('child_process'); -var gulp = require('gulp'); -var log = require('fancy-log'); -var dutil = require('./doc-util'); -var browserify = require('browserify'); -var buffer = require('vinyl-buffer'); -var source = require('vinyl-source-stream'); -var uglify = require('gulp-uglify'); -var sourcemaps = require('gulp-sourcemaps'); -var rename = require('gulp-rename'); -var eslint = require('gulp-eslint'); -var task = 'javascript'; +const buffer = require('vinyl-buffer'); +const browserify = require('browserify'); +const childProcess = require('child_process'); +const eslint = require('gulp-eslint'); +const gulp = require('gulp'); +const log = require('fancy-log'); +const rename = require('gulp-rename'); +const source = require('vinyl-source-stream'); +const sourcemaps = require('gulp-sourcemaps'); +const uglify = require('gulp-uglify'); +const dutil = require('./doc-util'); +const cFlags = require('./cflags'); -gulp.task(task, function (done) { +const task = 'javascript'; +gulp.task(task, (done) => { dutil.logMessage(task, 'Compiling JavaScript'); - var defaultStream = browserify({ + const defaultStream = browserify({ entries: 'src/js/start.js', debug: true, }) - .transform('babelify', { - global: true, - presets: ['es2015'], - }); + .transform('babelify', { + global: true, + presets: ['es2015'], + }); - var stream = defaultStream.bundle() + const stream = defaultStream.bundle() .pipe(source('uswds.js')) // XXX why is this necessary? .pipe(buffer()) .pipe(rename({ basename: dutil.pkg.name })) @@ -44,37 +45,36 @@ gulp.task(task, function (done) { .pipe(sourcemaps.write('.')) .pipe(gulp.dest('dist/js')); + done(); return stream; }); -gulp.task('typecheck', function () { - return new Promise((resolve, reject) => { - child_process.spawn( - './node_modules/.bin/tsc', - { stdio: 'inherit' } - ) +gulp.task('typecheck', () => new Promise((resolve, reject) => { + childProcess.spawn( + './node_modules/.bin/tsc', + { stdio: 'inherit' }, + ) .on('error', reject) - .on('exit', code => { + .on('exit', (code) => { if (code === 0) { dutil.logMessage('typecheck', 'TypeScript likes our code!'); resolve(); } else { reject(new Error('TypeScript failed, see output for details!')); } - }); - }); -}); + }); +})); -gulp.task('eslint', function (done) { +gulp.task('eslint', (done) => { if (!cFlags.test) { dutil.logMessage('eslint', 'Skipping linting of JavaScript files.'); return done(); } return gulp.src([ - 'src/js/**/*.js', - 'spec/**/*.js' - ]) + 'src/js/**/*.js', + 'spec/**/*.js', + ]) .pipe(eslint({ fix: true, })) diff --git a/config/gulp/release.js b/config/gulp/release.js index 0da0101f29..76c9fa6a7a 100644 --- a/config/gulp/release.js +++ b/config/gulp/release.js @@ -1,28 +1,23 @@ +const del = require('del'); +const spawn = require('cross-spawn'); const gulp = require('gulp'); const dutil = require('./doc-util'); -const spawn = require('cross-spawn'); -const del = require('del'); const task = 'release'; gulp.task('make-tmp-directory', () => { - dutil.logMessage('make-tmp-directory', 'Creating temporary release directory.'); return gulp.src('dist/**/*') .pipe(gulp.dest(dutil.dirName)); - }); gulp.task('clean-tmp-directory', () => { - dutil.logMessage('clean-tmp-directory', 'Deleting temporary release directory.'); - return del(dutil.dirName); }); gulp.task('zip-archives', (done) => { - const zip = spawn('zip', [ '--log-info', '-r', @@ -34,30 +29,21 @@ gulp.task('zip-archives', (done) => { dutil.logMessage('zip-archives', `Creating a zip archive in dist/${dutil.dirName}.zip`); zip.stdout.on('data', (data) => { - if (/[\w\d]+/.test(data)) { - dutil.logData('zip-archives', data); - } - }); zip.stderr.on('data', (data) => { - dutil.logError('zip-archives', data); - }); zip.on('error', (error) => { - dutil.logError('zip-archives', 'Failed to create a zip archive'); - done(error); }); zip.on('close', (code) => { if (code === 0) { done(); } }); - }); gulp.task(task, @@ -70,5 +56,4 @@ gulp.task(task, 'make-tmp-directory', 'zip-archives', 'clean-tmp-directory', - ) -); \ No newline at end of file + )); diff --git a/config/gulp/sass.js b/config/gulp/sass.js index 91135b6820..3d3e22c72a 100644 --- a/config/gulp/sass.js +++ b/config/gulp/sass.js @@ -1,67 +1,57 @@ -var gulp = require('gulp'); -var dutil = require('./doc-util'); -var sass = require('gulp-sass'); -var postcss = require('gulp-postcss'); -var cssnano = require('cssnano'); -var packCSS = require('css-mqpacker'); -var autoprefixer = require('autoprefixer'); -var sourcemaps = require('gulp-sourcemaps'); -var rename = require('gulp-rename'); -var gulpStylelint = require('gulp-stylelint'); const { formatters } = require('stylelint'); -var pkg = require('../../package.json'); -var path = require('path'); -var filter = require('gulp-filter'); -var replace = require('gulp-replace'); -var stripCssComments = require('gulp-strip-css-comments'); -var del = require('del'); -var task = 'sass'; -var autoprefixerOptions = require('./browsers'); -var path = require('path'); +const autoprefixer = require('autoprefixer'); +const cssnano = require('cssnano'); +const discardComments = require('postcss-discard-comments'); +const filter = require('gulp-filter'); +const gulp = require('gulp'); +const gulpStylelint = require('gulp-stylelint'); +const packCSS = require('css-mqpacker'); +const postcss = require('gulp-postcss'); +const replace = require('gulp-replace'); +const rename = require('gulp-rename'); +const sass = require('gulp-sass'); +const sourcemaps = require('gulp-sourcemaps'); +const autoprefixerOptions = require('./browsers'); +const dutil = require('./doc-util'); +const pkg = require('../../package.json'); -var entryFileFilter = filter('uswds.scss', { restore: true }); -var normalizeCssFilter = filter('**/normalize.css', { restore: true }); +const task = 'sass'; +const normalizeCssFilter = filter('**/normalize.css', { restore: true }); const IGNORE_STRING = 'This file is ignored'; -const ignoreStylelintIgnoreWarnings = lintResults => - formatters.string( - lintResults.reduce((memo, result) => { - const { warnings } = result; - const fileIsIgnored = warnings.some((warning) => { - return RegExp(IGNORE_STRING, 'i').test(warning.text); - }); +const ignoreStylelintIgnoreWarnings = lintResults => formatters.string( + lintResults.reduce((memo, result) => { + const { warnings } = result; + const fileIsIgnored = warnings.some(warning => RegExp(IGNORE_STRING, 'i').test(warning.text)); - if (!fileIsIgnored) { - memo.push(result); - } + if (!fileIsIgnored) { + memo.push(result); + } - return memo; - }, []) - ); - -gulp.task('stylelint', () => { - return gulp - .src('./src/stylesheets/**/*.scss') - .pipe(gulpStylelint({ - failAfterError: true, - reporters: [{ - formatter: ignoreStylelintIgnoreWarnings, console: true, - }], - syntax: 'scss', - })) - .on('error', dutil.logError); -}); + return memo; + }, []), +); -gulp.task('copy-vendor-sass', function () { +gulp.task('stylelint', () => gulp + .src('./src/stylesheets/**/*.scss') + .pipe(gulpStylelint({ + failAfterError: true, + reporters: [{ + formatter: ignoreStylelintIgnoreWarnings, console: true, + }], + syntax: 'scss', + })) + .on('error', dutil.logError)); +gulp.task('copy-vendor-sass', () => { dutil.logMessage('copy-vendor-sass', 'Compiling vendor CSS'); - var stream = gulp.src([ + const stream = gulp.src([ './node_modules/normalize.css/normalize.css', ]) .pipe(normalizeCssFilter) .pipe(rename('_normalize.scss')) - .on('error', function (error) { + .on('error', (error) => { dutil.logError('copy-vendor-sass', error); }) .pipe(gulp.dest('src/stylesheets/lib')); @@ -69,45 +59,49 @@ gulp.task('copy-vendor-sass', function () { return stream; }); -gulp.task('copy-dist-sass', function () { +gulp.task('copy-dist-sass', () => { dutil.logMessage('copy-dist-sass', 'Copying all Sass to dist dir'); - var stream = gulp.src('src/stylesheets/**/*.scss') + const stream = gulp.src('src/stylesheets/**/*.scss') .pipe(gulp.dest('dist/scss')); return stream; }); -gulp.task('sass', gulp.series('copy-vendor-sass', - function () { - dutil.logMessage(task, 'Compiling Sass'); - var plugins = [ - autoprefixer(autoprefixerOptions), - packCSS({ sort: true }), - cssnano(({ autoprefixer: { browsers: autoprefixerOptions }})) - ]; +gulp.task('sass', gulp.series('copy-vendor-sass', + () => { + dutil.logMessage(task, 'Compiling Sass'); + const pluginsProcess = [ + discardComments(), + autoprefixer(autoprefixerOptions), + packCSS({ sort: true }), + ]; + const pluginsMinify = [ + autoprefixer(autoprefixerOptions), + packCSS({ sort: true }), + cssnano(({ autoprefixer: { browsers: autoprefixerOptions } })), + ]; - var stream = gulp.src('src/stylesheets/*.scss') - .pipe(replace( - /\buswds @version\b/g, - 'uswds v' + pkg.version - )) - .pipe(sourcemaps.init({ largeFile: true })) - .pipe( - sass({ - outputStyle: 'expanded', - }) - .on('error', sass.logError) - ) - .pipe(postcss(plugins)) - .pipe(gulp.dest('dist/css')) - .pipe(rename({ - suffix: '.min', - })) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('dist/css')); + const stream = gulp.src('src/stylesheets/*.scss') + .pipe(replace( + /\buswds @version\b/g, + `uswds v${pkg.version}`, + )) + .pipe(sourcemaps.init({ largeFile: true })) + .pipe( + sass({ + outputStyle: 'expanded', + }) + .on('error', sass.logError), + ) + .pipe(postcss(pluginsProcess)) + .pipe(gulp.dest('dist/css')) + .pipe(rename({ + suffix: '.min', + })) + .pipe(postcss(pluginsMinify)) + .pipe(sourcemaps.write('.')) + .pipe(gulp.dest('dist/css')); - return stream; - } -) -); + return stream; + })); diff --git a/config/gulp/test.js b/config/gulp/test.js index ac48b3f568..f30ff5c0c6 100644 --- a/config/gulp/test.js +++ b/config/gulp/test.js @@ -1,32 +1,25 @@ -var gulp = require('gulp'); -var mocha = require('gulp-spawn-mocha'); +const gulp = require('gulp'); +const mocha = require('gulp-spawn-mocha'); -var mochaOpts = { +const mochaOpts = { opts: 'spec/mocha.opts', }; -gulp.task('test', function () { - return gulp.src('spec/**/*.spec.js') - .pipe(mocha(mochaOpts)); -}); +gulp.task('test', () => gulp.src('spec/**/*.spec.js') + .pipe(mocha(mochaOpts))); -gulp.task('regression', () => { - return gulp.src('spec/headless-chrome.js') - .pipe(mocha(mochaOpts)); -}); +gulp.task('regression', () => gulp.src('spec/headless-chrome.js') + .pipe(mocha(mochaOpts))); -gulp.task('cover', function () { - return gulp.src('spec/unit/**/*.spec.js') - .pipe(mocha(Object.assign(mochaOpts, { - istanbul: true - }))); -}); +gulp.task('cover', () => gulp.src('spec/unit/**/*.spec.js') + .pipe(mocha(Object.assign(mochaOpts, { + istanbul: true, + })))); gulp.task('test:watch', () => { gulp.watch([ 'spec/**/*.spec.js', 'src/js/**/*.js', ], - gulp.series('test'), - ); + gulp.series('test')); }); diff --git a/docs/WHO_IS_USING_USWDS.md b/docs/WHO_IS_USING_USWDS.md index 6406a29fe6..175a9b735c 100644 --- a/docs/WHO_IS_USING_USWDS.md +++ b/docs/WHO_IS_USING_USWDS.md @@ -1,6 +1,6 @@ # Websites and applications that use the Design System -Below are a list of websites and applications currently using the U.S. Web Design System. If your project is currently using the Design System and you do not see it on this list, please feel free to submit a pull request or email the core team at uswebdesignstandards@gsa.gov. +Below are a list of websites and applications currently using the U.S. Web Design System. If your project is currently using the Design System and you do not see it on this list, please feel free to submit a pull request or email the core team at uswds@gsa.gov. - [10x](https://10x.gsa.gov/) - [18F](https://18f.gsa.gov) @@ -12,6 +12,7 @@ Below are a list of websites and applications currently using the U.S. Web Desig - [18F Micro-purchase](https://micropurchase.18f.gov/) - [18F Modular Contracting](https://modularcontracting.18f.gov/) - [18F Testing Cookbook](https://testing-cookbook.18f.gov/) +- [Accessibility for Teams](https://accessibility.digital.gov/) - [Agile Solicitation Builder](https://github.com/18F/agile-solicitation-builder) - [Agricultural Marketing Service - USDA](http://gipsa.usda.gov/) - [Agricultural Research Service - USDA](https://www.ars.usda.gov/) @@ -33,6 +34,7 @@ Below are a list of websites and applications currently using the U.S. Web Desig - [Compliance Viewer](https://compliance-viewer.18f.gov/) - [Customs and Border Protection](https://www.cbp.gov/) - [cyber.dhs.gov](https://cyber.dhs.gov/) +- [Data Center Optimization Initiative (Office of the Federal Chief Information Officer - OMB)](https://datacenters.cio.gov/) - [Data Science Jobs Microsite (USAJOBS)](https://usajobs.github.io/microsite-data-science/) - [Defense Digital Service](https://www.dds.mil/) - [Defense Nuclear Facilities Safety Board](https://www.dnfsb.gov/) @@ -45,6 +47,7 @@ Below are a list of websites and applications currently using the U.S. Web Desig - [Digital Acquisition Playbook](https://digital-acquisition-playbook.18f.gov/) - [Digital Contracting Cookbook](https://pages.18f.gov/contracting-cookbook/) - [Digital Service Playbook — U.S. Digital Service](https://playbook.cio.gov) +- [Discovery Market Research Tool (GSA)](https://discovery.gsa.gov/) - [Dotgov.gov](https://home.dotgov.gov/) - [eCPIC Electronic Capital Planning and Investment Control System](https://www.ecpic.gov/) - [EPA.gov - U.S. Environmental Protection Agency](https://www.epa.gov/) @@ -76,7 +79,7 @@ Below are a list of websites and applications currently using the U.S. Web Desig - [GI Bill Comparison Tool (Vets.gov)](https://www.vets.gov/gi-bill-comparison-tool) - [GSA Grace Hopper Day Hackathon](https://open.gsa.gov/events/grace-hopper-hackathon/) - [GSA Open IAE (Integrated Award Environment)](http://gsa.github.io/openIAE/) -- [GSA Open Technology](https://open.gsa.gov/) +- [openGSA - GSA Open Technology](https://open.gsa.gov/) - [GSA Recruiter](https://github.com/GSA/recruiter) - [HealthCare.gov](https://www.healthcare.gov/) - [Hack the Pay Gap](https://paygap.pif.gov/) @@ -117,6 +120,7 @@ Below are a list of websites and applications currently using the U.S. Web Desig - [OMB Policy Library](https://omb-eregs-demo.app.cloud.gov/) - [OpenFDA](https://open.fda.gov/) - [Open Opportunities](https://openopps.usajobs.gov/) +- [Open Source @ NSA (National Security Administration)](https://code.nsa.gov/) - [Opioids.gov](https://www.opioids.gov/) - [The Opportunity Project](http://opportunity.census.gov/) - [Pathogen Detection - NCBI](https://www.ncbi.nlm.nih.gov/pathogens/) @@ -171,7 +175,8 @@ Below are a list of websites and applications currently using the U.S. Web Desig - [USGS Earthquake Hazards Program](http://earthquake.usgs.gov/theme/) - [USGS.gov - U.S. Geological Survey](https://www.usgs.gov/) - [USGS Publications Warehouse](https://pubs.er.usgs.gov/) -- [VA Caseflow Certification](https://github.com/department-of-veterans-affairs/caseflow) +- [VA Caseflow](https://github.com/department-of-veterans-affairs/caseflow) +- [VA Developer Portal](https://developer.va.gov/) - [VA Office of Information and Technology](https://www.oit.va.gov/) - [Virtual Student Foreign Service](http://vsfs.state.gov/) - [vote.gov](https://vote.gov/) diff --git a/package-lock.json b/package-lock.json index ebe8421891..db25cf0a92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "uswds", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16290,40 +16290,12 @@ } }, "postcss-discard-comments": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz", - "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-discard-duplicates": { diff --git a/package.json b/package.json index 0b44c9d1e6..840da41a0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uswds", - "version": "2.0.1", + "version": "2.0.2", "description": "Open source UI components and visual style guide for U.S. government websites", "engines": { "node": ">= 4" @@ -109,7 +109,6 @@ "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-spawn-mocha": "^5.0.1", - "gulp-strip-css-comments": "^2.0.0", "gulp-stylelint": "^8.0.0", "gulp-uglify": "^3.0.0", "handlebars": "^4.1.0", @@ -123,6 +122,7 @@ "node-sass": "^4.11.0", "normalize.css": "^3.0.3", "nswatch": "^0.2.0", + "postcss-discard-comments": "^4.0.2", "resemblejs": "^3.0.0", "should": "^11.2.1", "sinon": "^2.3.8", diff --git a/spec/delayed-root-suite.js b/spec/delayed-root-suite.js index 1690a8798a..bee79cfa70 100755 --- a/spec/delayed-root-suite.js +++ b/spec/delayed-root-suite.js @@ -17,8 +17,6 @@ Promise.all([ exports.fractalLoad, ]).then(() => { run(); -}).catch(e => { - console.log('An error occurred while loading tests.'); - console.log(e); +}).catch(() => { process.exit(1); }); diff --git a/spec/headless-chrome.js b/spec/headless-chrome.js index c23e62e72a..46f98ffe07 100755 --- a/spec/headless-chrome.js +++ b/spec/headless-chrome.js @@ -4,7 +4,7 @@ const ChromeFractalTester = require('./chrome-fractal-tester'); const axeTester = require('./axe-tester'); class Device { - constructor (name, metrics) { + constructor(name, metrics) { this.name = name; this.metrics = Object.assign({ deviceScaleFactor: 1, @@ -13,9 +13,9 @@ class Device { }, metrics); } - get description () { + get description() { const m = this.metrics; - const parts = [ `${m.width}x${m.height}` ]; + const parts = [`${m.width}x${m.height}`]; if (m.deviceScaleFactor !== 1) parts.push(`@ ${m.deviceScaleFactor}x`); if (m.mobile) parts.push('mobile'); @@ -41,11 +41,11 @@ const DEVICES = [ }), ]; -fractalLoad.then(function runFractalTester() { +fractalLoad.then(() => { const chromeFractalTester = new ChromeFractalTester(); const { handles } = chromeFractalTester; - describe('fractal component', function () { + describe('fractal component', function setupTester() { this.timeout(20000); before('setup ChromeFractalTester', chromeFractalTester.setup); @@ -58,7 +58,7 @@ fractalLoad.then(function runFractalTester() { } after('create visual regression testing metadata', - () => VisualRegressionTester.writeMetadata(handles, DEVICES)); + () => VisualRegressionTester.writeMetadata(handles, DEVICES)); } handles.forEach((handle) => { @@ -70,12 +70,10 @@ fractalLoad.then(function runFractalTester() { return; } - before('init chrome devtools protocol', () => { - return chromeFractalTester.createChromeDevtoolsProtocol() - .then(client => { cdp = client; }); - }); + before('init chrome devtools protocol', () => chromeFractalTester.createChromeDevtoolsProtocol() + .then((client) => { cdp = client; })); - before(`load fractal component in chrome`, function () { + before('load fractal component in chrome', function waitBeforeChrome() { this.timeout(20000); return chromeFractalTester.loadFractalPreview(cdp, handle); }); @@ -84,11 +82,9 @@ fractalLoad.then(function runFractalTester() { after('shutdown chrome devtools protocol', () => cdp.close()); - DEVICES.forEach(device => { + DEVICES.forEach((device) => { describe(`on ${device.description}`, () => { - before('set device metrics', () => { - return cdp.Emulation.setDeviceMetricsOverride(device.metrics); - }); + before('set device metrics', () => cdp.Emulation.setDeviceMetricsOverride(device.metrics)); it('has no aXe violations', () => axeTester.run(cdp)); @@ -96,16 +92,16 @@ fractalLoad.then(function runFractalTester() { const vrt = new VisualRegressionTester({ handle, device }); if (vrt.doesGoldenFileExist()) { it('matches golden screenshot', - () => vrt.screenshot(cdp) - .then(vrt.ensureMatchesGoldenFile)); + () => vrt.screenshot(cdp) + .then(vrt.ensureMatchesGoldenFile)); } else { it('is the new golden screenshot', - () => vrt.screenshot(cdp).then(vrt.saveToGoldenFile)); + () => vrt.screenshot(cdp).then(vrt.saveToGoldenFile)); } } }); }); }); - }); + }); }); }); diff --git a/spec/sass/include.spec.js b/spec/sass/include.spec.js index 34ecdd9eed..b43c3c81ba 100755 --- a/spec/sass/include.spec.js +++ b/spec/sass/include.spec.js @@ -13,10 +13,6 @@ describe('include paths', () => { it('can be loaded with @import "uswds"', () => { render('@import "uswds";', [includePath]); }); - - it('can be loaded with @import "all"', () => { - render('@import "all";', [includePath]); - }); }); describe('standalone dist scss', () => { @@ -29,8 +25,4 @@ describe('standalone dist scss', () => { it('can be loaded with @import "uswds"', () => { render('@import "uswds";', [distScssPath]); }); - - it('can be loaded with @import "all"', () => { - render('@import "all";', [distScssPath]); - }); }); diff --git a/spec/unit/footer/footer.spec.js b/spec/unit/footer/footer.spec.js index 3670c7ffe1..d7828266e2 100755 --- a/spec/unit/footer/footer.spec.js +++ b/spec/unit/footer/footer.spec.js @@ -7,7 +7,7 @@ const TEMPLATE = fs.readFileSync(path.join(__dirname, '/template.html')); const { DEBOUNCE_RATE } = behavior; const HIDDEN = 'hidden'; -const LIST_SELECTOR = '.usa-footer--big nav ul'; +const PRIMARY_CONTENT_SELECTOR = '.usa-footer--big .usa-footer__primary-content--collapsible'; const BUTTON_SELECTOR = '.usa-footer__primary-link'; /** @@ -43,7 +43,7 @@ describe('big footer accordion', () => { beforeEach(() => { body.innerHTML = TEMPLATE; - lists = document.querySelectorAll(LIST_SELECTOR); + lists = document.querySelectorAll(PRIMARY_CONTENT_SELECTOR); buttons = document.querySelectorAll(BUTTON_SELECTOR); window.innerWidth = 1024; @@ -60,14 +60,14 @@ describe('big footer accordion', () => { }); it('collapses at small screens', () => { - resizeTo(400) + return resizeTo(400) .then(() => { assertHidden(lists[ 0 ], true); }); }); it('collapses then expands again on larger screens', () => { - resizeTo(400) + return resizeTo(400) .then(() => resizeTo(1024)) .then(() => { assertHidden(lists[ 0 ], false); @@ -75,7 +75,7 @@ describe('big footer accordion', () => { }); it('opens panel when clicked', () => { - resizeTo(400) + return resizeTo(400) .then(() => { buttons[ 0 ].click(); assertHidden(lists[ 0 ], false); @@ -88,7 +88,8 @@ describe('big footer accordion', () => { }); it('closes panel on subsequent click', () => { - resizeTo(400) + return resizeTo(800) + .then(() => resizeTo(400)) .then(() => { buttons[0].click(); assertHidden(lists[ 0 ], false); @@ -98,7 +99,8 @@ describe('big footer accordion', () => { }); it('closes other panels on small screens', () => { - resizeTo(400) + return resizeTo(800) + .then(() => resizeTo(400)) .then(() => { buttons[0].click(); assertHidden(lists[ 0 ], false); diff --git a/spec/unit/footer/template.html b/spec/unit/footer/template.html index 3bb5672b77..b4d4020a05 100755 --- a/spec/unit/footer/template.html +++ b/spec/unit/footer/template.html @@ -1,84 +1,120 @@ + \ No newline at end of file diff --git a/src/components/07-form/controls/date-input.njk b/src/components/07-form/controls/date-input.njk index b5b4a76319..1adca4c201 100755 --- a/src/components/07-form/controls/date-input.njk +++ b/src/components/07-form/controls/date-input.njk @@ -13,7 +13,7 @@
- +
diff --git a/src/fonts/public-sans/PublicSans-Black.ttf b/src/fonts/public-sans/PublicSans-Black.ttf index 5a0d37ad37..2363943009 100644 Binary files a/src/fonts/public-sans/PublicSans-Black.ttf and b/src/fonts/public-sans/PublicSans-Black.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Black.woff b/src/fonts/public-sans/PublicSans-Black.woff index bd90255f1a..d8f417d8b7 100644 Binary files a/src/fonts/public-sans/PublicSans-Black.woff and b/src/fonts/public-sans/PublicSans-Black.woff differ diff --git a/src/fonts/public-sans/PublicSans-Black.woff2 b/src/fonts/public-sans/PublicSans-Black.woff2 index 16cee588a5..b508cab558 100644 Binary files a/src/fonts/public-sans/PublicSans-Black.woff2 and b/src/fonts/public-sans/PublicSans-Black.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-BlackItalic.ttf b/src/fonts/public-sans/PublicSans-BlackItalic.ttf index a912b163cc..946ac9b07d 100644 Binary files a/src/fonts/public-sans/PublicSans-BlackItalic.ttf and b/src/fonts/public-sans/PublicSans-BlackItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-BlackItalic.woff b/src/fonts/public-sans/PublicSans-BlackItalic.woff index c8101e7521..b876ad63b4 100644 Binary files a/src/fonts/public-sans/PublicSans-BlackItalic.woff and b/src/fonts/public-sans/PublicSans-BlackItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-BlackItalic.woff2 b/src/fonts/public-sans/PublicSans-BlackItalic.woff2 index a95366af84..9dab82eed0 100644 Binary files a/src/fonts/public-sans/PublicSans-BlackItalic.woff2 and b/src/fonts/public-sans/PublicSans-BlackItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-Bold.ttf b/src/fonts/public-sans/PublicSans-Bold.ttf index 9f921c4955..1be744db28 100644 Binary files a/src/fonts/public-sans/PublicSans-Bold.ttf and b/src/fonts/public-sans/PublicSans-Bold.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Bold.woff b/src/fonts/public-sans/PublicSans-Bold.woff index 3a3fcac6d4..0b67bdad18 100644 Binary files a/src/fonts/public-sans/PublicSans-Bold.woff and b/src/fonts/public-sans/PublicSans-Bold.woff differ diff --git a/src/fonts/public-sans/PublicSans-Bold.woff2 b/src/fonts/public-sans/PublicSans-Bold.woff2 index 2f2cde8d7d..41bc0c8f0a 100644 Binary files a/src/fonts/public-sans/PublicSans-Bold.woff2 and b/src/fonts/public-sans/PublicSans-Bold.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-BoldItalic.ttf b/src/fonts/public-sans/PublicSans-BoldItalic.ttf index bee6064508..54de57a3c9 100644 Binary files a/src/fonts/public-sans/PublicSans-BoldItalic.ttf and b/src/fonts/public-sans/PublicSans-BoldItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-BoldItalic.woff b/src/fonts/public-sans/PublicSans-BoldItalic.woff index 80d552c35f..b495b3cc46 100644 Binary files a/src/fonts/public-sans/PublicSans-BoldItalic.woff and b/src/fonts/public-sans/PublicSans-BoldItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-BoldItalic.woff2 b/src/fonts/public-sans/PublicSans-BoldItalic.woff2 index 9f18068a21..22a84e9f07 100644 Binary files a/src/fonts/public-sans/PublicSans-BoldItalic.woff2 and b/src/fonts/public-sans/PublicSans-BoldItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-ExtraBold.ttf b/src/fonts/public-sans/PublicSans-ExtraBold.ttf index b019b57e47..9086396506 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraBold.ttf and b/src/fonts/public-sans/PublicSans-ExtraBold.ttf differ diff --git a/src/fonts/public-sans/PublicSans-ExtraBold.woff b/src/fonts/public-sans/PublicSans-ExtraBold.woff index 9b1922cb7f..6e19fccbd2 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraBold.woff and b/src/fonts/public-sans/PublicSans-ExtraBold.woff differ diff --git a/src/fonts/public-sans/PublicSans-ExtraBold.woff2 b/src/fonts/public-sans/PublicSans-ExtraBold.woff2 index 7f387f19c3..01c3a1a15f 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraBold.woff2 and b/src/fonts/public-sans/PublicSans-ExtraBold.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf b/src/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf index eeb573487e..e24349b4cb 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf and b/src/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff b/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff index fa1340ff3d..b5b3d3421c 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff and b/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2 b/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2 index 4c81ca8d75..f7e64fbe1a 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2 and b/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-ExtraLight.ttf b/src/fonts/public-sans/PublicSans-ExtraLight.ttf index 20dd7280db..dfc188170b 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraLight.ttf and b/src/fonts/public-sans/PublicSans-ExtraLight.ttf differ diff --git a/src/fonts/public-sans/PublicSans-ExtraLight.woff b/src/fonts/public-sans/PublicSans-ExtraLight.woff index 9b79c3cc59..9d1830e375 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraLight.woff and b/src/fonts/public-sans/PublicSans-ExtraLight.woff differ diff --git a/src/fonts/public-sans/PublicSans-ExtraLight.woff2 b/src/fonts/public-sans/PublicSans-ExtraLight.woff2 index 0a181b4666..2f879e0170 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraLight.woff2 and b/src/fonts/public-sans/PublicSans-ExtraLight.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-ExtraLightItalic.ttf b/src/fonts/public-sans/PublicSans-ExtraLightItalic.ttf index 5758871f85..7636d679f0 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraLightItalic.ttf and b/src/fonts/public-sans/PublicSans-ExtraLightItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff b/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff index 99ad1d00c3..340062498a 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff and b/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff2 b/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff2 index 377ac573e0..ea46a5b86f 100644 Binary files a/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff2 and b/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-Italic.ttf b/src/fonts/public-sans/PublicSans-Italic.ttf index 41b6105a78..000ee58b06 100644 Binary files a/src/fonts/public-sans/PublicSans-Italic.ttf and b/src/fonts/public-sans/PublicSans-Italic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Italic.woff b/src/fonts/public-sans/PublicSans-Italic.woff index 7f6009c668..07916c88d2 100644 Binary files a/src/fonts/public-sans/PublicSans-Italic.woff and b/src/fonts/public-sans/PublicSans-Italic.woff differ diff --git a/src/fonts/public-sans/PublicSans-Italic.woff2 b/src/fonts/public-sans/PublicSans-Italic.woff2 index 567ac4bfc7..45175c0957 100644 Binary files a/src/fonts/public-sans/PublicSans-Italic.woff2 and b/src/fonts/public-sans/PublicSans-Italic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-Light.ttf b/src/fonts/public-sans/PublicSans-Light.ttf index cda6cfdee1..87f2361a58 100644 Binary files a/src/fonts/public-sans/PublicSans-Light.ttf and b/src/fonts/public-sans/PublicSans-Light.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Light.woff b/src/fonts/public-sans/PublicSans-Light.woff index 6b95d8662f..272c708ec8 100644 Binary files a/src/fonts/public-sans/PublicSans-Light.woff and b/src/fonts/public-sans/PublicSans-Light.woff differ diff --git a/src/fonts/public-sans/PublicSans-Light.woff2 b/src/fonts/public-sans/PublicSans-Light.woff2 index 75f5b74036..2c2d78b38e 100644 Binary files a/src/fonts/public-sans/PublicSans-Light.woff2 and b/src/fonts/public-sans/PublicSans-Light.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-LightItalic.ttf b/src/fonts/public-sans/PublicSans-LightItalic.ttf index f039de7ef2..578f79c03f 100644 Binary files a/src/fonts/public-sans/PublicSans-LightItalic.ttf and b/src/fonts/public-sans/PublicSans-LightItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-LightItalic.woff b/src/fonts/public-sans/PublicSans-LightItalic.woff index e2b2e1bd1b..b6d4e314a3 100644 Binary files a/src/fonts/public-sans/PublicSans-LightItalic.woff and b/src/fonts/public-sans/PublicSans-LightItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-LightItalic.woff2 b/src/fonts/public-sans/PublicSans-LightItalic.woff2 index 191f451d5c..dbb20011f4 100644 Binary files a/src/fonts/public-sans/PublicSans-LightItalic.woff2 and b/src/fonts/public-sans/PublicSans-LightItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-Medium.ttf b/src/fonts/public-sans/PublicSans-Medium.ttf index c2bcd20a0a..c55a1fc130 100644 Binary files a/src/fonts/public-sans/PublicSans-Medium.ttf and b/src/fonts/public-sans/PublicSans-Medium.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Medium.woff b/src/fonts/public-sans/PublicSans-Medium.woff index da595fddd9..44e2a9aa7e 100644 Binary files a/src/fonts/public-sans/PublicSans-Medium.woff and b/src/fonts/public-sans/PublicSans-Medium.woff differ diff --git a/src/fonts/public-sans/PublicSans-Medium.woff2 b/src/fonts/public-sans/PublicSans-Medium.woff2 index 90cf256d83..236f10fcb2 100644 Binary files a/src/fonts/public-sans/PublicSans-Medium.woff2 and b/src/fonts/public-sans/PublicSans-Medium.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-MediumItalic.ttf b/src/fonts/public-sans/PublicSans-MediumItalic.ttf index 0dfe84497a..bb34da4b24 100644 Binary files a/src/fonts/public-sans/PublicSans-MediumItalic.ttf and b/src/fonts/public-sans/PublicSans-MediumItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-MediumItalic.woff b/src/fonts/public-sans/PublicSans-MediumItalic.woff index f15a5158b0..9d62d5af79 100644 Binary files a/src/fonts/public-sans/PublicSans-MediumItalic.woff and b/src/fonts/public-sans/PublicSans-MediumItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-MediumItalic.woff2 b/src/fonts/public-sans/PublicSans-MediumItalic.woff2 index 238b32ef75..a991d0b4f8 100644 Binary files a/src/fonts/public-sans/PublicSans-MediumItalic.woff2 and b/src/fonts/public-sans/PublicSans-MediumItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-Regular.ttf b/src/fonts/public-sans/PublicSans-Regular.ttf index 0ada26f2d9..886b749f11 100644 Binary files a/src/fonts/public-sans/PublicSans-Regular.ttf and b/src/fonts/public-sans/PublicSans-Regular.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Regular.woff b/src/fonts/public-sans/PublicSans-Regular.woff index 51107e13c1..23d0e305d2 100644 Binary files a/src/fonts/public-sans/PublicSans-Regular.woff and b/src/fonts/public-sans/PublicSans-Regular.woff differ diff --git a/src/fonts/public-sans/PublicSans-Regular.woff2 b/src/fonts/public-sans/PublicSans-Regular.woff2 index 5672751197..708600470d 100644 Binary files a/src/fonts/public-sans/PublicSans-Regular.woff2 and b/src/fonts/public-sans/PublicSans-Regular.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-SemiBold.ttf b/src/fonts/public-sans/PublicSans-SemiBold.ttf index 67af4e8bf6..386c535743 100644 Binary files a/src/fonts/public-sans/PublicSans-SemiBold.ttf and b/src/fonts/public-sans/PublicSans-SemiBold.ttf differ diff --git a/src/fonts/public-sans/PublicSans-SemiBold.woff b/src/fonts/public-sans/PublicSans-SemiBold.woff index b4ed8bb6f9..86b19f2b43 100644 Binary files a/src/fonts/public-sans/PublicSans-SemiBold.woff and b/src/fonts/public-sans/PublicSans-SemiBold.woff differ diff --git a/src/fonts/public-sans/PublicSans-SemiBold.woff2 b/src/fonts/public-sans/PublicSans-SemiBold.woff2 index 1ac80da2bb..aa778b247b 100644 Binary files a/src/fonts/public-sans/PublicSans-SemiBold.woff2 and b/src/fonts/public-sans/PublicSans-SemiBold.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-SemiBoldItalic.ttf b/src/fonts/public-sans/PublicSans-SemiBoldItalic.ttf index d1f948f23e..abe1a08052 100644 Binary files a/src/fonts/public-sans/PublicSans-SemiBoldItalic.ttf and b/src/fonts/public-sans/PublicSans-SemiBoldItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff b/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff index 16be2888d5..dcef7221b3 100644 Binary files a/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff and b/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff2 b/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff2 index 8726f10f4b..4f6c71bfa4 100644 Binary files a/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff2 and b/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-Thin.ttf b/src/fonts/public-sans/PublicSans-Thin.ttf index 97ed90f4c6..23019a912e 100644 Binary files a/src/fonts/public-sans/PublicSans-Thin.ttf and b/src/fonts/public-sans/PublicSans-Thin.ttf differ diff --git a/src/fonts/public-sans/PublicSans-Thin.woff b/src/fonts/public-sans/PublicSans-Thin.woff index dae72f4023..c252099b4e 100644 Binary files a/src/fonts/public-sans/PublicSans-Thin.woff and b/src/fonts/public-sans/PublicSans-Thin.woff differ diff --git a/src/fonts/public-sans/PublicSans-Thin.woff2 b/src/fonts/public-sans/PublicSans-Thin.woff2 index 96fb8c4f6c..a515c68e19 100644 Binary files a/src/fonts/public-sans/PublicSans-Thin.woff2 and b/src/fonts/public-sans/PublicSans-Thin.woff2 differ diff --git a/src/fonts/public-sans/PublicSans-ThinItalic.ttf b/src/fonts/public-sans/PublicSans-ThinItalic.ttf index 5a06286c80..68d88caa7b 100644 Binary files a/src/fonts/public-sans/PublicSans-ThinItalic.ttf and b/src/fonts/public-sans/PublicSans-ThinItalic.ttf differ diff --git a/src/fonts/public-sans/PublicSans-ThinItalic.woff b/src/fonts/public-sans/PublicSans-ThinItalic.woff index 1798b5620d..dbd7c5eaa7 100644 Binary files a/src/fonts/public-sans/PublicSans-ThinItalic.woff and b/src/fonts/public-sans/PublicSans-ThinItalic.woff differ diff --git a/src/fonts/public-sans/PublicSans-ThinItalic.woff2 b/src/fonts/public-sans/PublicSans-ThinItalic.woff2 index 73d01b5549..3e1cd17230 100644 Binary files a/src/fonts/public-sans/PublicSans-ThinItalic.woff2 and b/src/fonts/public-sans/PublicSans-ThinItalic.woff2 differ diff --git a/src/js/components/footer.js b/src/js/components/footer.js index e55359ef6b..074fef528c 100755 --- a/src/js/components/footer.js +++ b/src/js/components/footer.js @@ -30,7 +30,11 @@ function showPanel() { } } +let lastInnerWidth; + const resize = debounce(() => { + if (lastInnerWidth === window.innerWidth) return; + lastInnerWidth = window.innerWidth; const hidden = window.innerWidth < HIDE_MAX_WIDTH; select(COLLAPSIBLE).forEach(list => list.classList.toggle(HIDDEN, hidden)); }, DEBOUNCE_RATE); diff --git a/src/js/components/navigation.js b/src/js/components/navigation.js index 134d56380b..3095d22c3c 100755 --- a/src/js/components/navigation.js +++ b/src/js/components/navigation.js @@ -25,7 +25,7 @@ let navActive; const isActive = () => document.body.classList.contains(ACTIVE_CLASS); -const toggleNav = function (active) { +const toggleNav = (active) => { const { body } = document; const safeActive = typeof active === 'boolean' ? active : !isActive(); @@ -85,7 +85,7 @@ navigation = behavior({ hideActiveNavDropdown(); } else { navActive = this; - toggle(navActive, true) + toggle(navActive, true); } // Do this so the event handler on the body doesn't fire diff --git a/src/stylesheets/core/mixins/_typography.scss b/src/stylesheets/core/mixins/_typography.scss index 49dd84da24..f72d7d8780 100644 --- a/src/stylesheets/core/mixins/_typography.scss +++ b/src/stylesheets/core/mixins/_typography.scss @@ -86,19 +86,19 @@ Sets: } } -@mixin title { +@mixin display { @include typeset( 'heading', - $theme-title-font-size, + $theme-display-font-size, $theme-heading-line-height ); font-weight: fw('bold'); } -@mixin typeset-title { +@mixin typeset-display { @include typeset-heading; - @include title; + @include display; } @mixin h1 { diff --git a/src/stylesheets/elements/_typography.scss b/src/stylesheets/elements/_typography.scss index e895981958..43c2870069 100644 --- a/src/stylesheets/elements/_typography.scss +++ b/src/stylesheets/elements/_typography.scss @@ -77,7 +77,7 @@ dfn { } @include at-media('tablet') { - @include typeset-title; + @include typeset-display; } } diff --git a/src/stylesheets/settings/_settings-color.scss b/src/stylesheets/settings/_settings-color.scss index b133b869ce..85a26feda5 100644 --- a/src/stylesheets/settings/_settings-color.scss +++ b/src/stylesheets/settings/_settings-color.scss @@ -129,5 +129,5 @@ General colors // Links $theme-link-color: 'primary' !default; $theme-link-visited-color: 'violet-70v' !default; -$theme-link-hover-color: 'primary-darker' !default; +$theme-link-hover-color: 'primary-dark' !default; $theme-link-active-color: 'primary-darker' !default; diff --git a/src/stylesheets/settings/_settings-typography.scss b/src/stylesheets/settings/_settings-typography.scss index becd7e795e..2a0d644140 100644 --- a/src/stylesheets/settings/_settings-typography.scss +++ b/src/stylesheets/settings/_settings-typography.scss @@ -407,7 +407,7 @@ $theme-h5-font-size: 'xs' !default; $theme-h6-font-size: '3xs' !default; $theme-heading-line-height: 2 !default; $theme-small-font-size: '2xs' !default; -$theme-title-font-size: '3xl' !default; +$theme-display-font-size: '3xl' !default; // Text and prose $theme-text-measure-narrow: 1 !default; diff --git a/src/stylesheets/theme/_uswds-theme-color.scss b/src/stylesheets/theme/_uswds-theme-color.scss index edb0b70fc5..bfd8c73326 100644 --- a/src/stylesheets/theme/_uswds-theme-color.scss +++ b/src/stylesheets/theme/_uswds-theme-color.scss @@ -129,5 +129,5 @@ General colors // Links $theme-link-color: 'primary'; $theme-link-visited-color: 'violet-70v'; -$theme-link-hover-color: 'primary-darker'; +$theme-link-hover-color: 'primary-dark'; $theme-link-active-color: 'primary-darker'; diff --git a/src/stylesheets/theme/_uswds-theme-typography.scss b/src/stylesheets/theme/_uswds-theme-typography.scss index bcf4e5e558..7e76c87a21 100644 --- a/src/stylesheets/theme/_uswds-theme-typography.scss +++ b/src/stylesheets/theme/_uswds-theme-typography.scss @@ -407,7 +407,7 @@ $theme-h5-font-size: 'xs'; $theme-h6-font-size: '3xs'; $theme-heading-line-height: 2; $theme-small-font-size: '2xs'; -$theme-title-font-size: '3xl'; +$theme-display-font-size: '3xl'; // Text and prose $theme-text-measure-narrow: 1;