import React from "react"; import { FieldSet, GroupedDataProps } from "../../../lib"; import { ButtonLinkProps, ButtonProps } from "../../button"; import { ToolbarProps } from "../../toolbar"; import "./kanban.scss"; export type KanbanProps = GroupedDataProps & { /** If set, items are `draggable` allowing the user to rearrange them (across) columns). */ draggable?: boolean; /** Props to pass to Toolbar. */ toolbarProps?: Partial; /** The kanban "change column" (accessible) label */ labelSelectColumn?: string; /** The kanban "move object position" (accessible) label. */ labelMoveObject?: string; /** Get called when the fieldsets change. */ onFieldsetsChange?: (fieldsets: FieldSet[]) => void; /** Get called when the objectLists change. */ onObjectListsChange?: (objectLists: T[][]) => void; /** Get called when an object is dropped onto a column. */ onObjectChange?: (object: T, sourceColumnIndex: number, targetColumnIndex: number, sourceObjectIndex: number, targetObjectIndex: number) => void; }; export type KanbanDragData = { sourceColumnIndex: number; sourceObjectIndex: number; object: T; }; /** * Kanban Component * * Shows items over various columns. Items can be made `draggable` allowing the * user to rearrange them (across columns). * * @typeParam T - The shape of a single item. */ export declare const Kanban: ({ buttonProps, buttonLinkProps, draggable, fieldset, fieldsets, groupBy, labelSelectColumn, labelMoveObject, objectList, objectLists, renderPreview, title, toolbarProps, urlFields, onClick, onFieldsetsChange, onObjectListsChange, onObjectChange, ...props }: KanbanProps) => React.JSX.Element; export type KanbanSectionProps = Omit, "onClick"> & { buttonLinkProps?: ButtonLinkProps; buttonProps?: ButtonProps; columnIndex: number; draggable?: boolean; dragIndex: [number, number] | null; fieldset: FieldSet; fieldsets: FieldSet[]; fieldsetIndex: number; labelSelectColumn?: string; labelMoveObject?: string; objectList: T[]; renderPreview?: (data: T) => React.ReactNode; urlFields: string[]; onClick?: (event: React.MouseEvent, data: T) => void; onDragOver: React.DragEventHandler; onDrop: React.DragEventHandler; onObjectChange?: (object: T, sourceColumnIndex: number, targetColumnIndex: number, sourceObjectIndex: number, targetObjectIndex: number) => void; }; export declare const KanbanSection: ({ buttonProps, buttonLinkProps, columnIndex, draggable, dragIndex, fieldset, fieldsets, fieldsetIndex, labelSelectColumn, labelMoveObject, objectList, renderPreview, urlFields, onClick, onDragOver, onDrop, onObjectChange, }: KanbanSectionProps) => React.JSX.Element; export type KanbanItemProps = Omit, "onClick"> & { buttonLinkProps?: ButtonLinkProps; buttonProps?: ButtonProps; draggable?: boolean; fieldset: FieldSet; fieldsets: FieldSet[]; fieldsetIndex: number; labelSelectColumn?: string; labelMoveObject?: string; object: T; objectIndex: number; objectList: T[]; renderPreview?: (data: T) => React.ReactNode; urlFields: string[]; onClick?: (event: React.MouseEvent, data: T) => void; onObjectChange?: (object: T, sourceColumnIndex: number, targetColumnIndex: number, sourceObjectIndex: number, targetObjectIndex: number) => void; }; export declare const KanbanItem: ({ buttonProps, buttonLinkProps, draggable, fieldset, fieldsets, fieldsetIndex, labelSelectColumn, labelMoveObject, object, objectIndex, objectList, renderPreview, urlFields, onClick, onObjectChange, }: KanbanItemProps) => React.JSX.Element; export type KanbanButtonProps = { buttonLinkProps?: ButtonLinkProps; buttonProps?: ButtonProps; draggable?: boolean; fieldset: FieldSet; href?: string; object: T & { children?: React.ReactNode; disabled?: boolean; onClick?: (event: React.MouseEvent, data: T) => void; }; renderPreview?: ((data: T) => React.ReactNode) | false; urlFields: string[]; title: string; onClick?: (event: React.MouseEvent, data: T) => void; onDragStart: React.DragEventHandler; }; export declare const KanbanButton: ({ buttonProps, buttonLinkProps, draggable, fieldset, href, title, object, renderPreview, urlFields, onClick, onDragStart, }: KanbanButtonProps) => React.JSX.Element;