Skip to content

Commit 2272bd1

Browse files
christian-huehn-mwclaude
authored andcommitted
fix(visualization): fix Sonar issues and restore screenshot label borders
Use native <input type="radio"> instead of <button role="radio"> for accessibility. Mark labelSettingsFacade as readonly. Replace box-shadow with a solid border during screenshot capture so labels render correctly in html2canvas. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c173963 commit 2272bd1

File tree

4 files changed

+17
-19
lines changed

4 files changed

+17
-19
lines changed

visualization/app/codeCharta/features/labelSettings/components/labelSettingsPanel/labelSettingsPanel.component.html

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,17 @@
1010
</div>
1111
</div>
1212

13-
<div class="join w-full" role="radiogroup" aria-label="Label mode">
14-
<button
15-
class="btn btn-sm join-item flex-1"
16-
[class.btn-primary]="labelMode() === LabelMode.Height"
17-
[attr.aria-checked]="labelMode() === LabelMode.Height"
18-
role="radio"
19-
(click)="setLabelMode(LabelMode.Height)"
20-
>Height</button>
21-
<button
22-
class="btn btn-sm join-item flex-1"
23-
[class.btn-primary]="labelMode() === LabelMode.Color"
24-
[attr.aria-checked]="labelMode() === LabelMode.Color"
25-
role="radio"
26-
(click)="setLabelMode(LabelMode.Color)"
27-
>Color</button>
13+
<div class="join w-full" aria-label="Label mode">
14+
<input type="radio" name="labelMode"
15+
class="join-item btn btn-sm flex-1"
16+
aria-label="Height"
17+
[checked]="labelMode() === LabelMode.Height"
18+
(change)="setLabelMode(LabelMode.Height)" />
19+
<input type="radio" name="labelMode"
20+
class="join-item btn btn-sm flex-1"
21+
aria-label="Color"
22+
[checked]="labelMode() === LabelMode.Color"
23+
(change)="setLabelMode(LabelMode.Color)" />
2824
</div>
2925

3026
<label class="flex items-center gap-2 cursor-pointer">

visualization/app/codeCharta/features/labelSettings/components/labelSettingsPanel/labelSettingsPanel.component.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ describe("LabelSettingsPanelComponent", () => {
6363
await render(LabelSettingsPanelComponent)
6464

6565
// Assert
66-
expect(screen.getByText("Height")).not.toBe(null)
67-
expect(screen.getByText("Color")).not.toBe(null)
66+
expect(screen.getByRole("radio", { name: "Height" })).not.toBe(null)
67+
expect(screen.getByRole("radio", { name: "Color" })).not.toBe(null)
6868
})
6969

7070
it("should dispatch setLabelMode when clicking Color button", async () => {
@@ -73,7 +73,7 @@ describe("LabelSettingsPanelComponent", () => {
7373
const dispatchSpy = jest.spyOn(TestBed.inject(Store), "dispatch")
7474

7575
// Act
76-
await userEvent.click(screen.getByText("Color"))
76+
await userEvent.click(screen.getByRole("radio", { name: "Color" }))
7777

7878
// Assert
7979
expect(dispatchSpy).toHaveBeenCalledWith(setLabelMode({ value: LabelMode.Color }))

visualization/app/codeCharta/ui/codeMap/codeMap.render.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class CodeMapRenderService implements OnDestroy {
3939
private readonly store: Store<CcState>,
4040
private readonly state: State<CcState>,
4141
private threeSceneService: ThreeSceneService,
42-
private labelSettingsFacade: LabelSettingsFacade,
42+
private readonly labelSettingsFacade: LabelSettingsFacade,
4343
private codeMapArrowService: CodeMapArrowService,
4444
private threeStatsService: ThreeStatsService,
4545
private codeMapMouseEventService: CodeMapMouseEventService

visualization/app/codeCharta/ui/screenshotButton/screenshotButton.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ export class ScreenshotButtonComponent implements OnInit {
160160
el.style.backdropFilter = "none"
161161
el.style.setProperty("-webkit-backdrop-filter", "none")
162162
el.style.background = "white"
163+
el.style.boxShadow = "none"
164+
el.style.border = "1px solid rgba(0, 0, 0, 0.3)"
163165
el.style.transition = "none"
164166
}
165167
return saved

0 commit comments

Comments
 (0)