forked from marmelab/react-admin
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBulkUpdateButton.tsx
65 lines (58 loc) · 1.83 KB
/
BulkUpdateButton.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import * as React from 'react';
import PropTypes from 'prop-types';
import BulkUpdateWithConfirmButton, {
BulkUpdateWithConfirmButtonProps,
} from './BulkUpdateWithConfirmButton';
import BulkUpdateWithUndoButton, {
BulkUpdateWithUndoButtonProps,
} from './BulkUpdateWithUndoButton';
import { MutationMode } from 'ra-core';
/**
* Updates the selected rows.
*
* To be used inside the <List bulkActionButtons> prop (where it's enabled by default).
*
* @example // basic usage
* import * as React from 'react';
* import { Fragment } from 'react';
* import { BulkUpdateButton, BulkExportButton } from 'react-admin';
*
* const PostBulkActionButtons = ({ basePath }) => (
* <Fragment>
* <BulkExportButton />
* <BulkUpdateButton label="Reset Views" data={{ views: 0 }} basePath={basePath} />
* </Fragment>
* );
*
* export const PostList = (props) => (
* <List {...props} bulkActionButtons={<PostBulkActionButtons />}>
* ...
* </List>
* );
*/
const BulkUpdateButton = (props: BulkUpdateButtonProps) => {
const { mutationMode, ...rest } = props;
return mutationMode === 'undoable' ? (
<BulkUpdateWithUndoButton {...rest} />
) : (
<BulkUpdateWithConfirmButton mutationMode={mutationMode} {...rest} />
);
};
interface Props {
mutationMode?: MutationMode;
}
export type BulkUpdateButtonProps = Props &
(BulkUpdateWithUndoButtonProps | BulkUpdateWithConfirmButtonProps);
BulkUpdateButton.propTypes = {
basePath: PropTypes.string,
label: PropTypes.string,
resource: PropTypes.string,
selectedIds: PropTypes.arrayOf(PropTypes.any),
mutationMode: PropTypes.oneOf(['pessimistic', 'optimistic', 'undoable']),
icon: PropTypes.element,
};
BulkUpdateButton.defaultProps = {
mutationMode: 'undoable',
data: [],
};
export default BulkUpdateButton;