From 8bfd5251cc149960bf5bb874143ad675980270e9 Mon Sep 17 00:00:00 2001 From: Eric Olkowski Date: Thu, 28 Mar 2024 09:40:57 -0400 Subject: [PATCH] Updated API to have isSelected control selectable card state --- .../react-core/src/components/Card/Card.tsx | 7 +++++-- .../src/components/Card/CardHeader.tsx | 9 ++++++--- .../src/components/Card/examples/Card.md | 2 +- .../Card/examples/CardClickableSelectable.tsx | 19 +++++++++++-------- .../Card/examples/CardSelectable.tsx | 9 +++------ .../Card/examples/CardSingleSelectable.tsx | 9 +++------ 6 files changed, 29 insertions(+), 26 deletions(-) diff --git a/packages/react-core/src/components/Card/Card.tsx b/packages/react-core/src/components/Card/Card.tsx index 6ada27a1a29..3cf8b760cc5 100644 --- a/packages/react-core/src/components/Card/Card.tsx +++ b/packages/react-core/src/components/Card/Card.tsx @@ -20,8 +20,8 @@ export interface CardProps extends React.HTMLProps, OUIAProps { isSelectableRaised?: boolean; /** Flag indicating that the card is clickable and contains some action that triggers on click. */ isClickable?: boolean; - /** Flag indicating whether a card that is both clickable and selectable is currently selected and has selected styling. - * This will not determine the card's actual selected state. + /** Flag indicating whether a card that is either selectable only or both clickable and selectable is + * currently selected and has selected styling. */ isSelected?: boolean; /** Flag indicating whether a card that is either only clickable or that is both clickable and selectable @@ -62,6 +62,7 @@ interface CardContextProps { isExpanded: boolean; isClickable: boolean; isSelectable: boolean; + isSelected: boolean; isClicked: boolean; isDisabled: boolean; // TODO: Remove hasSelectableInput when deprecated prop is removed @@ -79,6 +80,7 @@ export const CardContext = React.createContext>({ isExpanded: false, isClickable: false, isSelectable: false, + isSelected: false, isClicked: false, isDisabled: false }); @@ -175,6 +177,7 @@ export const Card: React.FunctionComponent = ({ isExpanded, isClickable, isSelectable, + isSelected, isClicked, isDisabled, // TODO: Remove hasSelectableInput when deprecated prop is removed diff --git a/packages/react-core/src/components/Card/CardHeader.tsx b/packages/react-core/src/components/Card/CardHeader.tsx index 8bb7407fc0d..d368bf47109 100644 --- a/packages/react-core/src/components/Card/CardHeader.tsx +++ b/packages/react-core/src/components/Card/CardHeader.tsx @@ -44,7 +44,9 @@ export interface CardHeaderSelectableActionsObject { isExternalLink?: boolean; /** Name for the input element of a clickable or selectable card. */ name?: string; - /** Flag indicating whether the selectable card input is checked */ + /** @deprecated Flag indicating whether the selectable card input is checked. We recommend using + * the isSelected prop on the card component instead. + */ isChecked?: boolean; } @@ -80,7 +82,7 @@ export const CardHeader: React.FunctionComponent = ({ }: CardHeaderProps) => ( {/* TODO: Remove hasSelectableInput when deprecated props are removed */} - {({ cardId, isClickable, isSelectable, isClicked, isDisabled: isCardDisabled, hasSelectableInput }) => { + {({ cardId, isClickable, isSelectable, isSelected, isClicked, isDisabled: isCardDisabled, hasSelectableInput }) => { const cardHeaderToggle = (