"use client"; import type { Table } from "@tanstack/react-table"; import { forwardRef, useEffect } from "react"; import type { ComponentPropsWithoutRef } from "react"; import { useState, type Ref, type ChangeEvent } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import classNames from "@calcom/ui/classNames"; import { Button, type ButtonProps } from "@calcom/ui/components/button"; import { FilterSearchField } from "@calcom/ui/components/form"; import { useColumnFilters, useDataTable } from "@calcom/features/data-table/hooks"; interface DataTableToolbarProps extends ComponentPropsWithoutRef<"div"> { children: React.ReactNode; } const Root = forwardRef(function DataTableToolbar( { children, className }, ref ) { return (
{children}
); }); interface SearchBarProps { className?: string; } function SearchBarComponent({ className }: SearchBarProps, ref: Ref) { const { searchTerm, setSearchTerm } = useDataTable(); const { t } = useLocale(); const [localValue, setLocalValue] = useState(searchTerm); useEffect(() => { setLocalValue(searchTerm); }, [searchTerm]); const handleSearchChange = (event: ChangeEvent) => { const value = event.target.value; setLocalValue(value); setSearchTerm(value); }; return ( ); } const SearchBar = forwardRef(SearchBarComponent) as ( props: SearchBarProps & { ref?: React.Ref } ) => ReturnType; interface ClearFiltersButtonProps { table: Table; } function ClearFiltersButtonComponent( { table }: ClearFiltersButtonProps, ref: React.Ref ) { const { t } = useLocale(); const columnFilters = useColumnFilters(); const isFiltered = columnFilters.length > 0; if (!isFiltered) return null; return ( ); } const ClearFiltersButton = forwardRef(ClearFiltersButtonComponent) as ( props: ClearFiltersButtonProps & { ref?: React.Ref } ) => ReturnType; function CTAComponent( { children, onClick, color = "primary", ...rest }: ButtonProps, ref: React.Ref ) { return ( ); } const CTA = forwardRef(CTAComponent) as ( props: ButtonProps & { ref?: React.Ref } ) => ReturnType; export const DataTableToolbar = { Root, SearchBar, ClearFiltersButton, CTA };