β ππ Validate HTML colors by
name
,hex
,rgb
,rgba
,hsl
orhsla
values
HTML colors are remarkably easy to get wrong, because they allow for so many different values.
As I was writing Console Log Plus, I thought it would be great to allow users to pass any HTML color they wanted as one of the parameter to the function. But since HTML colors have so many variations and therefore are complex strings, it didn't take me long to realize that I'd have to make quite a few checks to validate the value passed by the user. That need brought me here.
Validate Color let's one validate the color string against all current possible HTML color values. Some examples:
hex
-#bada55
name
-LightGoldenrodYellow
rgb
-rgb(0, 0, 0)
rgba
-rgba(0, 0, 0, .45)
hsl
-hsl(100%, 100%, 100%)
hsla
-hsla(100%, 100%, 100%, 1)
To demonstrate the power of validate-color, I decided it would be best to create a living github page, that would serve both as a way of showcase validate-color, and facilitate its use:
https://dreamyguy.github.io/validate-color/
On this page you can:
- Validate HTML colors as you type
On my TODO list:
- See opaque colors against black and white backgrounds.
- See colors with transparency in different contexts.
validate-color is also available as a package on npm
and can be installed as a depedency with:
npm i validate-color --save
As with any node module, first you'll have to import it with require
:
var validateColor = require('validate-color');
...or through import
:
import validateColor from 'validate-color';
Once you've done the import, you'll be able to do checks like (example in React):
import React from 'react';
import validateColor from 'validate-color';
const ColorBox = props => {
const {
color = '',
text = ''
} = props;
const theColor = color && validateColor(color) ? color : 'transparent';
return (
<div className="color-box" style={{backgroundColor: theColor}}>
<p>{text}</p>
</div>
)
};
export default ColorBox;
π The source for a full-fledged color validation component can be viewed here. That component can be seen in action here.
One can "extend" the library by using only parts of it.
1. Validate only HTML colors (hex
, rgb
, rgba
, hsl
, hsla
), without name
import { validateHTMLColor } from 'validate-color';
2. Validate only color hex
import { validateHTMLColorHex } from 'validate-color';
3. Validate only color name
import { validateHTMLColorName } from 'validate-color';
Clone this repo locally. You'll need to have NodeJS installed. Install all dependencies by running:
npm i
To start the app locally, run:
npm run start
This command fires up the application on port 9900
, making it visible on http://localhost:9900. Because this app is based on create-react-app, the port number should be configured on the .env file.
When you're ready to build for production, run:
npm run build
This command compiles all production-optimised resources to a folder called build. It's meant to be run remotely, at the environment host, at build time.
When you're done with your changes, run:
npm run build-npm
This command compiles the distribution-optimised javascript
to lib/index.js
, a file compiled out of src/validate-color/index.js.
π Note that the
lib/
folder and its contents are only available at the NPM distribution.
This project wouldn't be complete without proper testing.
Jest is my Unit Testing framework of choice. It's well documented and shares good practices & syntax with its most known predecessors (Mocha, Jasmine, etc). Babel was introduced as a dependency to the project because of Jest, but it was worth it since now we can use ES6 syntax on our tests as well.
Run all tests, in watch mode:
npm run test
Tests are also run through Travis on every push to master
. The build status is shown at the top of this README.
π All tests are named according to the file they're testing:
index.js
->index.test.js
, and reside under the same directory. SinceJest
comes as courtesy of CRA, all tests should be placed under the src/ folder.
This repo is a hybrid one. It:
- Builds the NPM distribution
- Builds the GitHub Page that serves as a demo/showcase
There are 3 commands one can run to deploy to these two places.
Deploy to GitHub Pages
npm run deploy
Deploy to NPM
npm run deploy-npm
Deploy to both places at once
npm run release
β οΈ Make sure to bump version before releasing!
- The RegEx behind the HTML color validation came from https://www.regextester.com/103656
- The color name list was extracted from https://htmlcolorcodes.com/color-names/
Validate Color was put together by Wallace SidhrΓ©e. π¨βπ»π³π΄