reactjs - React Mui DateRangePicker inkludera kalenderikon
Jag vill implementera en DateRangePicker från Material UI med en kalenderikon, till exempel det ska se ut så här:
Enligt API-dokumentationen borde det fungera med
components={{
OpenPickerIcon: CalendarTodayIcon
}}
men det gör det inte. Se codesandbock.
Jag försökte också genom att lägga till en ikon manuellt i TextField som visar en ikon men inte öppnar PopupMenu när man klickar på ikonen.
InputProps={{
endAdornment: (
<InputAdornment position="end">
<IconButton>
<CalendarTodayIcon />
</IconButton>
</InputAdornment>
)
}}
Någon som har en idé om hur man implementerar det? Jag använder mui 5.1.0 och mui/lab 5.0.0-alpha.50
Svar #1
Jag vet inte om detta fortfarande är ett problem för dig, men jag lyckades göra det korrekt med slotProps:
<DateRangePicker
slotProps={{
textField: {
InputProps: { endAdornment: <CalendarTodayRoundedIcon /> },
},
}}
/>
Svar #2
Jag har inte använt komponenten från biblioteket, men du har rätt enligt dokumentationen
components={{
OpenPickerIcon: CalendarTodayIcon
}}
Borde fungera men det gör det inte.
I din lösning tillhandahåller du ingenting på IconButton onClick-händelsehanteraren, så naturligtvis gör ikonen ingenting när den klickas.
Det du behöver göra är att fokusera på inputfältet varje gång ikonen klickas. Du kan uppnå det genom att använda useRef-hooken i ditt inputfält och sedan kalla på current.focus()-metoden inne i onClick-handlaren för IconButton.
const startInputRef = React.useRef();
<TextField
inputRef={startInputRef}
{...startProps}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<IconButton
onClick={() => {
startInputRef.current.focus();
}}
>
<CalendarTodayIcon />
</IconButton>
</InputAdornment>
)
}}
/>
Se codesandbox för ett fungerande exempel.
Jag tycker fortfarande att detta är en kladdig lösning, så jag skulle föreslå att öppna ett ärende på bibliotekets GitHub-repo för att få instruktioner.