+
>
)}
{query.status === "success" && isEmpty && (
diff --git a/packages/features/bookings/components/PeopleFilter.tsx b/packages/features/bookings/components/PeopleFilter.tsx
index dca96cdf1b..5435ca38a6 100644
--- a/packages/features/bookings/components/PeopleFilter.tsx
+++ b/packages/features/bookings/components/PeopleFilter.tsx
@@ -54,6 +54,8 @@ export const PeopleFilter = () => {
return (
+ setSearchText(e.target.value)} placeholder={t("search")} />
+
}
@@ -62,7 +64,6 @@ export const PeopleFilter = () => {
label={t("all_users_filter_label")}
/>
- setSearchText(e.target.value)} placeholder={t("search")} />
{filteredMembers?.map((member) => (
= {
onScroll?: (e: Pick, "target">) => void;
tableOverlay?: React.ReactNode;
variant?: "default" | "compact";
- "data-testid"?: string;
+ testId?: string;
+ bodyTestId?: string;
+ hideHeader?: boolean;
children?: React.ReactNode;
identifier?: string;
enableColumnResizing?: boolean;
@@ -37,8 +39,11 @@ export function DataTable({
onRowMouseclick,
onScroll,
children,
+ hideHeader,
identifier: _identifier,
enableColumnResizing,
+ testId,
+ bodyTestId,
...rest
}: DataTableProps & React.ComponentPropsWithoutRef<"div">) {
const pathname = usePathname() as string | null;
@@ -89,7 +94,7 @@ export function DataTable({
gridTemplateAreas: "'header' 'body' 'footer'",
...rest.style,
}}
- data-testid={rest["data-testid"] ?? "data-table"}>
+ data-testid={testId ?? "data-table"}>
{query.status === "error" && (
)}
@@ -159,69 +220,41 @@ export default function Bookings({ status }: { status: (typeof validStatuses)[nu
)}
- {t("today")}
-
-
-
+
+
+ {bookingsToday.map((booking: BookingOutput) => (
+
+ ))}
+
+
-
+
+
-
-
- {query.data.pages.map((page, index) => (
-
-
-
-
-
- ({
...columnSizingVars,
...(Boolean(enableColumnResizing) && { width: table.getTotalSize() }),
}}>
-
- {table.getHeaderGroups().map((headerGroup) => (
-
- {headerGroup.headers.map((header) => {
- const meta = header.column.columnDef.meta;
- return (
-
-
- );
- })}
-
- ))}
-
+
+ );
+ })}
+
+ ))}
+
+ )}
{/* When resizing any column we will render this special memoized version of our table body */}
{table.getState().columnSizingInfo.isResizingColumn ? (
({
table={table}
rowVirtualizer={rowVirtualizer}
rows={rows}
+ testId={bodyTestId}
variant={variant}
isPending={isPending}
onRowMouseclick={onRowMouseclick}
@@ -191,6 +200,7 @@ const MemoizedTableBody = memo(
prev.table.options.data === next.table.options.data &&
prev.rowVirtualizer === next.rowVirtualizer &&
prev.rows === next.rows &&
+ prev.testId === next.testId &&
prev.variant === next.variant &&
prev.isPending === next.isPending &&
prev.onRowMouseclick === next.onRowMouseclick
@@ -200,6 +210,7 @@ type DataTableBodyProps = {
table: ReactTableType;
rowVirtualizer: Virtualizer;
rows: Row[];
+ testId?: string;
variant?: "default" | "compact";
isPending?: boolean;
onRowMouseclick?: (row: Row) => void;
@@ -209,13 +220,17 @@ function DataTableBody({
table,
rowVirtualizer,
rows,
+ testId,
variant,
isPending,
onRowMouseclick,
}: DataTableBodyProps) {
const virtualRows = rowVirtualizer.getVirtualItems();
return (
-
+
{virtualRows && !isPending ? (
virtualRows.map((virtualRow) => {
const row = rows[virtualRow.index] as Row;
@@ -232,11 +247,7 @@ function DataTableBody({
transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll
width: "100%",
}}
- className={classNames(
- onRowMouseclick && "hover:cursor-pointer",
- variant === "compact" && "!border-0",
- "group"
- )}>
+ className={classNames(onRowMouseclick && "hover:cursor-pointer", "group")}>
{row.getVisibleCells().map((cell) => {
const column = table.getColumn(cell.column.id);
const meta = column?.columnDef.meta;
@@ -250,7 +261,7 @@ function DataTableBody({
}}
className={classNames(
"flex shrink-0 items-center overflow-hidden",
- variant === "compact" && "p-1.5",
+ variant === "compact" && "p-0",
meta?.sticky &&
"bg-default group-hover:!bg-muted group-data-[state=selected]:bg-subtle sm:sticky"
)}>
diff --git a/packages/features/data-table/components/DataTableWrapper.tsx b/packages/features/data-table/components/DataTableWrapper.tsx
index 52df35f0e6..f6ff968e4f 100644
--- a/packages/features/data-table/components/DataTableWrapper.tsx
+++ b/packages/features/data-table/components/DataTableWrapper.tsx
@@ -12,25 +12,31 @@ import {
export type DataTableWrapperProps = {
testId?: string;
+ bodyTestId?: string;
table: ReactTableType;
isPending: boolean;
hasNextPage: boolean;
fetchNextPage: () => void;
isFetching: boolean;
+ hideHeader?: boolean;
+ variant?: "default" | "compact";
totalDBRowCount?: number;
ToolbarLeft?: React.ReactNode;
ToolbarRight?: React.ReactNode;
- children: React.ReactNode;
+ children?: React.ReactNode;
};
export function DataTableWrapper({
testId,
+ bodyTestId,
table,
isPending,
hasNextPage,
fetchNextPage,
isFetching,
totalDBRowCount,
+ variant,
+ hideHeader,
ToolbarLeft,
ToolbarRight,
children,
@@ -45,11 +51,14 @@ export function DataTableWrapper({
return (
fetchMoreOnBottomReached(e.target as HTMLDivElement)}>
- {header.isPlaceholder
- ? null
- : flexRender(header.column.columnDef.header, header.getContext())}
- {header.column.getIsSorted() && (
-
+ {table.getHeaderGroups().map((headerGroup) => (
+
+ {headerGroup.headers.map((header) => {
+ const meta = header.column.columnDef.meta;
+ return (
+
+
- {Boolean(enableColumnResizing) && header.column.getCanResize() && (
-
- )}
-
+ {header.isPlaceholder
+ ? null
+ : flexRender(header.column.columnDef.header, header.getContext())}
+ {header.column.getIsSorted() && (
+
+ )}
+
+ {Boolean(enableColumnResizing) && header.column.getCanResize() && (
+
)}
-
diff --git a/packages/features/ee/teams/components/MemberList.tsx b/packages/features/ee/teams/components/MemberList.tsx
index 1380c3ee09..6b01f8bea4 100644
--- a/packages/features/ee/teams/components/MemberList.tsx
+++ b/packages/features/ee/teams/components/MemberList.tsx
@@ -659,7 +659,7 @@ function MemberListContent(props: Props) {
return (
<>
{
const { t } = useLocale();
const session = useSession();
+ const [search, setSearch] = useState("");
const { data: query, pushItemToKey, removeItemByKeyAndValue, removeAllQueryParams } = useFilterQuery();
@@ -72,6 +81,12 @@ export const TeamsFilter = ({
popoverTriggerClassNames={popoverTriggerClassNames}
prefix={`${t("teams")}: `}>
+ setSearch(e.target.value)}
+ />
+
}
@@ -98,6 +113,7 @@ export const TeamsFilter = ({
{teams
?.filter((team) => !team?.isOrganization)
+ .filter((team) => team.name.toLowerCase().includes(search.toLowerCase()))
.map((team) => (