From 1ad13adb62a505d1f7ab7ab676af653b2500a8fb Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 27 Mar 2024 09:56:30 -0400 Subject: [PATCH 1/5] feat(MenuToggle/Select): add status --- .../src/components/MenuToggle/MenuToggle.tsx | 29 +++++++++ .../MenuToggle/__tests__/MenuToggle.test.tsx | 15 +++++ .../MenuToggle/examples/MenuToggle.md | 39 ++++++++---- .../MenuToggle/examples/MenuToggleStatus.tsx | 14 +++++ .../src/components/Select/examples/Select.md | 37 +++++++---- .../Select/examples/SelectValidated.tsx | 63 +++++++++++++++++++ 6 files changed, 173 insertions(+), 24 deletions(-) create mode 100644 packages/react-core/src/components/MenuToggle/examples/MenuToggleStatus.tsx create mode 100644 packages/react-core/src/components/Select/examples/SelectValidated.tsx diff --git a/packages/react-core/src/components/MenuToggle/MenuToggle.tsx b/packages/react-core/src/components/MenuToggle/MenuToggle.tsx index c330cfee1e3..b874f43c9d9 100644 --- a/packages/react-core/src/components/MenuToggle/MenuToggle.tsx +++ b/packages/react-core/src/components/MenuToggle/MenuToggle.tsx @@ -3,6 +3,9 @@ import styles from '@patternfly/react-styles/css/components/MenuToggle/menu-togg import { css } from '@patternfly/react-styles'; import CaretDownIcon from '@patternfly/react-icons/dist/esm/icons/caret-down-icon'; import { BadgeProps } from '../Badge'; +import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon'; +import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon'; +import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon'; export type MenuToggleElement = HTMLDivElement | HTMLButtonElement; @@ -37,6 +40,10 @@ export interface MenuToggleProps splitButtonOptions?: SplitButtonOptions; /** Variant styles of the menu toggle */ variant?: 'default' | 'plain' | 'primary' | 'plainText' | 'secondary' | 'typeahead'; + /** Status styles of the menu toggle */ + status?: 'success' | 'warning' | 'danger'; + /** Overrides the status icon */ + statusIcon?: React.ReactNode; /** Optional icon or image rendered inside the toggle, before the children content. It is * recommended to wrap most basic icons in our icon component. */ @@ -69,6 +76,8 @@ class MenuToggleBase extends React.Component { isFullWidth, splitButtonOptions, variant, + status, + statusIcon, innerRef, onClick, 'aria-label': ariaLabel, @@ -77,8 +86,25 @@ class MenuToggleBase extends React.Component { const isPlain = variant === 'plain'; const isPlainText = variant === 'plainText'; const isTypeahead = variant === 'typeahead'; + + let _statusIcon = statusIcon; + if (!statusIcon) { + switch (status) { + case 'success': + _statusIcon =