diff --git a/components/OrganizationItem.tsx b/components/OrganizationItem.tsx index 6256f027..c751b144 100644 --- a/components/OrganizationItem.tsx +++ b/components/OrganizationItem.tsx @@ -11,6 +11,7 @@ type OrganizationItemProps = { export const OrganizationItem = ({ organization }: OrganizationItemProps) => { const [isOpen, setIsOpen] = useState(false); const [isClosing, setIsClosing] = useState(false); + const detailsPanelId = `org-details-${organization.id}`; const isContentVisible = isOpen || isClosing; @@ -32,7 +33,9 @@ export const OrganizationItem = ({ organization }: OrganizationItemProps) => {
@@ -46,7 +49,7 @@ export const OrganizationItem = ({ organization }: OrganizationItemProps) => { />
-
+
{isContentVisible && (

{organization.project_ask}

diff --git a/components/OrganizationItemTopBar.tsx b/components/OrganizationItemTopBar.tsx index 2f7f6c66..fa120471 100644 --- a/components/OrganizationItemTopBar.tsx +++ b/components/OrganizationItemTopBar.tsx @@ -2,13 +2,17 @@ import { Organization } from "../types"; import { RepositoryIssueNumberIndicator } from "./RepositoryIssueNumberIndicator"; type OrganizationItemTopBarProps = { + detailsPanelId: string; isOpen: boolean; + onToggleDetails: () => void; organizationName: Organization["name"]; organizationUrl: Organization["url"]; }; export const OrganizationItemTopBar = ({ + detailsPanelId, isOpen, + onToggleDetails, organizationName, organizationUrl }: OrganizationItemTopBarProps) => { @@ -26,7 +30,12 @@ export const OrganizationItemTopBar = ({ - +
); }; \ No newline at end of file diff --git a/components/RepositoryIssueNumberIndicator.tsx b/components/RepositoryIssueNumberIndicator.tsx index faa172eb..f410c98e 100644 --- a/components/RepositoryIssueNumberIndicator.tsx +++ b/components/RepositoryIssueNumberIndicator.tsx @@ -1,12 +1,31 @@ -import { FaChevronDown } from "react-icons/fa"; -import { FaChevronUp } from "react-icons/fa"; +import { FaChevronDown, FaChevronUp } from "react-icons/fa"; type RepositoryIssueNumberIndicatorProps = { + controlsId: string; isIssueOpen: boolean; + label: string; + onToggle: () => void; }; export const RepositoryIssueNumberIndicator = ({ - isIssueOpen + controlsId, + isIssueOpen, + label, + onToggle }: RepositoryIssueNumberIndicatorProps) => { - return {isIssueOpen ? : }; + return ( + + ); }; diff --git a/components/RepositoryItem.tsx b/components/RepositoryItem.tsx index 34c4a0bd..a3a631f6 100644 --- a/components/RepositoryItem.tsx +++ b/components/RepositoryItem.tsx @@ -15,6 +15,7 @@ type RepositoryItemProps = { export const RepositoryItem = ({ repository }: RepositoryItemProps) => { const [isIssueOpen, setIsIssueOpen] = useState(false); const [isIssuesListVisible, setIsIssuesListVisible] = useState(false); + const issuesPanelId = `repo-issues-${repository.id}`; dayjs.extend(relativeTime); const useLastModified = (date: string) => { @@ -41,6 +42,8 @@ export const RepositoryItem = ({ repository }: RepositoryItemProps) => {
setIsIssueOpen(!isIssueOpen)}> setIsIssueOpen(!isIssueOpen)} repositoryHasNewIssues={repository.has_new_issues} repositoryName={repository.name} repositoryNumIssues={repository.issues.length} @@ -60,7 +63,7 @@ export const RepositoryItem = ({ repository }: RepositoryItemProps) => { />
-
+
{isIssuesListVisible && }
diff --git a/components/RepositoryItemTopBar.tsx b/components/RepositoryItemTopBar.tsx index 5b0da0e7..be22d71c 100644 --- a/components/RepositoryItemTopBar.tsx +++ b/components/RepositoryItemTopBar.tsx @@ -3,6 +3,8 @@ import { RepositoryIssueNumberIndicator } from "./RepositoryIssueNumberIndicator type RepositoryItemTopBarProps = { isIssueOpen: boolean; + issuesPanelId: string; + onToggleIssues: () => void; repositoryHasNewIssues: boolean; repositoryName: Repository["name"]; repositoryNumIssues: number; @@ -13,6 +15,8 @@ type RepositoryItemTopBarProps = { export const RepositoryItemTopBar = ({ isIssueOpen, + issuesPanelId, + onToggleIssues, repositoryName, repositoryOwner, repositoryUrl @@ -24,6 +28,7 @@ export const RepositoryItemTopBar = ({ rel="noopener noreferrer" target="_blank" title={`Open ${repositoryOwner}/${repositoryName} on GitHub`} + onClick={(event) => event.stopPropagation()} >

{repositoryOwner}
@@ -32,7 +37,12 @@ export const RepositoryItemTopBar = ({

- +
); }; diff --git a/styles/globals.scss b/styles/globals.scss index 899fee3b..ca51b2b4 100644 --- a/styles/globals.scss +++ b/styles/globals.scss @@ -190,6 +190,26 @@ base, html { } } +.repo-item__toggle { + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + padding: 4px; + margin: -4px; + color: inherit; + font-size: inherit; + background: transparent; + border: 0; + border-radius: 4px; + cursor: pointer; + + &:focus-visible { + outline: 2px solid #096BDE; + outline-offset: 2px; + } +} + .repo-item__desc { color: var(--light-text-secondary, #57606A); font-size: 14px;