From 9a93c0eea099eed81ce881db0be078e275c6f736 Mon Sep 17 00:00:00 2001 From: Gildas Garcia <1122076+djhi@users.noreply.github.com> Date: Tue, 24 May 2022 12:32:09 +0200 Subject: [PATCH] Simplify Buttons Props --- .../ra-ui-materialui/src/button/Button.tsx | 27 +++++++++++-------- .../src/button/DeleteButton.tsx | 9 +------ .../src/button/DeleteWithConfirmButton.tsx | 8 +----- .../src/button/DeleteWithUndoButton.tsx | 9 +------ 4 files changed, 19 insertions(+), 34 deletions(-) diff --git a/packages/ra-ui-materialui/src/button/Button.tsx b/packages/ra-ui-materialui/src/button/Button.tsx index 2b17ee1c244..eab1ceec2a8 100644 --- a/packages/ra-ui-materialui/src/button/Button.tsx +++ b/packages/ra-ui-materialui/src/button/Button.tsx @@ -19,12 +19,6 @@ import { } from 'ra-core'; import { Path } from 'react-router'; -export type LocationDescriptor = Partial & { - redirect?: boolean; - state?: any; - replace?: boolean; -}; - /** * A generic Button with side icon. Only the icon is displayed on small screens. * @@ -38,7 +32,9 @@ export type LocationDescriptor = Partial & { * * */ -export const Button = (props: ButtonProps) => { +export const Button = ( + props: ButtonProps +) => { const { alignIcon = 'left', children, @@ -102,7 +98,7 @@ export const Button = (props: ButtonProps) => { ); }; -interface Props { +interface Props { alignIcon?: 'left' | 'right'; children?: ReactElement; className?: string; @@ -114,13 +110,16 @@ interface Props { size?: 'small' | 'medium' | 'large'; redirect?: RedirectionSideEffect; variant?: string; - // May be injected by Toolbar - record?: RaRecord; + // May be provided manually + record?: RecordType; resource?: string; mutationMode?: MutationMode; } -export type ButtonProps = Props & MuiButtonProps; +export type ButtonProps = Props< + RecordType +> & + MuiButtonProps; export const sanitizeButtonRestProps = ({ // The next props are injected by Toolbar @@ -186,3 +185,9 @@ const getLinkParams = (locationDescriptor?: LocationDescriptor | string) => { state, }; }; + +export type LocationDescriptor = Partial & { + redirect?: boolean; + state?: any; + replace?: boolean; +}; diff --git a/packages/ra-ui-materialui/src/button/DeleteButton.tsx b/packages/ra-ui-materialui/src/button/DeleteButton.tsx index 2a7fdec0bd2..b456d0ed332 100644 --- a/packages/ra-ui-materialui/src/button/DeleteButton.tsx +++ b/packages/ra-ui-materialui/src/button/DeleteButton.tsx @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import { UseMutationOptions } from 'react-query'; import { RaRecord, - RedirectionSideEffect, MutationMode, DeleteParams, useRecordContext, @@ -82,18 +81,12 @@ export const DeleteButton = ( export interface DeleteButtonProps< RecordType extends RaRecord = any, MutationOptionsError = unknown -> extends Omit, +> extends ButtonProps, SaveContextValue { - className?: string; confirmTitle?: string; confirmContent?: string; icon?: ReactElement; - label?: string; mutationMode?: MutationMode; - record?: RecordType; - redirect?: RedirectionSideEffect; - resource?: string; - // May be injected by Toolbar mutationOptions?: UseMutationOptions< RecordType, MutationOptionsError, diff --git a/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx b/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx index 8e0632f0545..201737999e7 100644 --- a/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx +++ b/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx @@ -10,7 +10,6 @@ import { MutationMode, RaRecord, DeleteParams, - RedirectionSideEffect, useDeleteWithConfirmController, useRecordContext, useResourceContext, @@ -97,17 +96,12 @@ const defaultIcon = ; export interface DeleteWithConfirmButtonProps< RecordType extends RaRecord = any, MutationOptionsError = unknown -> extends Omit { - className?: string; +> extends ButtonProps { confirmTitle?: string; confirmContent?: React.ReactNode; icon?: ReactElement; - label?: string; mutationMode?: MutationMode; onClick?: ReactEventHandler; - record?: RecordType; - redirect?: RedirectionSideEffect; - resource?: string; // May be injected by Toolbar - sanitized in Button translateOptions?: object; mutationOptions?: UseMutationOptions< diff --git a/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx b/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx index 08cc0656cb3..6508296d89e 100644 --- a/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx +++ b/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx @@ -8,7 +8,6 @@ import clsx from 'clsx'; import { UseMutationOptions } from 'react-query'; import { RaRecord, - RedirectionSideEffect, useDeleteWithUndoController, DeleteParams, useRecordContext, @@ -59,15 +58,9 @@ const defaultIcon = ; export interface DeleteWithUndoButtonProps< RecordType extends RaRecord = any, MutationOptionsError = unknown -> extends Omit { - className?: string; +> extends ButtonProps { icon?: ReactElement; - label?: string; onClick?: ReactEventHandler; - record?: RecordType; - redirect?: RedirectionSideEffect; - resource?: string; - // May be injected by Toolbar - sanitized in Button mutationOptions?: UseMutationOptions< RecordType, MutationOptionsError,