import { SIDE_PANEL_FOCUS_ID } from '@/side-panel/constants/SidePanelFocusId'; import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { useToggleDropdown } from '@/ui/layout/dropdown/hooks/useToggleDropdown'; import { SelectableList } from '@/ui/layout/selectable-list/components/SelectableList'; import { useSelectableList } from '@/ui/layout/selectable-list/hooks/useSelectableList'; import { useHotkeysOnFocusedElement } from '@/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElement'; import { useLingui } from '@lingui/react/macro'; import { type ReactNode, useId } from 'react'; import { Button } from 'twenty-ui/input'; import { getOsControlSymbol } from 'twenty-ui/utilities'; type OptionsDropdownMenuProps = { dropdownId?: string; selectableListId?: string; selectableItemIdArray?: string[]; onOpen?: () => void; children: ReactNode; }; export const OptionsDropdownMenu = ({ dropdownId: dropdownIdFromProps, selectableListId, selectableItemIdArray = [], onOpen, children, }: OptionsDropdownMenuProps) => { const generatedDropdownId = useId(); const dropdownId = dropdownIdFromProps ?? generatedDropdownId; const { t } = useLingui(); const { toggleDropdown } = useToggleDropdown(); const listId = selectableListId ?? dropdownId; const { setSelectedItemId } = useSelectableList(listId); const handleOpen = () => { if (selectableItemIdArray.length > 0) { setSelectedItemId(selectableItemIdArray[0]); } onOpen?.(); }; const hotkeysConfig = { keys: ['ctrl+o', 'meta+o'], callback: () => { toggleDropdown({ dropdownComponentInstanceIdFromProps: dropdownId, }); }, dependencies: [toggleDropdown, dropdownId], }; useHotkeysOnFocusedElement({ ...hotkeysConfig, focusId: SIDE_PANEL_FOCUS_ID, }); useHotkeysOnFocusedElement({ ...hotkeysConfig, focusId: dropdownId, }); return ( } dropdownPlacement="top-end" dropdownOffset={{ y: 8 }} globalHotkeysConfig={{ enableGlobalHotkeysWithModifiers: true, enableGlobalHotkeysConflictingWithKeyboard: false, }} onOpen={handleOpen} dropdownComponents={ {children} } /> ); };