diff --git a/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownContent.tsx b/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownContent.tsx
index b31f9421b..0cd002eee 100644
--- a/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownContent.tsx
+++ b/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownContent.tsx
@@ -14,6 +14,7 @@ import { FilterDropdownNumberSearchInput } from './FilterDropdownNumberSearchInp
import { FilterDropdownOperandButton } from './FilterDropdownOperandButton';
import { FilterDropdownOperandSelect } from './FilterDropdownOperandSelect';
import { FilterDropdownTextSearchInput } from './FilterDropdownTextSearchInput';
+import { MultipleFiltersDropdownFilterOnFilterChangedEffect } from './MultipleFiltersDropdownFilterOnFilterChangedEffect';
export const MultipleFiltersDropdownContent = () => {
const { ViewBarRecoilScopeContext } = useViewBarContext();
@@ -62,6 +63,11 @@ export const MultipleFiltersDropdownContent = () => {
>
)
)}
+
>
);
};
diff --git a/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownFilterOnFilterChangedEffect.tsx b/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownFilterOnFilterChangedEffect.tsx
new file mode 100644
index 000000000..cd68c503c
--- /dev/null
+++ b/front/src/modules/ui/data/view-bar/components/MultipleFiltersDropdownFilterOnFilterChangedEffect.tsx
@@ -0,0 +1,23 @@
+import { useEffect } from 'react';
+
+import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown';
+
+export const MultipleFiltersDropdownFilterOnFilterChangedEffect = ({
+ filterDefinitionUsedInDropdownType,
+}: {
+ filterDefinitionUsedInDropdownType: string | undefined;
+}) => {
+ const { setDropdownWidth } = useDropdown();
+
+ useEffect(() => {
+ switch (filterDefinitionUsedInDropdownType) {
+ case 'date':
+ setDropdownWidth(280);
+ break;
+ default:
+ setDropdownWidth(160);
+ }
+ }, [filterDefinitionUsedInDropdownType, setDropdownWidth]);
+
+ return null;
+};
diff --git a/front/src/modules/ui/layout/dropdown/components/Dropdown.tsx b/front/src/modules/ui/layout/dropdown/components/Dropdown.tsx
index 46378b850..9bd883498 100644
--- a/front/src/modules/ui/layout/dropdown/components/Dropdown.tsx
+++ b/front/src/modules/ui/layout/dropdown/components/Dropdown.tsx
@@ -1,6 +1,12 @@
import { useRef } from 'react';
import { Keys } from 'react-hotkeys-hook';
-import { flip, offset, Placement, useFloating } from '@floating-ui/react';
+import {
+ autoUpdate,
+ flip,
+ offset,
+ Placement,
+ useFloating,
+} from '@floating-ui/react';
import { Key } from 'ts-key-enum';
import { HotkeyEffect } from '@/ui/utilities/hotkey/components/HotkeyEffect';
@@ -12,7 +18,7 @@ import { useDropdown } from '../hooks/useDropdown';
import { useInternalHotkeyScopeManagement } from '../hooks/useInternalHotkeyScopeManagement';
import { DropdownMenu } from './DropdownMenu';
-import { DropdownToggleEffect } from './DropdownToggleEffect';
+import { DropdownOnToggleEffect } from './DropdownOnToggleEffect';
type DropdownProps = {
clickableComponent?: JSX.Element | JSX.Element[];
@@ -33,7 +39,7 @@ type DropdownProps = {
export const Dropdown = ({
clickableComponent,
dropdownComponents,
- dropdownMenuWidth = 160,
+ dropdownMenuWidth,
hotkey,
dropdownHotkeyScope,
dropdownPlacement = 'bottom-end',
@@ -44,8 +50,10 @@ export const Dropdown = ({
}: DropdownProps) => {
const containerRef = useRef(null);
- const { isDropdownOpen, toggleDropdown, closeDropdown } = useDropdown();
+ const { isDropdownOpen, toggleDropdown, closeDropdown, dropdownWidth } =
+ useDropdown();
+ const dropdownWidthState = dropdownMenuWidth ?? dropdownWidth;
const offsetMiddlewares = [];
if (dropdownOffset.x) {
offsetMiddlewares.push(offset({ crossAxis: dropdownOffset.x }));
@@ -58,6 +66,7 @@ export const Dropdown = ({
const { refs, floatingStyles } = useFloating({
placement: dropdownPlacement,
middleware: [flip(), ...offsetMiddlewares],
+ whileElementsMounted: autoUpdate,
});
const handleHotkeyTriggered = () => {
@@ -103,7 +112,7 @@ export const Dropdown = ({
)}
{isDropdownOpen && (
)}
-
+
);
};
diff --git a/front/src/modules/ui/layout/dropdown/components/DropdownToggleEffect.tsx b/front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx
similarity index 91%
rename from front/src/modules/ui/layout/dropdown/components/DropdownToggleEffect.tsx
rename to front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx
index ecd676980..9ffb63e3a 100644
--- a/front/src/modules/ui/layout/dropdown/components/DropdownToggleEffect.tsx
+++ b/front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown';
-export const DropdownToggleEffect = ({
+export const DropdownOnToggleEffect = ({
onDropdownClose,
onDropdownOpen,
}: {
diff --git a/front/src/modules/ui/layout/dropdown/hooks/useDropdown.ts b/front/src/modules/ui/layout/dropdown/hooks/useDropdown.ts
index 1e38288a0..7ddf10bc1 100644
--- a/front/src/modules/ui/layout/dropdown/hooks/useDropdown.ts
+++ b/front/src/modules/ui/layout/dropdown/hooks/useDropdown.ts
@@ -25,6 +25,8 @@ export const useDropdown = (props?: UseDropdownProps) => {
setDropdownHotkeyScope,
isDropdownOpen,
setIsDropdownOpen,
+ dropdownWidth,
+ setDropdownWidth,
} = useDropdownStates({
scopeId,
});
@@ -61,5 +63,7 @@ export const useDropdown = (props?: UseDropdownProps) => {
scopeId,
dropdownHotkeyScope,
setDropdownHotkeyScope,
+ dropdownWidth,
+ setDropdownWidth,
};
};
diff --git a/front/src/modules/ui/layout/dropdown/hooks/useDropdownStates.ts b/front/src/modules/ui/layout/dropdown/hooks/useDropdownStates.ts
index d60ac3c55..461ca1b3f 100644
--- a/front/src/modules/ui/layout/dropdown/hooks/useDropdownStates.ts
+++ b/front/src/modules/ui/layout/dropdown/hooks/useDropdownStates.ts
@@ -1,6 +1,7 @@
import { useRecoilScopedStateV2 } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedStateV2';
import { dropdownHotkeyScopeScopedState } from '../states/dropdownHotkeyScopeScopedState';
+import { dropdownWidthScopedState } from '../states/dropdownWidthScopedState';
import { isDropdownOpenScopedState } from '../states/isDropdownOpenScopedState';
export const useDropdownStates = ({ scopeId }: { scopeId: string }) => {
@@ -14,10 +15,17 @@ export const useDropdownStates = ({ scopeId }: { scopeId: string }) => {
scopeId,
);
+ const [dropdownWidth, setDropdownWidth] = useRecoilScopedStateV2(
+ dropdownWidthScopedState,
+ scopeId,
+ );
+
return {
isDropdownOpen,
setIsDropdownOpen,
dropdownHotkeyScope,
setDropdownHotkeyScope,
+ dropdownWidth,
+ setDropdownWidth,
};
};
diff --git a/front/src/modules/ui/layout/dropdown/states/dropdownWidthScopedState.ts b/front/src/modules/ui/layout/dropdown/states/dropdownWidthScopedState.ts
new file mode 100644
index 000000000..b620687c6
--- /dev/null
+++ b/front/src/modules/ui/layout/dropdown/states/dropdownWidthScopedState.ts
@@ -0,0 +1,6 @@
+import { createScopedState } from '@/ui/utilities/recoil-scope/utils/createScopedState';
+
+export const dropdownWidthScopedState = createScopedState({
+ key: 'dropdownWidthScopedState',
+ defaultValue: 160,
+});