Skip to content

Commit

Permalink
#14 #88 Complete color-contrast-assessor.ts class and unit tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
azurepolarbear committed Jun 2, 2024
1 parent efa3264 commit 3d6b0a8
Show file tree
Hide file tree
Showing 4 changed files with 502 additions and 12 deletions.
64 changes: 64 additions & 0 deletions docs/release-notes/v0.6.0-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,70 @@ declare interface Palette {

# New Classes

## `ColorContrastAssessor`

```typescript
/**
* Evaluates if two colors meet the AA or AAA contrast standard
* of the Web Content Accessibility Guidelines (WCAG).<br/>
* To learn more about WCAG, visit
* <a href="https://www.w3.org/WAI/standards-guidelines/wcag/" target="_blank" rel="noopener noreferrer">https://www.w3.org/WAI/standards-guidelines/wcag/</a>.
*
* @category Color
* @category Color Contrast
*/
declare class ColorContrastAssessor {
public static meetsContrastStandard(colorA: Color,
colorB: Color): boolean;
public static meetsContrastStandard(colorA: PaletteColor,
colorB: PaletteColor): boolean;
public static meetsContrastStandard(colorA: string,
colorB: string): boolean;
public static meetsContrastStandard(colorA: Color,
colorB: Color,
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
public static meetsContrastStandard(colorA: PaletteColor,
colorB: PaletteColor,
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
public static meetsContrastStandard(colorA: string,
colorB: string,
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
/**
* Evaluates if two colors have an appropriate contrast ratio
* for the given {@link ContrastStandard} and {@link ContrastFontSize}.
*
* @param colorA
* @param colorB
* @param standard - If no standard is provided, {@link ContrastStandard.AA} will be used.
* @param fontSize - If no font size is provided, {@link ContrastFontSize.NORMAL} will be used.
*/
public static meetsContrastStandard(colorA: Color | PaletteColor | string,
colorB: Color | PaletteColor | string,
standard?: ContrastStandard,
fontSize?: ContrastFontSize): boolean;

/**
* Do the given colors conform to guidelines for the given standard and font size?
*
* @param hexA
* @param hexB
* @param standard
* @param fontSize
*
* @returns `true` if the two colors have an acceptable contrast ratio
* for the given {@link ContrastStandard} and {@link ContrastFontSize},
* `false` if they do not have an acceptable ratio.
*/
private static haveAppropriateContrastRatio(hexA: string,
hexB: string,
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
}
```

## `ColorNameManager`

```typescript
Expand Down
1 change: 1 addition & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const config: JestConfigWithTsJest = {
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'json', 'node'],
moduleNameMapper: {
'^color$': '<rootDir>/src/main/color',
'^color-contrast$': '<rootDir>/src/main/color/color-contrast',
'^context$': '<rootDir>/src/main/p5',
'^discriminator$': '<rootDir>/src/main/discriminator',
'^map$': '<rootDir>/src/main/map',
Expand Down
26 changes: 14 additions & 12 deletions src/main/color/color-contrast/color-contrast-assessor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ export enum ContrastFontSize {
LARGE = 'large'
}

// TODO - unit tests
// TODO - add to release notes
/**
* Evaluates if two colors meet the AA or AAA contrast standard
* of the Web Content Accessibility Guidelines (WCAG).<br/>
Expand All @@ -69,19 +67,24 @@ export enum ContrastFontSize {
* @category Color Contrast
*/
export class ColorContrastAssessor {

// TODO - unit tests
public static meetsContrastStandard(colorA: Color,
colorB: Color): boolean;
public static meetsContrastStandard(colorA: PaletteColor,
colorB: PaletteColor): boolean;
public static meetsContrastStandard(colorA: string,
colorB: string): boolean;
public static meetsContrastStandard(colorA: Color,
colorB: Color,
standard?: ContrastStandard,
fontSize?: ContrastFontSize): boolean;
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
public static meetsContrastStandard(colorA: PaletteColor,
colorB: PaletteColor,
standard?: ContrastStandard,
fontSize?: ContrastFontSize): boolean;
public static meetsContrastStandard(colorA: string, colorB: string,
standard?: ContrastStandard,
fontSize?: ContrastFontSize): boolean;
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
public static meetsContrastStandard(colorA: string,
colorB: string,
standard: ContrastStandard,
fontSize: ContrastFontSize): boolean;
/**
* Evaluates if two colors have an appropriate contrast ratio
* for the given {@link ContrastStandard} and {@link ContrastFontSize}.
Expand Down Expand Up @@ -117,7 +120,6 @@ export class ColorContrastAssessor {
);
}

// TODO - unit tests
/**
* Do the given colors conform to guidelines for the given standard and font size?
*
Expand Down
Loading

0 comments on commit 3d6b0a8

Please sign in to comment.