fix: resolve linting issues and add dropdown tabindex
Node.js CI / CI (pull_request) Successful in 1m22s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m26s

Fixed ESLint error in header component:
- Added tabindex="-1" to dropdown menu for keyboard accessibility
- Ensures dropdown is focusable for screen readers

Auto-fixed formatting issues:
- Ran ESLint --fix to auto-correct stylistic issues
- Fixed key spacing in achievement constants
- Fixed object key ordering

Test Results:
-  All 123 tests passing (1 API + 122 shared-types)
-  Frontend linting passes
-  Only non-critical warnings remain in e2e and shared-types
This commit is contained in:
2026-02-20 01:49:10 -08:00
committed by Naomi Carrigan
parent abb39c67f2
commit 544c090ff3
8 changed files with 642 additions and 608 deletions
@@ -58,6 +58,7 @@ import { ApiService } from '../../services/api.service';
class="dropdown-menu" class="dropdown-menu"
role="menu" role="menu"
aria-label="User menu" aria-label="User menu"
tabindex="-1"
(keydown.escape)="closeDropdown()" (keydown.escape)="closeDropdown()"
> >
<a [routerLink]="['/profile', user.slug || user.id]" class="dropdown-item" role="menuitem" (click)="closeDropdown()">My Profile</a> <a [routerLink]="['/profile', user.slug || user.id]" class="dropdown-item" role="menuitem" (click)="closeDropdown()">My Profile</a>
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -61,10 +61,10 @@ export interface AchievementProgress {
export interface UserAchievementSummary { export interface UserAchievementSummary {
totalPoints: number; totalPoints: number;
totalEarned: number; totalEarned: number;
recentAchievements: AchievementProgress[]; recentAchievements: Array<AchievementProgress>;
progressByCategory: { progressByCategory: Array<{
category: AchievementCategory; category: AchievementCategory;
earned: number; earned: number;
total: number; total: number;
}[]; }>;
} }
+1 -1
View File
@@ -62,7 +62,7 @@ interface AchievementActivity extends BaseActivity {
type Activity = SuggestionActivity | LikeActivity | CommentActivity | AchievementActivity; type Activity = SuggestionActivity | LikeActivity | CommentActivity | AchievementActivity;
interface ActivityFeedResponse { interface ActivityFeedResponse {
activities: Activity[]; activities: Array<Activity>;
total: number; total: number;
hasMore: boolean; hasMore: boolean;
} }
+1 -1
View File
@@ -4,7 +4,7 @@
* @author Naomi Carrigan * @author Naomi Carrigan
*/ */
import { PrimaryBadge } from "./auth.types"; import type { PrimaryBadge } from "./auth.types";
interface CommentUser { interface CommentUser {
id: string; id: string;
+4 -4
View File
@@ -41,10 +41,10 @@ interface OverallLeaderboard extends LeaderboardUser {
} }
interface LeaderboardResponse { interface LeaderboardResponse {
topSuggestions: SuggestionsLeaderboard[]; topSuggestions: Array<SuggestionsLeaderboard>;
topLikes: LikesLeaderboard[]; topLikes: Array<LikesLeaderboard>;
topComments: CommentsLeaderboard[]; topComments: Array<CommentsLeaderboard>;
topOverall: OverallLeaderboard[]; topOverall: Array<OverallLeaderboard>;
} }
export { export {