Improve change api (#628)

* fix: jsdoc comments

* more human casting of string values to boolean

* add coerceColour to get named colors to work

* cue can't pass isKeyOfType event check

* dont mutate value

* alloow cue in eventDef

* lint

* css named or hex formatting

* "sideEffects": false

* test colour hex regex

* roll eventDef back to master

* parse property

* don't export cssColour names

* remove import

* only allow string types to colour

* handle transparent colour

* mix alpha with bg colour

* only allow updating events

* descriptive names

* add test for getAccessibleColour

* readability

* move isColourHex to regex-utils

* simplify and add test
This commit is contained in:
Alex Christoffer Rasmussen
2023-12-08 12:55:04 +01:00
committed by GitHub
parent a93cd3e9b1
commit 1343818917
12 changed files with 322 additions and 27 deletions
@@ -0,0 +1,45 @@
import { isColourHex } from './isColourHex';
describe('test isColourHex() function', () => {
it('it validates colour hex strings', () => {
const ts = ['#FFF', '#FFFF', '#FFFFFF', '#FFFFFFFF'];
for (const s of ts) {
expect(isColourHex(s)).toBe(true);
}
});
it('it validates colour hex strings', () => {
const ts = ['#F90', '#1234', '#56789A', '#BCDEF012'];
for (const s of ts) {
expect(isColourHex(s)).toBe(true);
}
});
it('it validates colour hex strings', () => {
const ts = ['#f90', '#1234', '#56789a', '#bcdef012'];
for (const s of ts) {
expect(isColourHex(s)).toBe(true);
}
});
it('it fails digits bigger than F', () => {
const ts = ['#FFG'];
for (const s of ts) {
expect(isColourHex(s)).toBe(false);
}
});
it('it fails incorect amout of digits', () => {
const ts = ['#F', '#FF', '#FFFFF', '#FFFFFFF', '#FFFFFFFFF'];
for (const s of ts) {
expect(isColourHex(s)).toBe(false);
}
});
it('it fails missing #', () => {
const ts = ['FFF', 'FFFF', 'FFFFFF', 'FFFFFFFF'];
for (const s of ts) {
expect(isColourHex(s)).toBe(false);
}
});
});
@@ -0,0 +1,10 @@
/**
* @description Validates a colour hex string
* @param {string} text - colour hex string "#FFF" | "#FFFF" | "#FFFFFF" | "#FFFFFFFF"
* @returns {boolean} string represents time
*/
export const isColourHex = (text: string): boolean => {
const regexS = /^#((?:[a-f\d]{1}){3,4})$/i;
const regexD = /^#((?:[a-f\d]{2}){3,4})$/i;
return regexS.test(text) || regexD.test(text);
};