import React, { ReactNode, useState } from 'react' import cx from 'classnames' import { ActionMenu, Box, Details, Text, useDetails } from '@primer/react' import { ChevronDownIcon } from '@primer/octicons-react' import { AnchorAlignment } from '@primer/behaviors' import { Fields } from './Fields' interface Props { variant: 'inline' | 'header' items: PickerItem[] onSelect?: (item: PickerItem) => void buttonBorder?: boolean pickerLabel?: string dataTestId: string defaultText: string ariaLabel: string alignment: AnchorAlignment renderItem?: (item: PickerItem) => ReactNode | string } export interface PickerItem { href: string text: string selected: boolean extra?: { [key: string]: any } } export const Picker = ({ variant, items, ariaLabel, pickerLabel, dataTestId, defaultText, onSelect, buttonBorder, alignment, renderItem, }: Props) => { const [open, setOpen] = useState(false) const { getDetailsProps } = useDetails({ closeOnOutsideClick: true }) const selectedOption = items.find((item) => item.selected === true) return variant === 'inline' ? ( {selectedOption?.text || defaultText} ) : ( {pickerLabel && {`${pickerLabel}: `}} {selectedOption?.text || defaultText} ) }