We previously used classnames to exclude elements from the click outside listener. With this PR we can now use `data-click-outside-id` instead of `classNames` to target the elements we want to exclude from the click outside listener. We can also add `data-globally-prevent-click-outside` to a component to globally prevent triggering click outside listeners for other components. This attribute is especially useful for confirmation modals and snackbar items. Fixes #11785: https://github.com/user-attachments/assets/318baa7e-0f82-4e3a-a447-bf981328462d
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
import { AppRouter } from '@/app/components/AppRouter';
|
|
import { ApolloDevLogEffect } from '@/debug/components/ApolloDevLogEffect';
|
|
import { RecoilDebugObserverEffect } from '@/debug/components/RecoilDebugObserver';
|
|
import { AppErrorBoundary } from '@/error-handler/components/AppErrorBoundary';
|
|
import { AppRootErrorFallback } from '@/error-handler/components/AppRootErrorFallback';
|
|
import { ExceptionHandlerProvider } from '@/error-handler/components/ExceptionHandlerProvider';
|
|
import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope';
|
|
import { ClickOutsideListenerContext } from '@/ui/utilities/pointer-event/contexts/ClickOutsideListenerContext';
|
|
import { i18n } from '@lingui/core';
|
|
import { I18nProvider } from '@lingui/react';
|
|
import { HelmetProvider } from 'react-helmet-async';
|
|
import { RecoilRoot } from 'recoil';
|
|
import { IconsProvider } from 'twenty-ui/display';
|
|
import { initialI18nActivate } from '~/utils/i18n/initialI18nActivate';
|
|
|
|
initialI18nActivate();
|
|
|
|
export const App = () => {
|
|
return (
|
|
<RecoilRoot>
|
|
<AppErrorBoundary
|
|
resetOnLocationChange={false}
|
|
FallbackComponent={AppRootErrorFallback}
|
|
>
|
|
<I18nProvider i18n={i18n}>
|
|
<RecoilDebugObserverEffect />
|
|
<ApolloDevLogEffect />
|
|
<SnackBarProviderScope snackBarManagerScopeId="snack-bar-manager">
|
|
<IconsProvider>
|
|
<ExceptionHandlerProvider>
|
|
<HelmetProvider>
|
|
<ClickOutsideListenerContext.Provider
|
|
value={{ excludedClickOutsideId: undefined }}
|
|
>
|
|
<AppRouter />
|
|
</ClickOutsideListenerContext.Provider>
|
|
</HelmetProvider>
|
|
</ExceptionHandlerProvider>
|
|
</IconsProvider>
|
|
</SnackBarProviderScope>
|
|
</I18nProvider>
|
|
</AppErrorBoundary>
|
|
</RecoilRoot>
|
|
);
|
|
};
|