diff --git a/docs/List.md b/docs/List.md index f699bded81b..80a3687c60c 100644 --- a/docs/List.md +++ b/docs/List.md @@ -86,46 +86,86 @@ The title can be either a string, or an element of your own. You can replace the list of default actions by your own element using the `actions` prop: ```jsx -import Button from '@material-ui/core/Button'; -import { CreateButton, ExportButton, RefreshButton } from 'react-admin'; -import Toolbar from '@material-ui/core/Toolbar'; +import React, { cloneElement, useMemo } from 'react'; +import PropTypes from 'prop-types'; +import { + TopToolbar, CreateButton, ExportButton, Button, sanitizeListRestProps, +} from 'react-admin'; +import IconEvent from '@material-ui/icons/Event'; -const PostActions = ({ - basePath, +const ListActions = ({ currentSort, + className, + resource, + filters, displayedFilters, exporter, - filters, filterValues, - onUnselectItems, - resource, + permanentFilter, + hasCreate, + basePath, selectedIds, + onUnselectItems, showFilter, - total -}) => ( - - {filters && React.cloneElement(filters, { - resource, - showFilter, - displayedFilters, - filterValues, - context: 'button', - })} - - - {/* Add your custom actions */} - - + maxResults, + total, + ...rest +}) => useMemo( + () => ( + + {filters && cloneElement(filters, { + resource, + showFilter, + displayedFilters, + filterValues, + context: 'button', + })} + {hasCreate && } + {exporter !== false && ( + + )} + {/* Add your custom actions */} + + + ), + [resource, displayedFilters, filterValues, selectedIds, filters, total], ); +ListActions.propTypes = { + basePath: PropTypes.string, + className: PropTypes.string, + currentSort: PropTypes.shape({}), + displayedFilters: PropTypes.shape({}), + exporter: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]), + filters: PropTypes.element, + filterValues: PropTypes.shape({}), + hasCreate: PropTypes.bool, + resource: PropTypes.string, + onUnselectItems: PropTypes.func.isRequired, + selectedIds: PropTypes.arrayOf(PropTypes.any), + showFilter: PropTypes.func, + total: PropTypes.number, +}; + +ListActions.defaultProps = { + selectedIds: [], + onUnselectItems: () => null, +}; + export const PostList = (props) => ( - }> + }> ... );