diff --git a/package.json b/package.json index e78cfe5c..bfb1dfb9 100644 --- a/package.json +++ b/package.json @@ -568,6 +568,11 @@ "default": true, "description": "Default state of the \"Include Untracked\" checkbox." }, + "git-graph.enhancedAccessibility": { + "type": "boolean", + "default": false, + "description": "Visual file change A|M|D|R|U indicators in the Commit Details View for users with colour blindness. In the future, this setting will enable any additional accessibility related features of Git Graph that aren't enabled by default." + }, "git-graph.fetchAndPrune": { "type": "boolean", "default": false, diff --git a/src/config.ts b/src/config.ts index 332f3876..e5b8612c 100644 --- a/src/config.ts +++ b/src/config.ts @@ -229,6 +229,13 @@ class Config { }; } + /** + * Get the value of the `git-graph.enhancedAccessibility` Extension Setting. + */ + get enhancedAccessibility() { + return !!this.config.get('enhancedAccessibility', false); + } + /** * Get the value of the `git-graph.fetchAndPrune` Extension Setting. */ diff --git a/src/gitGraphView.ts b/src/gitGraphView.ts index 6ad359cf..83e07148 100644 --- a/src/gitGraphView.ts +++ b/src/gitGraphView.ts @@ -585,6 +585,7 @@ export class GitGraphView implements vscode.Disposable { defaultColumnVisibility: config.defaultColumnVisibility, defaultFileViewType: config.defaultFileViewType, dialogDefaults: config.dialogDefaults, + enhancedAccessibility: config.enhancedAccessibility, fetchAndPrune: config.fetchAndPrune, fetchAvatars: config.fetchAvatars && this.extensionState.isAvatarStorageAvailable(), graphColours: config.graphColours, diff --git a/src/types.ts b/src/types.ts index fee1c0f5..3bfd0d4b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -218,6 +218,7 @@ export interface GitGraphViewConfig { readonly defaultColumnVisibility: DefaultColumnVisibility; readonly defaultFileViewType: FileViewType; readonly dialogDefaults: DialogDefaults; + readonly enhancedAccessibility: boolean; readonly fetchAndPrune: boolean; readonly fetchAvatars: boolean; readonly graphColours: string[]; diff --git a/tests/config.test.ts b/tests/config.test.ts index 694f16ca..9ba2a416 100644 --- a/tests/config.test.ts +++ b/tests/config.test.ts @@ -1356,6 +1356,68 @@ describe('Config', () => { }); }); + describe('enhancedAccessibility', () => { + it('Should return TRUE when the configuration value is TRUE', () => { + // Setup + workspaceConfiguration.get.mockReturnValueOnce(true); + + // Run + const value = config.enhancedAccessibility; + + // Assert + expect(workspaceConfiguration.get).toBeCalledWith('enhancedAccessibility', false); + expect(value).toBe(true); + }); + + it('Should return FALSE when the configuration value is FALSE', () => { + // Setup + workspaceConfiguration.get.mockReturnValueOnce(false); + + // Run + const value = config.enhancedAccessibility; + + // Assert + expect(workspaceConfiguration.get).toBeCalledWith('enhancedAccessibility', false); + expect(value).toBe(false); + }); + + it('Should return TRUE when the configuration value is truthy', () => { + // Setup + workspaceConfiguration.get.mockReturnValueOnce(5); + + // Run + const value = config.enhancedAccessibility; + + // Assert + expect(workspaceConfiguration.get).toBeCalledWith('enhancedAccessibility', false); + expect(value).toBe(true); + }); + + it('Should return FALSE when the configuration value is falsy', () => { + // Setup + workspaceConfiguration.get.mockReturnValueOnce(0); + + // Run + const value = config.enhancedAccessibility; + + // Assert + expect(workspaceConfiguration.get).toBeCalledWith('enhancedAccessibility', false); + expect(value).toBe(false); + }); + + it('Should return the default value (FALSE) when the configuration value is not set', () => { + // Setup + workspaceConfiguration.get.mockImplementationOnce((_, defaultValue) => defaultValue); + + // Run + const value = config.enhancedAccessibility; + + // Assert + expect(workspaceConfiguration.get).toBeCalledWith('enhancedAccessibility', false); + expect(value).toBe(false); + }); + }); + describe('fetchAndPrune', () => { it('Should return TRUE when the configuration value is TRUE', () => { // Setup diff --git a/web/main.ts b/web/main.ts index a2c6c264..dcf6bc4e 100644 --- a/web/main.ts +++ b/web/main.ts @@ -2951,7 +2951,9 @@ function generateFileTreeLeafHtml(name: string, leaf: FileTreeLeaf, gitFiles: Re const textFile = fileTreeFile.additions !== null && fileTreeFile.deletions !== null; const diffPossible = fileTreeFile.type === GG.GitFileStatus.Untracked || textFile; const encodedOldFilePath = encodeURIComponent(fileTreeFile.oldFilePath), encodedNewFilePath = encodeURIComponent(fileTreeFile.newFilePath); - return '