mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 18:05:11 +03:00
- add new [OrgSelector](https://github.com/supabase/supabase/pull/43238/changes#diff-214b339101a9c06864ea2755ac7246eb4c971ce74c5d3169b1385a28ee1d4227) and [ProjectBranchSelector](https://github.com/supabase/supabase/pull/43238/changes#diff-82d25c128c306b61bea7481026f58f670a229874f23ca3a1a1d78ddeabde21e0) components to the mobile navigation, replacing the previous which took up a lot of horizontal space - org/project/branch dropdowns now open up in the bottom MobileSheetNav for a better mobile ux - desktop nav remains unchanged
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import type { OrgProject } from 'data/projects/org-projects-infinite-query'
|
|
import type { ReactNode } from 'react'
|
|
import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader'
|
|
|
|
import { ProjectCommandItem } from './ProjectCommandItem'
|
|
|
|
export interface EmbeddedProjectListProps {
|
|
projects: OrgProject[]
|
|
selectedRef: string | undefined
|
|
onSelect?: (project: OrgProject) => void
|
|
onClose: () => void
|
|
renderRow?: (project: OrgProject) => ReactNode
|
|
checkPosition?: 'right' | 'left'
|
|
isOptionDisabled?: (project: OrgProject) => boolean
|
|
sentinelRef: (node: Element | null) => void
|
|
hasNextPage: boolean
|
|
}
|
|
|
|
export function EmbeddedProjectList({
|
|
projects,
|
|
selectedRef,
|
|
onSelect,
|
|
onClose,
|
|
renderRow,
|
|
checkPosition,
|
|
isOptionDisabled,
|
|
sentinelRef,
|
|
hasNextPage,
|
|
}: EmbeddedProjectListProps) {
|
|
return (
|
|
<div className="min-h-0 p-1">
|
|
{projects.map((project) => (
|
|
<ProjectCommandItem
|
|
key={project.ref}
|
|
project={project}
|
|
selectedRef={selectedRef}
|
|
onSelect={onSelect}
|
|
onClose={onClose}
|
|
renderRow={renderRow}
|
|
checkPosition={checkPosition}
|
|
isOptionDisabled={isOptionDisabled}
|
|
/>
|
|
))}
|
|
<div ref={sentinelRef} className="h-1 -mt-1" />
|
|
{hasNextPage && (
|
|
<div className="px-2 py-1">
|
|
<ShimmeringLoader className="py-2" />
|
|
</div>
|
|
)}
|
|
</div>
|
|
)
|
|
}
|