diff --git a/Gruntfile.js b/Gruntfile.js index dc851b7..ad19f4a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,5 +1,3 @@ -var path = require('path'); - module.exports = function (grunt) { // -- Config ------------------------------------------------------------------- @@ -9,6 +7,18 @@ grunt.initConfig({ pkg : grunt.file.readJSON('package.json'), bower: grunt.file.readJSON('bower.json'), + // -- bower.json Config --------------------------------------------------------- + + bower_json: { + release: { + values: { + main: 'pure.css' + }, + + dest: 'build/' + } + }, + // -- Clean Config --------------------------------------------------------- clean: { @@ -25,6 +35,11 @@ grunt.initConfig({ dest : 'build/', expand : true, flatten: true + }, + + release: { + src : '{LICENSE.md,README.md,HISTORY.md}', + dest: 'build/' } }, @@ -115,7 +130,7 @@ grunt.initConfig({ cssmin: { options: { - // report: 'gzip' + noAdvanced: true }, files: { @@ -130,17 +145,13 @@ grunt.initConfig({ compress: { release: { options: { - archive: 'release/<%= pkg.version %>/<%= pkg.name %>-<%= pkg.version %>.zip' + archive: 'release/<%= pkg.version %>/<%= pkg.name %>-<%= pkg.version %>.tar.gz' }, expand : true, flatten: true, - dest : '<%= pkg.name %>/<%= pkg.version %>/', - - src: [ - '{bower.json,LICENSE.md,README.md,HISTORY.md}', - 'build/*.css' - ] + src : 'build/*', + dest : '<%= pkg.name %>/<%= pkg.version %>/' } }, @@ -167,7 +178,7 @@ grunt.initConfig({ banner: [ '/*!', 'Pure v<%= pkg.version %>', - 'Copyright 2013 Yahoo! Inc. All rights reserved.', + 'Copyright 2014 Yahoo! Inc. All rights reserved.', 'Licensed under the BSD License.', 'https://github.com/yui/pure/blob/master/LICENSE.md', '*/\n' @@ -179,11 +190,16 @@ grunt.initConfig({ } }, - // -- Grid Units Config ---------------------------------------------------- + // -- Pure Grids Units Config ---------------------------------------------- - grid_units: { - dest : 'build/grids-units.css', - units: [5, 24] + pure_grids: { + default_units: { + dest: 'build/grids-units.css', + + options: { + units: [5, 24] + } + } }, // -- CSS Selectors Config ------------------------------------------------- @@ -224,6 +240,7 @@ grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-compress'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-css-selectors'); +grunt.loadNpmTasks('grunt-pure-grids'); // Local tasks. grunt.loadTasks('tasks/'); @@ -234,7 +251,7 @@ grunt.registerTask('test', ['csslint']); grunt.registerTask('build', [ 'clean:build', 'copy:build', - 'grid_units', + 'pure_grids', 'concat:build', 'clean:build_res', 'css_selectors:base', @@ -249,6 +266,8 @@ grunt.registerTask('watch', ['default', 'observe']); grunt.registerTask('release', [ 'default', 'clean:release', + 'copy:release', + 'bower_json:release', 'compress:release' ]); diff --git a/HISTORY.md b/HISTORY.md index 1ff3533..f4290fd 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -4,6 +4,38 @@ Pure Change History NEXT ---- +* Switched cell padding in Tables from `px` to `em` units, and also increased + the amount of padding to `padding: 0.5em 1em`. + + +0.4.2 (2014-02-13) +------------------ + +* Added `main` to Pure's `bower.json` file to allow easier integration with + build processes and tooling. ([#286][] @stevenvachon) + +### Forms + +* Improved how `` elements look in Chrome by fixing + paddings. ([#283][] @jpetto) + +* Removed `font-size` rules from ``, ``, and `
` + elements within `.pure-form`. Font sizes are now inherited from the + application's CSS file. ([#265][]) + +* Invalid `` elements within a Pure Form no longer explicitly set a + `border-width`. ([#295][] @kwando) + + +[#265]: https://github.com/yui/pure/issues/265 +[#283]: https://github.com/yui/pure/issues/283 +[#286]: https://github.com/yui/pure/issues/286 +[#295]: https://github.com/yui/pure/issues/295 + + +0.4.1 (2014-02-06) +------------------ + ### Base * Elements that have Pure classnames which set a `display` declaration _and_ use @@ -36,7 +68,8 @@ NEXT Forms to fix an alignment issue where its label was aligned to the middle. ([#174][] @rictorres, @ItsAsbreuk) -* Added styling for `` elements that don't have a `type` attribute. ([#261][] @dougdavies) +* Added styling for `` elements that don't have a `type` attribute. + ([#261][] @dougdavies) ### Grids @@ -68,6 +101,12 @@ NEXT [Rework]: https://github.com/visionmedia/rework +0.4.0 (2014-02-06) +------------------ + +* __[!]__ Corrupted release build, use `0.4.1`. + + 0.3.0 (2013-09-09) ------------------ diff --git a/LICENSE.md b/LICENSE.md index 03cc2ef..e914649 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ Software License Agreement (BSD License) ======================================== -Copyright 2013 Yahoo! Inc. All rights reserved. +Copyright 2014 Yahoo! Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 61edee2..41d445a 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ A set of small, responsive CSS modules that you can use in every web project. **Use From the CDN:** ```html - + ``` Note: You can [customize which Pure modules you need][customize]. @@ -55,7 +55,7 @@ of all the CSS work that every site needs, without making it look cookie-cutter: * Easy one-click customization with the [Skin Builder][]. -* Extremely small file size: **4.4KB minified + gzip**. +* Extremely small file size: **4.5KB minified + gzip**. [Normalize.css]: http://necolas.github.io/normalize.css/ @@ -72,7 +72,7 @@ You can include the Pure CSS file in your project by fetching it from Yahoo's CDN: ```html - + ``` You can also install Pure using [Bower][], using the following command: diff --git a/bower.json b/bower.json index de5835b..0f6151d 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,7 @@ { "name": "pure", - "version": "0.3.1-pre", + "version": "0.4.3-pre", + "main": "build/pure.css", "devDependencies": { "normalize-css": "1.1.3" } diff --git a/package.json b/package.json index d1d59c7..96227ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pure", - "version": "0.3.1-pre", + "version": "0.4.3-pre", "private": true, "repository": "git://github.com/yui/pure.git", "scripts": { @@ -12,12 +12,12 @@ "grunt-cli": "~0.1.9", "grunt-contrib-cssmin": "~0.6.0", "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-copy": "~0.4.1", + "grunt-contrib-copy": "~0.5.0", "grunt-contrib-concat": "~0.3.0", - "grunt-contrib-compress": "~0.5.0", - "grunt-contrib-csslint": "~0.1.2", + "grunt-contrib-compress": "~0.6.0", + "grunt-contrib-csslint": "~0.2.0", "grunt-contrib-watch": "~0.5.3", - "grunt-css-selectors": "~0.1.0", - "rework-pure-grids": "0.1.0" + "grunt-css-selectors": "~1.0.0", + "grunt-pure-grids": "0.0.1" } } diff --git a/src/buttons/css/buttons.css b/src/buttons/css/buttons.css index f88c03b..95e2fd8 100644 --- a/src/buttons/css/buttons.css +++ b/src/buttons/css/buttons.css @@ -14,12 +14,6 @@ background-color: #E6E6E6; text-decoration: none; border-radius: 2px; - /* Transitions */ - -webkit-transition: 0.1s linear -webkit-box-shadow; - -moz-transition: 0.1s linear -moz-box-shadow; - -ms-transition: 0.1s linear box-shadow; - -o-transition: 0.1s linear box-shadow; - transition: 0.1s linear box-shadow; } .pure-button-hover, diff --git a/src/forms/css/forms-r.css b/src/forms/css/forms-r.css index 875bdf8..dab2758 100644 --- a/src/forms/css/forms-r.css +++ b/src/forms/css/forms-r.css @@ -57,7 +57,7 @@ .pure-form-message-inline, .pure-form-message { display: block; - font-size: 80%; + font-size: 0.75em; /* Increased bottom padding to make it group with its related input element. */ padding: 0.2em 0 0.8em; } diff --git a/src/forms/css/forms.css b/src/forms/css/forms.css index 01c4062..d70e17f 100644 --- a/src/forms/css/forms.css +++ b/src/forms/css/forms.css @@ -1,4 +1,3 @@ -.pure-form input:not([type]), .pure-form input[type="text"], .pure-form input[type="password"], .pure-form input[type="email"], @@ -18,20 +17,36 @@ padding: 0.5em 0.6em; display: inline-block; border: 1px solid #ccc; - font-size: 0.8em; box-shadow: inset 0 1px 3px #ddd; border-radius: 4px; - -webkit-transition: 0.3s linear border; - -moz-transition: 0.3s linear border; - -ms-transition: 0.3s linear border; - -o-transition: 0.3s linear border; - transition: 0.3s linear border; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } -.pure-form input:not([type]):focus, +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form input:not([type]) { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + + +/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */ +/* May be able to remove this tweak as color inputs become more standardized across browsers. */ +.pure-form input[type="color"] { + padding: 0.2em 0.5em; +} + + .pure-form input[type="text"]:focus, .pure-form input[type="password"]:focus, .pure-form input[type="email"]:focus, @@ -53,6 +68,16 @@ border-color: #129FEA; } +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form input:not([type]):focus { + outline: 0; + outline: thin dotted \9; /* IE6-9 */ + border-color: #129FEA; +} + .pure-form input[type="file"]:focus, .pure-form input[type="radio"]:focus, .pure-form input[type="checkbox"]:focus { @@ -64,7 +89,7 @@ margin: 0.5em 0; display: block; } -.pure-form input:not([type])[disabled], + .pure-form input[type="text"][disabled], .pure-form input[type="password"][disabled], .pure-form input[type="email"][disabled], @@ -85,6 +110,16 @@ background-color: #eaeded; color: #cad2d3; } + +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form input:not([type])[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} .pure-form input[readonly], .pure-form select[readonly], .pure-form textarea[readonly] { @@ -97,7 +132,7 @@ .pure-form textarea:focus:invalid, .pure-form select:focus:invalid { color: #b94a48; - border: 1px solid #ee5f5b; + border-color: #ee5f5b; } .pure-form input:focus:invalid:focus, .pure-form textarea:focus:invalid:focus, @@ -118,7 +153,6 @@ } .pure-form label { margin: 0.5em 0 0.2em; - font-size: 90%; } .pure-form fieldset { margin: 0; @@ -130,12 +164,10 @@ width: 100%; padding: 0.3em 0; margin-bottom: 0.3em; - font-size: 125%; color: #333; border-bottom: 1px solid #e5e5e5; } -.pure-form-stacked input:not([type]), .pure-form-stacked input[type="text"], .pure-form-stacked input[type="password"], .pure-form-stacked input[type="email"], @@ -157,6 +189,14 @@ margin: 0.25em 0; } +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form-stacked input:not([type]) { + display: block; + margin: 0.25em 0; +} .pure-form-aligned input, .pure-form-aligned textarea, .pure-form-aligned select, @@ -245,12 +285,12 @@ padding-left: 0.3em; color: #666; vertical-align: middle; - font-size: 90%; + font-size: 0.875em; } /* Block help for forms */ .pure-form-message { display: block; color: #666; - font-size: 90%; + font-size: 0.875em; } diff --git a/src/forms/tests/manual/forms.html b/src/forms/tests/manual/forms.html index ecc3536..cf8d4f2 100644 --- a/src/forms/tests/manual/forms.html +++ b/src/forms/tests/manual/forms.html @@ -114,6 +114,9 @@ + + + diff --git a/src/tables/css/tables.css b/src/tables/css/tables.css index 5d8d81d..b842659 100644 --- a/src/tables/css/tables.css +++ b/src/tables/css/tables.css @@ -20,7 +20,7 @@ font-size: inherit; margin: 0; overflow: visible; /*to make ths where the title is really long work*/ - padding: 6px 12px; /* cell padding */ + padding: 0.5em 1em; /* cell padding */ } .pure-table td:first-child, .pure-table th:first-child { diff --git a/tasks/bower_json.js b/tasks/bower_json.js new file mode 100644 index 0000000..9aa339d --- /dev/null +++ b/tasks/bower_json.js @@ -0,0 +1,18 @@ +'use strict'; + +var path = require('path'); + +module.exports = function (grunt) { + grunt.registerMultiTask('bower_json', 'Modifies bower.json file.', function (target) { + var values = this.data.values; + + Object.keys(values).forEach(function (key) { + grunt.config.set('bower.' + key, values[key]); + grunt.log.writeln('Updated Bower ' + + String(key).cyan + ': ' + String(values[key]).cyan); + }); + + grunt.file.write(path.join(this.data.dest, 'bower.json'), + JSON.stringify(grunt.config('bower'), null, ' ')); + }); +}; diff --git a/tasks/grid_units.js b/tasks/grid_units.js deleted file mode 100644 index 0b8d45c..0000000 --- a/tasks/grid_units.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -var rework = require('rework'), - pureGrids = require('rework-pure-grids'); - -module.exports = function (grunt) { - grunt.registerTask('grid_units', 'Generates grid units.', function (target) { - var config = grunt.config.get(this.name), - css = rework('').use(pureGrids.units(config.units)); - - grunt.file.write(config.dest, css.toString({indent: ' '})); - grunt.log.writeln('File "' + config.dest + '" created.'); - }); -};