| | |
| | | |
| | | const BulkUpdateButton = ({ resource, label = 'ra.action.update', ...rest }) => { |
| | | const [open, setOpen] = useState(false); |
| | | const [formData, setFormData] = useState({}); |
| | | |
| | | const refresh = useRefresh(); |
| | | const notify = useNotify(); |
| | | const translate = useTranslate(); |
| | | const unselectAll = useUnselectAll(resource); |
| | | const { selectedIds, onUnselectItems } = useListContext(); |
| | | const { selectedIds } = useListContext(); |
| | | |
| | | const handleOpen = () => setOpen(true); |
| | | const handleClose = () => setOpen(false); |
| | | |
| | | const [updateMany, { loading }] = useUpdateMany( |
| | | resource, |
| | | { ids: selectedIds, data: formData }, |
| | | { ids: selectedIds, data: {} }, |
| | | { |
| | | onSuccess: () => { |
| | | setOpen(false); |
| | |
| | | } |
| | | ); |
| | | |
| | | const handleOpen = () => setOpen(true); |
| | | const handleClose = () => setOpen(false); |
| | | |
| | | const handleChange = (e) => { |
| | | const { name, value } = e.target; |
| | | setFormData({ |
| | | ...formData, |
| | | [name]: value, |
| | | }); |
| | | }; |
| | | |
| | | const handleSubmit = () => { |
| | | console.log(formData); |
| | | updateMany(); |
| | | const handleSubmit = (data) => { |
| | | const filteredData = Object.fromEntries( |
| | | Object.entries(data).filter(([key, value]) => value !== null && value !== undefined) |
| | | ); |
| | | delete filteredData['memoWrap']; |
| | | if (Object.keys(filteredData).length > 0) { |
| | | console.log(filteredData); |
| | | updateMany({ |
| | | data: filteredData, |
| | | }); |
| | | } else { |
| | | notify('common.response.fail', { type: 'warning' }); |
| | | } |
| | | }; |
| | | |
| | | return ( |
| | | <> |
| | | <RaButton onClick={handleOpen} startIcon={<UpdateIcon />} label={label} /> |
| | | <Dialog open={open} onClose={handleClose}> |
| | | <DialogTitle>{translate('ra.action.update')}</DialogTitle> |
| | | <DialogContent> |
| | | <Form> |
| | | <Form onSubmit={handleSubmit}> |
| | | <DialogTitle>{translate('ra.action.update')}</DialogTitle> |
| | | <DialogContent> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <ReferenceInput |
| | |
| | | </Stack> |
| | | </Grid> |
| | | </Grid> |
| | | </Form> |
| | | </DialogContent> |
| | | <Divider sx={{ mb: 1 }} /> |
| | | <DialogActions sx={{ mb: 1 }}> |
| | | <RaButton |
| | | onClick={handleClose} |
| | | variant="contained" |
| | | color="inherit" |
| | | size='large' |
| | | label='ra.action.cancel' |
| | | sx={{ mr: 1 }} |
| | | > |
| | | <CloseIcon /> |
| | | </RaButton> |
| | | <RaButton |
| | | onClick={handleSubmit} |
| | | variant="contained" |
| | | color="primary" |
| | | size='large' |
| | | label='ra.action.save' |
| | | disabled={loading} |
| | | sx={{ mr: 1 }} |
| | | > |
| | | <ContentSave /> |
| | | </RaButton> |
| | | </DialogActions> |
| | | </Dialog> |
| | | </DialogContent> |
| | | <Divider sx={{ mb: 1 }} /> |
| | | <DialogActions sx={{ mb: 1 }}> |
| | | <RaButton |
| | | onClick={handleClose} |
| | | variant="contained" |
| | | color="inherit" |
| | | size='large' |
| | | label='ra.action.cancel' |
| | | sx={{ mr: 1 }} |
| | | > |
| | | <CloseIcon /> |
| | | </RaButton> |
| | | <RaButton |
| | | type="submit" |
| | | variant="contained" |
| | | color="primary" |
| | | size='large' |
| | | label='ra.action.save' |
| | | disabled={loading} |
| | | sx={{ mr: 1 }} |
| | | > |
| | | <ContentSave /> |
| | | </RaButton> |
| | | </DialogActions> |
| | | </Form> |
| | | </Dialog > |
| | | </> |
| | | ); |
| | | }; |