diff --git a/__tests__/components/groups/page/list/card/GroupCard.test.tsx b/__tests__/components/groups/page/list/card/GroupCard.test.tsx
index bf776d8c45..0aea0d5e03 100644
--- a/__tests__/components/groups/page/list/card/GroupCard.test.tsx
+++ b/__tests__/components/groups/page/list/card/GroupCard.test.tsx
@@ -1,5 +1,6 @@
import React from "react";
import { render, fireEvent } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
import GroupCard, {
GroupCardState,
} from "@/components/groups/page/list/card/GroupCard";
@@ -30,6 +31,10 @@ jest.mock(
const push = jest.fn();
(useRouter as jest.Mock).mockReturnValue({ push });
+beforeEach(() => {
+ push.mockClear();
+});
+
describe("GroupCard", () => {
const group: any = {
id: "g1",
@@ -61,8 +66,30 @@ describe("GroupCard", () => {
}
it("navigates to community view when idle", () => {
- renderComp();
- fireEvent.click(document.querySelector("div.tw-col-span-1")!);
+ const { getByRole } = renderComp();
+ fireEvent.click(getByRole("button"));
+ expect(push).toHaveBeenCalledWith(`/network?page=1&group=${group.id}`);
+ });
+
+ it("navigates to community view when pressing Enter", async () => {
+ const user = userEvent.setup();
+ const { getByRole } = renderComp();
+ const button = getByRole("button");
+
+ button.focus();
+ await user.keyboard("{Enter}");
+
+ expect(push).toHaveBeenCalledWith(`/network?page=1&group=${group.id}`);
+ });
+
+ it("navigates to community view when pressing Space", async () => {
+ const user = userEvent.setup();
+ const { getByRole } = renderComp();
+ const button = getByRole("button");
+
+ button.focus();
+ await user.keyboard(" ");
+
expect(push).toHaveBeenCalledWith(`/network?page=1&group=${group.id}`);
});
diff --git a/components/groups/page/list/card/GroupCard.tsx b/components/groups/page/list/card/GroupCard.tsx
index f0ddd731ad..b12fab8371 100644
--- a/components/groups/page/list/card/GroupCard.tsx
+++ b/components/groups/page/list/card/GroupCard.tsx
@@ -105,29 +105,33 @@ export default function GroupCard({
),
};
- const goToCommunityView = () => {
- if (state !== GroupCardState.IDLE) return;
- router.push(`/network?page=1&group=${group?.id}`);
- };
+ const isIdle = state === GroupCardState.IDLE;
+ const cardLabel =
+ group?.name ?? titlePlaceholder ?? "View community group details";
return (
-
-
-
- {components[state]}
+
+ {isIdle && (
+
+ )}
+
+
+
+ {components[state]}
+
);
diff --git a/components/groups/page/list/card/GroupCardConfigs.tsx b/components/groups/page/list/card/GroupCardConfigs.tsx
index 4db0505683..cf7a4001c8 100644
--- a/components/groups/page/list/card/GroupCardConfigs.tsx
+++ b/components/groups/page/list/card/GroupCardConfigs.tsx
@@ -203,7 +203,7 @@ export default function GroupCardConfigs({
scrollContainer("left");
}}
aria-label="Scroll left"
- className="tw-inline-flex tw-items-center tw-justify-center tw-group tw-absolute tw-top-0.5 tw-z-[5] tw-p-0 tw-h-7 tw-w-7 tw-left-0 tw-bg-iron-900 hover:tw-bg-iron-800 tw-ring-1 tw-ring-inset tw-ring-iron-650 tw-rounded-md tw-border-none tw-transition tw-duration-300 tw-ease-out">
+ className="tw-inline-flex tw-items-center tw-justify-center tw-group tw-absolute tw-top-0.5 tw-z-[20] tw-p-0 tw-h-7 tw-w-7 tw-left-0 tw-bg-iron-900 hover:tw-bg-iron-800 tw-ring-1 tw-ring-inset tw-ring-iron-650 tw-rounded-md tw-border-none tw-transition tw-duration-300 tw-ease-out">
diff --git a/components/groups/page/list/card/GroupCardHeader.tsx b/components/groups/page/list/card/GroupCardHeader.tsx
index 678e8ddeaf..1d80d031a6 100644
--- a/components/groups/page/list/card/GroupCardHeader.tsx
+++ b/components/groups/page/list/card/GroupCardHeader.tsx
@@ -49,7 +49,7 @@ export default function GroupCardHeader({
? `/${group?.created_by.handle ?? userPlaceholder}`
: userPlaceholder ?? ""
}
- className="tw-no-underline hover:tw-underline tw-transition tw-duration-300 tw-ease-out tw-text-iron-50 hover:tw-text-iron-400">
+ className="tw-relative tw-z-20 tw-no-underline hover:tw-underline tw-transition tw-duration-300 tw-ease-out tw-text-iron-50 hover:tw-text-iron-400">
{group?.created_by.handle ?? userPlaceholder}
diff --git a/components/groups/page/list/card/actions/GroupCardEditActions.tsx b/components/groups/page/list/card/actions/GroupCardEditActions.tsx
index cb9a2775be..26aec83495 100644
--- a/components/groups/page/list/card/actions/GroupCardEditActions.tsx
+++ b/components/groups/page/list/card/actions/GroupCardEditActions.tsx
@@ -40,7 +40,7 @@ export default function GroupCardEditActions({
useEffect(() => setEditTitle(getEditTitle()), [isMyFilter]);
return (
-