Files
react-test/docs/data/material/components/avatars/UploadAvatars.js
how2ice 005cf56baf
Some checks failed
No response / noResponse (push) Has been cancelled
CI / Continuous releases (push) Has been cancelled
CI / test-dev (macos-latest) (push) Has been cancelled
CI / test-dev (ubuntu-latest) (push) Has been cancelled
CI / test-dev (windows-latest) (push) Has been cancelled
Maintenance / main (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
init project
2025-12-12 14:26:25 +09:00

54 lines
1.3 KiB
JavaScript

import * as React from 'react';
import Avatar from '@mui/material/Avatar';
import ButtonBase from '@mui/material/ButtonBase';
export default function UploadAvatars() {
const [avatarSrc, setAvatarSrc] = React.useState(undefined);
const handleAvatarChange = (event) => {
const file = event.target.files?.[0];
if (file) {
// Read the file as a data URL
const reader = new FileReader();
reader.onload = () => {
setAvatarSrc(reader.result);
};
reader.readAsDataURL(file);
}
};
return (
<ButtonBase
component="label"
role={undefined}
tabIndex={-1} // prevent label from tab focus
aria-label="Avatar image"
sx={{
borderRadius: '40px',
'&:has(:focus-visible)': {
outline: '2px solid',
outlineOffset: '2px',
},
}}
>
<Avatar alt="Upload new avatar" src={avatarSrc} />
<input
type="file"
accept="image/*"
style={{
border: 0,
clip: 'rect(0 0 0 0)',
height: '1px',
margin: '-1px',
overflow: 'hidden',
padding: 0,
position: 'absolute',
whiteSpace: 'nowrap',
width: '1px',
}}
onChange={handleAvatarChange}
/>
</ButtonBase>
);
}