import { useRef } from "react"; import { useTranslation } from "react-i18next"; import { ActionIcon, Text } from "@mantine/core"; import { IconPlus, IconGripVertical } from "@tabler/icons-react"; import clsx from "clsx"; import { IBaseProperty, KanbanColumn } from "@/ee/base/types/base.types"; import { choiceColor } from "@/ee/base/components/cells/choice-color"; import { useKanbanColumnDnd } from "@/ee/base/hooks/use-kanban-column-dnd"; import { BaseDropEdgeIndicator } from "@/ee/base/components/grid/base-drop-edge-indicator"; import { KanbanColumnTitle } from "@/ee/base/components/kanban/kanban-column-title"; import { KanbanColumnMenu } from "@/ee/base/components/kanban/kanban-column-menu"; import classes from "@/ee/base/styles/kanban.module.css"; type KanbanColumnHeaderProps = { column: KanbanColumn; pageId: string; property: IBaseProperty | undefined; count?: string; canEdit: boolean; onHide: () => void; onAddCard: () => void; }; export function KanbanColumnHeader({ column, pageId, property, count, canEdit, onHide, onAddCard }: KanbanColumnHeaderProps) { const { t } = useTranslation(); const dotColor = column.color ? choiceColor(column.color).color as string : "light-dark(var(--mantine-color-gray-4), var(--mantine-color-dark-3))"; const headerRef = useRef(null); const handleRef = useRef(null); const { closestEdge, isDragging } = useKanbanColumnDnd({ headerRef, handleRef, columnKey: column.key, pageId, }); return (
{canEdit && (
)}
{count !== undefined && {count}} {canEdit && ( <> {property && ( )} )} {closestEdge && }
); }