Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit 8368773

Browse files
fix: LSDV-3025-12: Fully hide the dropdown component when closing it (#1344)
* fix: LSDV-3025-12: Fully hide the dropdown component when closing it * set timeout to 0 and rollback the timeout in the dropdown component * fix: LSDV-5031: Adding new region after filter it is not filtered (#1352) * fix: lsdv-5031: if filter contains all regions it should be null * filter list applied to new additions --------- Co-authored-by: Travis1282 <[email protected]> --------- Co-authored-by: juliosgarbi <[email protected]> Co-authored-by: Travis Clark <[email protected]> Co-authored-by: Travis1282 <[email protected]>
1 parent f3efabd commit 8368773

File tree

6 files changed

+49
-1
lines changed

6 files changed

+49
-1
lines changed

src/common/Dropdown/DropdownComponent.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface DropdownProps {
2323
enabled?: boolean;
2424
inline?: boolean;
2525
className?: string;
26+
dataTestId?: string;
2627
style?: CSSProperties;
2728
children?: JSX.Element;
2829
onToggle?: (visible: boolean) => void;
@@ -197,6 +198,7 @@ export const Dropdown = forwardRef<DropdownRef, DropdownProps>(({
197198
<Block
198199
ref={dropdown}
199200
name="dropdown"
201+
data-testid={props.dataTestId}
200202
mix={[props.className, visibilityClasses]}
201203
style={compositeStyles}
202204
onClick={(e: MouseEvent) => e.stopPropagation()}

src/common/Dropdown/DropdownTrigger.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ interface DropdownTriggerProps extends DropdownProps {
2828
tag?: string;
2929
dropdown?: RefObject<JSX.Element>;
3030
content?: JSX.Element;
31+
dataTestId?: string;
3132
toggle?: boolean;
3233
closeOnClickOutside?: boolean;
3334
disabled?: boolean;

src/components/Filter/Filter.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const Filter: FC<FilterInterface> = ({
1414
availableFilters,
1515
filterData,
1616
onChange,
17+
animated = true,
1718
}) => {
1819
const [filterList, setFilterList] = useState<FilterListInterface[]>([]);
1920

@@ -106,6 +107,8 @@ export const Filter: FC<FilterInterface> = ({
106107
return (
107108
<Dropdown.Trigger
108109
content={renderFilter}
110+
dataTestId={'dropdown'}
111+
animated={animated}
109112
>
110113
<Button data-cy={'filter-button'} type="text" style={{ padding: 0, whiteSpace: 'nowrap' }}>
111114
<Elem name={'icon'}>

src/components/Filter/FilterInterfaces.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export interface FilterInterface {
77
availableFilters: AvailableFiltersInterface[];
88
onChange: (filter: any) => void;
99
filterData: any;
10+
11+
animated?: boolean;
1012
}
1113

1214
export interface FilterListInterface {

src/components/Filter/__tests__/Filter.test.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,46 @@ describe('Filter', () => {
125125
expect(filteredContent).toStrictEqual([{ labelName: 'Car' }, { labelName: 'AirCar' }]) ;
126126
});
127127

128+
test('Should hide dropdown filter', async () => {
129+
const filter = render(<Filter
130+
onChange={mockOnChange}
131+
filterData={filterData}
132+
animated={false}
133+
availableFilters={[{
134+
label: 'Annotation results',
135+
path: 'labelName',
136+
type: 'String',
137+
},
138+
{
139+
label: 'Confidence score',
140+
path: 'score',
141+
type: 'Number',
142+
}]}
143+
/>);
144+
145+
const FilterButton = await filter.getByText('Filter');
146+
147+
fireEvent.click(FilterButton);
148+
149+
await new Promise((resolve) => setTimeout(resolve, 100));
150+
151+
const dropdown = await filter.getByTestId('dropdown');
152+
153+
expect(dropdown.classList.contains('dm-visible')).toBe(true);
154+
155+
const AddButton = await filter.getByText('Add Filter');
156+
157+
fireEvent.click(AddButton);
158+
159+
fireEvent.click(FilterButton);
160+
161+
await new Promise((resolve) => setTimeout(resolve, 100));
162+
163+
expect(dropdown.classList.contains('dm-before-appear')).toBe(false);
164+
expect(dropdown.classList.contains('dm-visible')).toBe(false);
165+
expect(dropdown.classList.contains('dm-before-disappear')).toBe(false);
166+
});
167+
128168
test('Should show filter length badge', () => {
129169
const filter = render(<Filter
130170
onChange={mockOnChange}

src/utils/transition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ export const aroundTransition = (element: HTMLElement, {
3636

3737
await beforeTransition?.(element);
3838

39-
setTimeout(() => transition?.(element), 30);
39+
setTimeout(() => transition?.(element), 0);
4040
});
4141
};

0 commit comments

Comments
 (0)