diff --git a/apps/web/components/eventtype/EventAdvancedTab.tsx b/apps/web/components/eventtype/EventAdvancedTab.tsx index 8e416b3884..b2ed894e9d 100644 --- a/apps/web/components/eventtype/EventAdvancedTab.tsx +++ b/apps/web/components/eventtype/EventAdvancedTab.tsx @@ -5,7 +5,7 @@ import { useEffect, useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import short from "short-uuid"; import { v5 as uuidv5 } from "uuid"; -import { z } from "zod"; +import type { z } from "zod"; import type { EventNameObjectType } from "@calcom/core/event"; import { getEventName } from "@calcom/core/event"; @@ -17,14 +17,23 @@ import { allowDisablingHostConfirmationEmails, } from "@calcom/features/ee/workflows/lib/allowDisablingStandardEmails"; import { FormBuilder } from "@calcom/features/form-builder/FormBuilder"; -import { EditableSchema } from "@calcom/features/form-builder/FormBuilderFieldsSchema"; +import type { EditableSchema } from "@calcom/features/form-builder/FormBuilderFieldsSchema"; import { BookerLayoutSelector } from "@calcom/features/settings/BookerLayoutSelector"; import { classNames } from "@calcom/lib"; import { APP_NAME, CAL_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { Prisma } from "@calcom/prisma/client"; import { trpc } from "@calcom/trpc/react"; -import { Button, Checkbox, Label, SettingsToggle, showToast, TextField, Tooltip, Alert } from "@calcom/ui"; +import { + Button, + CheckboxField, + Label, + SettingsToggle, + showToast, + TextField, + Tooltip, + Alert, +} from "@calcom/ui"; import { Edit, Copy } from "@calcom/ui/components/icon"; import RequiresConfirmationController from "./RequiresConfirmationController"; @@ -342,7 +351,7 @@ export const EventAdvancedTab = ({ eventType, team }: Pick
- formMethods.setValue("seatsShowAttendees", e.target.checked)} diff --git a/packages/features/bookings/components/EventTypeFilter.tsx b/packages/features/bookings/components/EventTypeFilter.tsx index 4449fc5a51..9b1781573c 100644 --- a/packages/features/bookings/components/EventTypeFilter.tsx +++ b/packages/features/bookings/components/EventTypeFilter.tsx @@ -5,7 +5,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { RouterOutputs } from "@calcom/trpc/react"; import { trpc } from "@calcom/trpc/react"; import { AnimatedPopover } from "@calcom/ui"; -import { Checkbox } from "@calcom/ui"; +import { CheckboxField } from "@calcom/ui"; import { groupBy } from "../groupBy"; import { useFilterQuery } from "../lib/useFilterQuery"; @@ -73,7 +73,7 @@ export const EventTypeFilter = () => {
{groupedEventTypes[teamName].map((eventType) => (
- { if (e.target.checked) { diff --git a/packages/features/ee/organizations/pages/settings/members.tsx b/packages/features/ee/organizations/pages/settings/members.tsx index 43e38ee1ac..36ba6b64c5 100644 --- a/packages/features/ee/organizations/pages/settings/members.tsx +++ b/packages/features/ee/organizations/pages/settings/members.tsx @@ -1,133 +1,17 @@ -import { useRouter } from "next/router"; -import { useState } from "react"; - import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; -import MemberInvitationModal from "@calcom/features/ee/teams/components/MemberInvitationModal"; -import MemberListItem from "@calcom/features/ee/teams/components/MemberListItem"; -import TeamInviteList from "@calcom/features/ee/teams/components/TeamInviteList"; import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout"; +import { UserListTable } from "@calcom/features/users/components/UserTable/UserListTable"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { MembershipRole } from "@calcom/prisma/enums"; -import { trpc } from "@calcom/trpc/react"; -import type { RouterOutputs } from "@calcom/trpc/react"; -import { Button, Meta, TextField, showToast } from "@calcom/ui"; -import { Plus } from "@calcom/ui/components/icon"; - -type Team = RouterOutputs["viewer"]["teams"]["get"]; - -interface MembersListProps { - team: Team | undefined; -} - -const checkIfExist = (comp: string, query: string) => - comp.toLowerCase().replace(/\s+/g, "").includes(query.toLowerCase().replace(/\s+/g, "")); - -function MembersList(props: MembersListProps) { - const { team } = props; - const { t } = useLocale(); - const [query, setQuery] = useState(""); - - const members = team?.members; - const membersList = members - ? members && query === "" - ? members - : members.filter((member) => { - const email = member.email ? checkIfExist(member.email, query) : false; - const username = member.username ? checkIfExist(member.username, query) : false; - const name = member.name ? checkIfExist(member.name, query) : false; - - return email || username || name; - }) - : undefined; - return ( -
- setQuery(e.target.value)} - value={query} - placeholder={`${t("search")}...`} - /> - {membersList?.length && team ? ( -
    - {membersList.map((member) => { - return ; - })} -
- ) : null} -
- ); -} +import { Meta } from "@calcom/ui"; const MembersView = () => { - const { t, i18n } = useLocale(); - const router = useRouter(); - const utils = trpc.useContext(); - const showDialog = router.query.inviteModal === "true"; - const [showMemberInvitationModal, setShowMemberInvitationModal] = useState(showDialog); - const { data: team, isLoading } = trpc.viewer.organizations.listMembers.useQuery(undefined, { - onError: () => { - router.push("/settings"); - }, - }); - - const inviteMemberMutation = trpc.viewer.teams.inviteMember.useMutation({ - async onSuccess(data) { - await utils.viewer.organizations.listMembers.invalidate(); - setShowMemberInvitationModal(false); - if (data.sendEmailInvitation) { - if (Array.isArray(data.usernameOrEmail)) { - showToast( - t("email_invite_team_bulk", { - userCount: data.usernameOrEmail.length, - }), - "success" - ); - } else { - showToast( - t("email_invite_team", { - email: data.usernameOrEmail, - }), - "success" - ); - } - } - }, - onError: (error) => { - showToast(error.message, "error"); - }, - }); - - const isInviteOpen = !team?.membership.accepted; - - const isAdminOrOwner = - team && (team.membership.role === MembershipRole.OWNER || team.membership.role === MembershipRole.ADMIN); + const { t } = useLocale(); return ( - setShowMemberInvitationModal(true)} - data-testid="new-organization-member-button"> - {t("add")} - - ) : ( - <> - ) - } - /> - {!isLoading && ( - <> -
- {team && ( + +
+ {/* {team && ( <> {isInviteOpen && ( { /> )} - )} - -
- {showMemberInvitationModal && team && ( - setShowMemberInvitationModal(false)} - isLoading={inviteMemberMutation.isLoading} - onSubmit={(values) => { - inviteMemberMutation.mutate({ - teamId: team.id, - language: i18n.language, - role: values.role, - usernameOrEmail: values.emailOrUsername, - sendEmailInvitation: values.sendInviteEmail, - isOrg: true, - }); - }} - /> - )} - - )} + )} */} + +
); }; diff --git a/packages/features/ee/payments/components/Payment.tsx b/packages/features/ee/payments/components/Payment.tsx index 510c601bd4..09b66a5504 100644 --- a/packages/features/ee/payments/components/Payment.tsx +++ b/packages/features/ee/payments/components/Payment.tsx @@ -11,7 +11,7 @@ import type { StripePaymentData, StripeSetupIntentData } from "@calcom/app-store import { bookingSuccessRedirect } from "@calcom/lib/bookingSuccessRedirect"; import { CAL_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Checkbox } from "@calcom/ui"; +import { Button, CheckboxField } from "@calcom/ui"; import type { EventType } from ".prisma/client"; @@ -101,7 +101,7 @@ const PaymentForm = (props: Props) => {
{paymentOption === "HOLD" && (
- )} - + diff --git a/packages/features/ee/teams/components/MemberInvitationModal.tsx b/packages/features/ee/teams/components/MemberInvitationModal.tsx index dd388009e2..811c030902 100644 --- a/packages/features/ee/teams/components/MemberInvitationModal.tsx +++ b/packages/features/ee/teams/components/MemberInvitationModal.tsx @@ -13,7 +13,7 @@ import type { RouterOutputs } from "@calcom/trpc"; import { trpc } from "@calcom/trpc"; import { Button, - Checkbox as CheckboxField, + CheckboxField, Dialog, DialogContent, DialogFooter, diff --git a/packages/features/ee/workflows/components/AddActionDialog.tsx b/packages/features/ee/workflows/components/AddActionDialog.tsx index 45a517549e..4562b6fc29 100644 --- a/packages/features/ee/workflows/components/AddActionDialog.tsx +++ b/packages/features/ee/workflows/components/AddActionDialog.tsx @@ -11,7 +11,7 @@ import { WorkflowActions } from "@calcom/prisma/enums"; import { trpc } from "@calcom/trpc/react"; import { Button, - Checkbox, + CheckboxField, Dialog, DialogClose, DialogContent, @@ -239,7 +239,7 @@ export const AddActionDialog = (props: IAddActionDialog) => { name="numberRequired" control={form.control} render={() => ( - form.setValue("numberRequired", e.target.checked)} diff --git a/packages/features/ee/workflows/components/WorkflowStepContainer.tsx b/packages/features/ee/workflows/components/WorkflowStepContainer.tsx index f51ccd6246..dd9516b00f 100644 --- a/packages/features/ee/workflows/components/WorkflowStepContainer.tsx +++ b/packages/features/ee/workflows/components/WorkflowStepContainer.tsx @@ -17,7 +17,7 @@ import type { RouterOutputs } from "@calcom/trpc/react"; import { Badge, Button, - Checkbox, + CheckboxField, Dialog, DialogClose, DialogContent, @@ -657,7 +657,7 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { name={`steps.${step.stepNumber - 1}.numberRequired`} control={form.control} render={() => ( - {data.eventTypes.length > 0 && (
- { @@ -59,7 +59,7 @@ export function BulkEditDefaultConferencingModal(props: { open: boolean; setOpen )} {data.eventTypes.map((eventType) => (
- = { factory: ({ readOnly, label, value, setValue }) => { return (
- { if (e.target.checked) { setValue(true); diff --git a/packages/features/insights/filters/EventTypeList.tsx b/packages/features/insights/filters/EventTypeList.tsx index 221a2762b4..e532d71180 100644 --- a/packages/features/insights/filters/EventTypeList.tsx +++ b/packages/features/insights/filters/EventTypeList.tsx @@ -4,7 +4,7 @@ import { FilterCheckboxFieldsContainer } from "@calcom/features/filters/componen import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { RouterOutputs } from "@calcom/trpc"; import { trpc } from "@calcom/trpc"; -import { AnimatedPopover, Checkbox } from "@calcom/ui"; +import { AnimatedPopover, CheckboxField } from "@calcom/ui"; import { useFilterContext } from "../context/provider"; @@ -49,7 +49,7 @@ export const EventTypeList = memo(() => { {filterOptions?.map((eventType) => (
- { if (e.target.checked) { diff --git a/packages/features/package.json b/packages/features/package.json index 3d83161fc9..5763dbdffb 100644 --- a/packages/features/package.json +++ b/packages/features/package.json @@ -12,11 +12,13 @@ "@calcom/trpc": "*", "@calcom/ui": "*", "@lexical/react": "^0.9.0", + "@tanstack/react-table": "^8.9.3", "dompurify": "^2.4.1", "framer-motion": "^10.12.8", "lexical": "^0.9.0", "react-select": "^5.7.0", "react-sticky-box": "^2.0.4", + "react-virtual": "^2.10.4", "zustand": "^4.3.2" }, "devDependencies": { diff --git a/packages/features/schedules/components/Schedule.tsx b/packages/features/schedules/components/Schedule.tsx index ac705a51cf..463735f083 100644 --- a/packages/features/schedules/components/Schedule.tsx +++ b/packages/features/schedules/components/Schedule.tsx @@ -28,7 +28,7 @@ import { Select, SkeletonText, Switch, - Checkbox, + CheckboxField, } from "@calcom/ui"; import { Copy, Plus, Trash } from "@calcom/ui/components/icon"; @@ -447,7 +447,7 @@ const CopyTimes = ({