* WIP restored from .git cache * fix exports * sortable row model * feat column visibility component * wip filters with nuqs * pull in unique values from table into filters * correctly assign filters via v/f * inital selection bar refactor * data-table selection bar + optmistic update of delete * dynamic link * migrate member list table to new data-table * total list shows filtered value > db valuie * add filters for attributes * type errors * make content bigger on lg * add mb-6 to teams user datatable to match spacing spec * correctly render multi-badge * fix: masss asignment optimistic UI * fix type errors * remove log * fix toolbar type error * chore: Remove debug artifact * type errors * Update apps/web/public/static/locales/en/common.json * use max-w-fit * chore: Remove unused translation now we don't specify 'mass' in assign * perf: fix: use the onBlur event to prevent focus loss whilst the list is rerendering * Move the data-table exports together in the main barrel, then import * fix exports that were lost in a merge * fix exports that were lost in a merge * fix groupteammapping/availbilityslider * fix overflow problems * add scrollbar-thin class * fix type error * user serverside values for faceted filters * pass filters to serverside * filter serverside * fix team server side filter * add loaded x of y * attributes icon change * correct implementation for text/input attr optimistic * type check fixes * fix platform checks * fix types again * fix types again * fix types again * add use client * add use client * fix-types * fix: Add missing translation in EN * fix e2e tests via testid * fix e2e tests via testid * fix: Member invite popup not popping up * Update copyInviteLink to new-member-button testid * Hopefully fix test ids this time * fix: Use the right buttons on the right pages --------- Co-authored-by: Alex van Andel <me@alexvanandel.com> Co-authored-by: Peer Richelsen <peeroke@gmail.com> Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import type { ColumnDef } from "@tanstack/react-table";
|
|
import { useReactTable, getCoreRowModel } from "@tanstack/react-table";
|
|
import { useRef, useState } from "react";
|
|
|
|
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
|
import { trpc } from "@calcom/trpc/react";
|
|
import { DataTable, DataTableToolbar } from "@calcom/ui";
|
|
|
|
import CreateTeamDialog from "./CreateTeamDialog";
|
|
import GroupNameCell from "./GroupNameCell";
|
|
|
|
interface TeamGroupMapping {
|
|
name: string;
|
|
id: number;
|
|
groupNames: string[];
|
|
directoryId: string;
|
|
}
|
|
|
|
const GroupTeamMappingTable = () => {
|
|
const { t } = useLocale();
|
|
const [createTeamDialogOpen, setCreateTeamDialogOpen] = useState(false);
|
|
|
|
const { data } = trpc.viewer.dsync.teamGroupMapping.get.useQuery();
|
|
|
|
const tableContainerRef = useRef<HTMLDivElement>(null);
|
|
|
|
const columns: ColumnDef<TeamGroupMapping>[] = [
|
|
{
|
|
id: "name",
|
|
header: t("team"),
|
|
cell: ({ row }) => {
|
|
const { name } = row.original;
|
|
|
|
return <p>{name}</p>;
|
|
},
|
|
},
|
|
{
|
|
id: "group",
|
|
header: t("group_name"),
|
|
cell: ({ row }) => {
|
|
const { id, groupNames, directoryId } = row.original;
|
|
|
|
return <GroupNameCell groupNames={groupNames} teamId={id} directoryId={directoryId} />;
|
|
},
|
|
},
|
|
];
|
|
|
|
const table = useReactTable({
|
|
data: data?.teamGroupMapping ?? [],
|
|
columns,
|
|
getCoreRowModel: getCoreRowModel(),
|
|
});
|
|
|
|
return (
|
|
<>
|
|
<DataTable table={table} tableContainerRef={tableContainerRef}>
|
|
<DataTableToolbar.Root>
|
|
<DataTableToolbar.CTA onClick={() => setCreateTeamDialogOpen(true)}>
|
|
Create team
|
|
</DataTableToolbar.CTA>
|
|
</DataTableToolbar.Root>
|
|
</DataTable>
|
|
<CreateTeamDialog open={createTeamDialogOpen} onOpenChange={setCreateTeamDialogOpen} />
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default GroupTeamMappingTable;
|