diff --git a/src/lib/isHSL.js b/src/lib/isHSL.js index 05cb43962..05d8d3ec2 100644 --- a/src/lib/isHSL.js +++ b/src/lib/isHSL.js @@ -2,7 +2,7 @@ import assertString from './util/assertString'; const hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i; -const hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i; +const hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s?((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i; export default function isHSL(str) { diff --git a/test/validators.test.js b/test/validators.test.js index 98d2a12ff..3d6207167 100644 --- a/test/validators.test.js +++ b/test/validators.test.js @@ -5108,6 +5108,31 @@ describe('Validators', () => { }); }); + it('should allow optional whitespace around the HSL alpha separator', () => { + test({ + validator: 'isHSL', + valid: [ + 'hsl(120 100% 50%/0.5)', + 'hsl(120 100% 50% /0.5)', + 'hsl(120 100% 50%/ 0.5)', + 'hsl(120 100% 50% / 0.5)', + 'hsla(120 100% 50%/50%)', + 'hsla(120 100% 50% /50%)', + 'hsla(120 100% 50%/ 50%)', + 'hsla(120 100% 50% / 50%)', + 'hsl(120 100% 50%/.5)', + 'hsl(120 100% 50%\t/\t0.5)', + ], + invalid: [ + 'hsl(120 100% 50%/)', + 'hsl(120 100% 50%/ )', + 'hsl(120 100% 50%//0.5)', + 'hsl(120 100% 50%/0. 5)', + 'hsl(120 100% 50%/50 %)', + ], + }); + }); + it('should validate rgb color strings', () => { test({ validator: 'isRgbColor',