Refactor and fixes dropdown bugs (#8807)
Fixes https://github.com/twentyhq/twenty/issues/8788 Fixes https://github.com/twentyhq/twenty/issues/8793 Fixes https://github.com/twentyhq/twenty/issues/8791 Fixes https://github.com/twentyhq/twenty/issues/8890 Fixes https://github.com/twentyhq/twenty/issues/8893 - [x] Also : Icon buttons under dropdown are visible without blur :  - [x] Also : <img width="237" alt="image" src="https://github.com/user-attachments/assets/e4c70936-beff-4481-89cb-0a32a36e0ee2"> - [x] Also : <img width="335" alt="image" src="https://github.com/user-attachments/assets/5be60395-6baf-49eb-8d40-197add049e20"> - [x] Also : <img width="287" alt="image" src="https://github.com/user-attachments/assets/a317561f-7986-4d70-a1c0-deee4f4e268a"> - Button create new without padding - Container is expanding - [x] Also : <img width="303" alt="image" src="https://github.com/user-attachments/assets/09f8a27f-91db-4191-acdc-aaaeedaf6da5"> - [x] Also : <img width="133" alt="image" src="https://github.com/user-attachments/assets/fe17b32e-f7a4-46c4-8040-239eaf8198e8"> Font is cut at bottom ? - [x] Also : <img width="385" alt="image" src="https://github.com/user-attachments/assets/7bab2092-2936-4112-a2ee-d32d6737e304"> The component should flip and not resize in this situation - [x] Also : <img width="244" alt="image" src="https://github.com/user-attachments/assets/5384f49a-71f9-4638-a60c-158cc8c83f81"> - [x] Also : 
This commit is contained in:
@ -179,7 +179,11 @@ export const MultiRecordSelect = ({
|
||||
{objectRecordsIdsMultiSelect?.length > 0 && (
|
||||
<DropdownMenuSeparator />
|
||||
)}
|
||||
{isDefined(onCreate) && <div>{createNewButton}</div>}
|
||||
{isDefined(onCreate) && (
|
||||
<DropdownMenuItemsContainer withoutScrollWrapper>
|
||||
{createNewButton}
|
||||
</DropdownMenuItemsContainer>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</DropdownMenu>
|
||||
|
||||
@ -3,6 +3,7 @@ import { useEffect } from 'react';
|
||||
import { MULTI_OBJECT_RECORD_CLICK_OUTSIDE_LISTENER_ID } from '@/object-record/relation-picker/constants/MultiObjectRecordClickOutsideListenerId';
|
||||
import { RIGHT_DRAWER_CLICK_OUTSIDE_LISTENER_ID } from '@/ui/layout/right-drawer/constants/RightDrawerClickOutsideListener';
|
||||
import { useClickOutsideListener } from '@/ui/utilities/pointer-event/hooks/useClickOutsideListener';
|
||||
import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside';
|
||||
|
||||
export const MultipleObjectRecordOnClickOutsideEffect = ({
|
||||
containerRef,
|
||||
@ -11,10 +12,6 @@ export const MultipleObjectRecordOnClickOutsideEffect = ({
|
||||
containerRef: React.RefObject<HTMLDivElement>;
|
||||
onClickOutside: () => void;
|
||||
}) => {
|
||||
const { useListenClickOutside } = useClickOutsideListener(
|
||||
MULTI_OBJECT_RECORD_CLICK_OUTSIDE_LISTENER_ID,
|
||||
);
|
||||
|
||||
const { toggleClickOutsideListener: toggleRightDrawerClickOustideListener } =
|
||||
useClickOutsideListener(RIGHT_DRAWER_CLICK_OUTSIDE_LISTENER_ID);
|
||||
|
||||
@ -35,6 +32,7 @@ export const MultipleObjectRecordOnClickOutsideEffect = ({
|
||||
|
||||
onClickOutside();
|
||||
},
|
||||
listenerId: MULTI_OBJECT_RECORD_CLICK_OUTSIDE_LISTENER_ID,
|
||||
});
|
||||
|
||||
return <></>;
|
||||
|
||||
@ -41,6 +41,7 @@ export const SingleRecordSelect = ({
|
||||
onCancel();
|
||||
}
|
||||
},
|
||||
listenerId: 'single-record-select',
|
||||
});
|
||||
|
||||
return (
|
||||
|
||||
@ -59,27 +59,6 @@ export const SingleRecordSelectMenuItemsWithSearch = ({
|
||||
/>
|
||||
);
|
||||
|
||||
const results = (
|
||||
<SingleRecordSelectMenuItems
|
||||
recordsToSelect={records.recordsToSelect}
|
||||
loading={records.loading}
|
||||
selectedRecord={
|
||||
records.recordsToSelect.length === 1
|
||||
? records.recordsToSelect[0]
|
||||
: undefined
|
||||
}
|
||||
shouldSelectEmptyOption={selectedRecordIds?.length === 0}
|
||||
hotkeyScope={recordPickerInstanceId}
|
||||
isFiltered={!!recordPickerSearchFilter}
|
||||
{...{
|
||||
EmptyIcon,
|
||||
emptyLabel,
|
||||
onCancel,
|
||||
onRecordSelected,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
{dropdownPlacement?.includes('end') && (
|
||||
@ -88,7 +67,26 @@ export const SingleRecordSelectMenuItemsWithSearch = ({
|
||||
{createNewButton}
|
||||
</DropdownMenuItemsContainer>
|
||||
{records.recordsToSelect.length > 0 && <DropdownMenuSeparator />}
|
||||
{records.recordsToSelect.length > 0 && results}
|
||||
{records.recordsToSelect.length > 0 && (
|
||||
<SingleRecordSelectMenuItems
|
||||
recordsToSelect={records.recordsToSelect}
|
||||
loading={records.loading}
|
||||
selectedRecord={
|
||||
records.recordsToSelect.length === 1
|
||||
? records.recordsToSelect[0]
|
||||
: undefined
|
||||
}
|
||||
shouldSelectEmptyOption={selectedRecordIds?.length === 0}
|
||||
hotkeyScope={recordPickerInstanceId}
|
||||
isFiltered={!!recordPickerSearchFilter}
|
||||
{...{
|
||||
EmptyIcon,
|
||||
emptyLabel,
|
||||
onCancel,
|
||||
onRecordSelected,
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<DropdownMenuSeparator />
|
||||
</>
|
||||
)}
|
||||
@ -97,7 +95,26 @@ export const SingleRecordSelectMenuItemsWithSearch = ({
|
||||
isUndefinedOrNull(dropdownPlacement)) && (
|
||||
<>
|
||||
<DropdownMenuSeparator />
|
||||
{records.recordsToSelect.length > 0 && results}
|
||||
{records.recordsToSelect.length > 0 && (
|
||||
<SingleRecordSelectMenuItems
|
||||
recordsToSelect={records.recordsToSelect}
|
||||
loading={records.loading}
|
||||
selectedRecord={
|
||||
records.recordsToSelect.length === 1
|
||||
? records.recordsToSelect[0]
|
||||
: undefined
|
||||
}
|
||||
shouldSelectEmptyOption={selectedRecordIds?.length === 0}
|
||||
hotkeyScope={recordPickerInstanceId}
|
||||
isFiltered={!!recordPickerSearchFilter}
|
||||
{...{
|
||||
EmptyIcon,
|
||||
emptyLabel,
|
||||
onCancel,
|
||||
onRecordSelected,
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{records.recordsToSelect.length > 0 && isDefined(onCreate) && (
|
||||
<DropdownMenuSeparator />
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user