import React, { useCallback, useMemo } from 'react'; import { AccessModeList } from '@ldo/connected-solid'; import { FunctionComponent } from 'react'; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../ui/dropdown-menu'; import { Text } from '../ui/text'; import { Button } from '../ui/button'; import { Checkbox } from '../ui/checkbox'; import { ChevronDown } from '../../lib/icons/ChevronDown'; import { View } from 'react-native'; interface AccessDropdownProps { value: AccessModeList; onChange: (newAccess: AccessModeList) => void; } export const AccessDropdown: FunctionComponent = ({ value, onChange, }) => { const accessDescription = useMemo(() => { if (value.read && value.append && value.write && value.control) { return 'Owner'; } else if (value.read && value.append && value.write && !value.control) { return 'Editor'; } else if (value.read && value.append && !value.write && !value.control) { return 'Contributor'; } else if (value.read && !value.append && !value.write && !value.control) { return 'Viewer'; } else if (!value.read && !value.append && !value.write && !value.control) { return 'No Access'; } else { return 'Custom'; } }, [value.append, value.control, value.read, value.write]); const onChangeAccessMode = useCallback( (field: string, newValue: boolean) => { onChange({ ...value, [field]: newValue, }); }, [onChange, value], ); return ( Permissions {['read', 'append', 'write', 'control'].map((accessModeName) => ( onChangeAccessMode( accessModeName, !value[accessModeName as keyof AccessModeList], ) } > onChangeAccessMode(accessModeName, newVal) } /> {accessModeName.charAt(0).toUpperCase() + accessModeName.slice(1)} ))} ); };