import React, { useCallback, MouseEvent } from "react";
import { Row } from "@tanstack/react-table";
import { Button, ButtonProps } from "@/components/ui/button";
import { useDataset } from "@/components/ui/dataset/dataset-provider";

export type ResourceListBulkActionProps<T extends object> = Omit<ButtonProps, "onClick"> & {
    onClick?: (ids: Row<T>[], event: MouseEvent) => void;
};

export const DatasetAction = <T extends object = object>(props: ResourceListBulkActionProps<T>) => {
    const {
        variant = "secondary",
        onClick,
        ...rest
    } = props;

    const {
        table
    } = useDataset<T>();

    const handleClick = useCallback((event: MouseEvent) => {
        if(onClick) {
            onClick(table.getSelectedRowModel().rows, event);
        }
    }, [table, onClick]);

    return (
        <Button
          {...rest}
          variant={variant}
          onClick={handleClick} />
    );
};
