From 9c3f4ec0551b50769b92d0ea2d15ad933bc9d295 Mon Sep 17 00:00:00 2001 From: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Date: Tue, 15 Oct 2024 17:40:57 +0300 Subject: [PATCH] feat: allow delete event-type platform atoms (#17065) * feat: allow delete event-type platform atoms * fixup! feat: allow delete event-type platform atoms --- .../eventtypes/components/EventType.tsx | 65 ++++++++++++------- .../eventtypes/components/EventTypeLayout.tsx | 28 ++++---- .../wrappers/EventTypePlatformWrapper.tsx | 56 ++++++++++++++-- .../private/useDeleteEventTypeById.ts | 31 +++++++++ .../examples/base/src/pages/event-types.tsx | 13 +++- 5 files changed, 150 insertions(+), 43 deletions(-) create mode 100644 packages/platform/atoms/hooks/event-types/private/useDeleteEventTypeById.ts diff --git a/packages/features/eventtypes/components/EventType.tsx b/packages/features/eventtypes/components/EventType.tsx index 51ab4f54f42985..c32ab3d0f393f5 100644 --- a/packages/features/eventtypes/components/EventType.tsx +++ b/packages/features/eventtypes/components/EventType.tsx @@ -47,26 +47,40 @@ export type EventTypeSetup = RouterOutputs["viewer"]["eventTypes"]["get"]["event export type EventTypeAssignedUsers = RouterOutputs["viewer"]["eventTypes"]["get"]["eventType"]["children"]; export type EventTypeHosts = RouterOutputs["viewer"]["eventTypes"]["get"]["eventType"]["hosts"]; -export const EventType = ( - props: EventTypeSetupProps & { - allActiveWorkflows?: Workflow[]; - tabMap: TabMap; - onDelete: (id: number) => void; - isDeleting?: boolean; - onConflict: (eventTypes: ChildrenEventType[]) => void; - children?: React.ReactNode; - handleSubmit: (values: FormValues) => void; - formMethods: UseFormReturn; - eventTypeApps?: EventTypeApps; - isUpdating: boolean; - isPlatform?: boolean; - tabName: (typeof tabs)[number]; - tabsNavigation: VerticalTabItemProps[]; - } -) => { - const { formMethods, isPlatform, tabName } = props; - const { eventType, team, currentUserMembership, tabMap, isUpdating } = props; +export type EventTypeComponentProps = EventTypeSetupProps & { + allActiveWorkflows?: Workflow[]; + tabMap: TabMap; + onDelete: (id: number) => void; + isDeleting?: boolean; + onConflict: (eventTypes: ChildrenEventType[]) => void; + children?: React.ReactNode; + handleSubmit: (values: FormValues) => void; + formMethods: UseFormReturn; + eventTypeApps?: EventTypeApps; + isUpdating: boolean; + isPlatform?: boolean; + tabName: (typeof tabs)[number]; + tabsNavigation: VerticalTabItemProps[]; + allowDelete?: boolean; +}; +export const EventType = ({ + formMethods, + isPlatform, + tabName, + eventType, + team, + currentUserMembership, + tabMap, + isUpdating, + isUserOrganizationAdmin, + onDelete, + isDeleting, + tabsNavigation, + handleSubmit, + children, + allowDelete = true, +}: EventTypeComponentProps) => { const [animationParentRef] = useAutoAnimate(); return ( @@ -80,16 +94,17 @@ export const EventType = ( disableBorder={true} currentUserMembership={currentUserMembership} bookerUrl={eventType.bookerUrl} - isUserOrganizationAdmin={props.isUserOrganizationAdmin} - onDelete={props.onDelete} - isDeleting={props.isDeleting} + isUserOrganizationAdmin={isUserOrganizationAdmin} + onDelete={onDelete} + isDeleting={isDeleting} isPlatform={isPlatform} - tabsNavigation={props.tabsNavigation}> -
+ allowDelete={allowDelete} + tabsNavigation={tabsNavigation}> +
{tabMap[tabName]}
- {props.children} + {children} ); }; diff --git a/packages/features/eventtypes/components/EventTypeLayout.tsx b/packages/features/eventtypes/components/EventTypeLayout.tsx index 5c8e0ccaca63a5..4b2a69f05f1231 100644 --- a/packages/features/eventtypes/components/EventTypeLayout.tsx +++ b/packages/features/eventtypes/components/EventTypeLayout.tsx @@ -47,6 +47,7 @@ type Props = { isDeleting?: boolean; isPlatform?: boolean; tabsNavigation: VerticalTabItemProps[]; + allowDelete?: boolean; }; function EventTypeSingleLayout({ @@ -63,6 +64,7 @@ function EventTypeSingleLayout({ isDeleting, isPlatform, tabsNavigation, + allowDelete = true, }: Props) { const { t } = useLocale(); const eventTypesLockedByOrg = eventType.team?.parent?.organizationSettings?.lockEventTypeCreationForUsers; @@ -187,7 +189,7 @@ function EventTypeSingleLayout({ )} )} - {!isChildrenManagedEventType && ( + {!isChildrenManagedEventType && allowDelete && (