import Link from 'next/link'
import {
Gallery,
Bullseye,
EmptyState,
EmptyStateIcon,
Card,
CardTitle,
CardActions,
DropdownItem,
CardHeader,
Dropdown,
KebabToggle,
CardBody,
CardHeaderMain,
TextVariants,
Text,
TextContent,
Tooltip,
Button,
Label,
} from '@patternfly/react-core'
import { PlusIcon, FolderIcon, TrashIcon } from '@patternfly/react-icons'
import PropTypes from 'prop-types'
import React, { useReducer, useMemo } from 'react'
import { Project, Status } from '../../shapes'
import { parseAndFormatDateTime } from '../../util/date-time'
import { AUTH_DESCRIPTION_MAP, AUTH_ICON_MAP, AUTH_NAME_MAP } from '../../util/authorizations'
import TableEmptyState from '../util/TableEmptyState'
function ProjectCard({ project, onDelete }) {
const [isKebabOpen, toggleKebab] = useReducer((t) => !t, false)
const { id, role, name, updatedAt } = project
const Icon = AUTH_ICON_MAP[role]
return (
}>{AUTH_NAME_MAP[role]}
}
isOpen={isKebabOpen}
dropdownItems={[
{
onDelete()
toggleKebab()
}}
position="right"
icon={}
>
Delete
,
]}
/>
{name}
Last modified {parseAndFormatDateTime(updatedAt)}
)
}
function ProjectCollection({ status, projects, onDelete, onCreate, isFiltering }) {
const sortedProjects = useMemo(() => {
const res = [...projects]
res.sort((a, b) => (new Date(a.updatedAt) < new Date(b.updatedAt) ? 1 : -1))
return res
}, [projects])
if (sortedProjects.length === 0) {
return (
} onClick={onCreate}>
Create Project
}
/>
)
}
return (
{sortedProjects.map((project) => (
onDelete(project)} />
))}
)
}
ProjectCollection.propTypes = {
status: Status.isRequired,
isFiltering: PropTypes.bool,
projects: PropTypes.arrayOf(Project).isRequired,
onDelete: PropTypes.func,
onCreate: PropTypes.func,
}
export default ProjectCollection