diff --git a/apps/frontend/src/components/launches/add.edit.model.tsx b/apps/frontend/src/components/launches/add.edit.model.tsx index e19c726e..60a76c74 100644 --- a/apps/frontend/src/components/launches/add.edit.model.tsx +++ b/apps/frontend/src/components/launches/add.edit.model.tsx @@ -1,13 +1,7 @@ 'use client'; import React, { - FC, - Fragment, - MouseEventHandler, - useCallback, - useEffect, - useMemo, - useState, + FC, Fragment, MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import dayjs from 'dayjs'; import { Integrations } from '@gitroom/frontend/components/launches/calendar.context'; @@ -52,6 +46,7 @@ import Image from 'next/image'; import { weightedLength } from '@gitroom/helpers/utils/count.length'; import { uniqBy } from 'lodash'; import { Select } from '@gitroom/react/form/select'; +import { useClickOutside } from '@gitroom/frontend/components/layout/click.outside'; function countCharacters(text: string, type: string): number { if (type !== 'x') { @@ -411,6 +406,8 @@ export const AddEditModal: FC<{ }); }, [data, postFor, selectedIntegrations]); + useClickOutside(askClose); + return ( <> {user?.tier?.ai && ( @@ -465,6 +462,22 @@ export const AddEditModal: FC<{ )} + {!selectedIntegrations.length && ( + + + + )} @@ -608,9 +621,6 @@ export const AddEditModal: FC<{ id="add-edit-post-dialog-buttons" className="flex flex-row flex-wrap w-full h-full gap-[10px] justify-end items-center" > -
- + + + + +
{!!selectedIntegrations.length && (
diff --git a/apps/frontend/src/components/launches/helpers/pick.platform.component.tsx b/apps/frontend/src/components/launches/helpers/pick.platform.component.tsx index f8368e69..394c92e3 100644 --- a/apps/frontend/src/components/launches/helpers/pick.platform.component.tsx +++ b/apps/frontend/src/components/launches/helpers/pick.platform.component.tsx @@ -147,13 +147,6 @@ export const PickPlatforms: FC<{ ); const handler = async ({ integrationsId }: { integrationsId: string[] }) => { - console.log( - 'setSelectedIntegration', - integrations, - integrationsId, - dayjs().unix() - ); - const selected = selectedIntegrations.map((p) => p.id); const notToRemove = selected.filter((p) => integrationsId.includes(p)); const toAdd = integrationsId.filter((p) => !selected.includes(p)); @@ -225,7 +218,7 @@ export const PickPlatforms: FC<{ > )} @@ -347,7 +340,7 @@ export const PickPlatforms: FC<{ >
diff --git a/apps/frontend/src/components/layout/click.outside.tsx b/apps/frontend/src/components/layout/click.outside.tsx new file mode 100644 index 00000000..0e713964 --- /dev/null +++ b/apps/frontend/src/components/layout/click.outside.tsx @@ -0,0 +1,23 @@ +import { useEffect } from 'react'; + +export const useClickOutside = (callback: () => Promise) => { + const handleClick = (event: MouseEvent) => { + const selector = document.querySelector('#add-edit-modal'); + if (selector && !selector.contains(event.target as HTMLElement)) { + callback(); + } + }; + useEffect(() => { + document + .querySelector('.mantine-Modal-root') + // @ts-ignore + ?.addEventListener('click', handleClick); + + return () => { + document + .querySelector('.mantine-Modal-root') + // @ts-ignore + ?.removeEventListener('click', handleClick); + }; + }); +};