feat: implement LabelsPickerField component for selecting multiple labels feat: create NotificationPickerField component for managing notification reminders feat: add PriorityPickerField component for selecting task priority levels feat: implement ProjectPickerField component for selecting projects feat: create RepeatPickerField component for setting up recurring tasks feat: add RepeatPickerPreview component for displaying and selecting repeat options
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { Person } from '@mui/icons-material'
|
|
import BaseOptionPicker from './BaseOptionPicker'
|
|
|
|
const AssigneePickerField = ({
|
|
value = null,
|
|
onChange,
|
|
onClear,
|
|
members = [],
|
|
includeAnyone = true,
|
|
emptyDisplay,
|
|
currentUserId = null,
|
|
}) => {
|
|
const options = [
|
|
...(includeAnyone ? [{ userId: 'anyone', displayName: 'Anyone' }] : []),
|
|
...members.map(member => ({
|
|
userId: member.userId,
|
|
displayName: member.displayName || member.username || 'Unknown',
|
|
})),
|
|
]
|
|
|
|
const displayValue = currentUserId && value === currentUserId ? null : value
|
|
|
|
return (
|
|
<BaseOptionPicker
|
|
items={options}
|
|
value={displayValue}
|
|
onChange={onChange}
|
|
onClear={onClear}
|
|
emptyDisplay={emptyDisplay}
|
|
emptyLabel='Assignee'
|
|
getItemValue={item => item.userId}
|
|
getItemLabel={item => item.displayName}
|
|
renderTriggerIcon={() => <Person sx={{ fontSize: '20px' }} />}
|
|
renderItemStart={() => <Person sx={{ fontSize: '18px' }} />}
|
|
getTriggerText={({ selectedItems, isEmpty }) =>
|
|
isEmpty ? 'Assignee' : selectedItems[0].displayName
|
|
}
|
|
menuMinWidth={220}
|
|
/>
|
|
)
|
|
}
|
|
|
|
export default AssigneePickerField
|