From c93aabd502c26bf90c5912b9ccd048c0a33610c8 Mon Sep 17 00:00:00 2001 From: Jenny <32821331+jenny-s51@users.noreply.github.com> Date: Tue, 17 Oct 2023 09:54:14 -0400 Subject: [PATCH] Remove deprecated v4 components, add v5 components (#48) * update deprecated components in react console * fix tests --- .../AccessConsoles/AccessConsoles.test.tsx | 4 +- .../AccessConsoles/AccessConsoles.tsx | 72 +++++++----- .../AccessConsoles.test.tsx.snap | 40 +++---- .../components/SpiceConsole/SpiceActions.tsx | 38 +++--- .../src/components/VncConsole/VncActions.tsx | 40 ++++--- .../__snapshots__/VncActions.test.tsx.snap | 111 +++++++----------- 6 files changed, 150 insertions(+), 155 deletions(-) diff --git a/packages/module/src/components/AccessConsoles/AccessConsoles.test.tsx b/packages/module/src/components/AccessConsoles/AccessConsoles.test.tsx index f641b5c..b039fdf 100644 --- a/packages/module/src/components/AccessConsoles/AccessConsoles.test.tsx +++ b/packages/module/src/components/AccessConsoles/AccessConsoles.test.tsx @@ -87,8 +87,8 @@ describe('AccessConsoles', () => { expect(screen.getByText('VNC console text')).toBeInTheDocument(); // Open dropdown and select "Serial console" option - await user.click(screen.getByRole('button', { name: 'Options menu' })); - await user.click(screen.getByText('Serial console', { selector: 'button' })); + await user.click(screen.getByRole('button', { name: 'Console type toggle' })); + await user.click(screen.getByText('Serial console')); // VNC content is no longer visible, and loading contents of the Serial console are visible. expect(screen.getByText(/Loading/)).toBeInTheDocument(); diff --git a/packages/module/src/components/AccessConsoles/AccessConsoles.tsx b/packages/module/src/components/AccessConsoles/AccessConsoles.tsx index c2c7213..58d410a 100644 --- a/packages/module/src/components/AccessConsoles/AccessConsoles.tsx +++ b/packages/module/src/components/AccessConsoles/AccessConsoles.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { css } from '@patternfly/react-styles'; -import { Select, SelectOption, SelectOptionObject, SelectVariant } from '@patternfly/react-core/deprecated'; +import { Select, SelectOption, MenuToggle, MenuToggleElement, SelectList } from '@patternfly/react-core'; import { constants } from '../common/constants'; @@ -54,9 +54,7 @@ export const AccessConsoles: React.FunctionComponent = ({ [DESKTOP_VIEWER_CONSOLE_TYPE]: textDesktopViewerConsole }; const [type, setType] = React.useState( - preselectedType !== NONE_TYPE - ? ({ value: preselectedType, toString: () => typeMap[preselectedType] } as SelectOptionObject) - : null + preselectedType !== NONE_TYPE ? { value: preselectedType, toString: () => typeMap[preselectedType] } : null ); const [isOpen, setIsOpen] = React.useState(false); @@ -69,10 +67,31 @@ export const AccessConsoles: React.FunctionComponent = ({ } }); - const onToggle = (_event: any, isOpen: boolean) => { - setIsOpen(isOpen); + const toggle = (toggleRef: React.Ref) => ( + + {type.toString()} + + ); + + const onToggleClick = () => { + setIsOpen(!isOpen); }; + const onSelect = (_event: React.MouseEvent, value: string | number) => { + setType(value as unknown as React.SetStateAction<{ value: string; toString: () => string }>); + setIsOpen(false); + }; const selectOptions: any[] = []; React.Children.toArray(children as React.ReactElement[]).forEach((child: any) => { @@ -81,33 +100,37 @@ export const AccessConsoles: React.FunctionComponent = ({ textVncConsole } as SelectOptionObject} - /> + value={{ value: VNC_CONSOLE_TYPE, toString: () => textVncConsole }} + > + {textVncConsole} + ); } else if (isChildOfType(child, SERIAL_CONSOLE_TYPE)) { selectOptions.push( textSerialConsole } as SelectOptionObject} - /> + value={{ value: SERIAL_CONSOLE_TYPE, toString: () => textSerialConsole }} + > + {textSerialConsole} + ); } else if (isChildOfType(child, DESKTOP_VIEWER_CONSOLE_TYPE)) { selectOptions.push( textDesktopViewerConsole } as SelectOptionObject} - /> + value={{ value: DESKTOP_VIEWER_CONSOLE_TYPE, toString: () => textDesktopViewerConsole }} + > + {textDesktopViewerConsole} + ); } else { const typeText = getChildTypeName(child); selectOptions.push( - typeText } as SelectOptionObject} - /> + typeText }}> + {typeText} + ); } }); @@ -117,18 +140,13 @@ export const AccessConsoles: React.FunctionComponent = ({
)} diff --git a/packages/module/src/components/AccessConsoles/__snapshots__/AccessConsoles.test.tsx.snap b/packages/module/src/components/AccessConsoles/__snapshots__/AccessConsoles.test.tsx.snap index 472c9c0..66b052d 100644 --- a/packages/module/src/components/AccessConsoles/__snapshots__/AccessConsoles.test.tsx.snap +++ b/packages/module/src/components/AccessConsoles/__snapshots__/AccessConsoles.test.tsx.snap @@ -24,32 +24,22 @@ exports[`AccessConsoles with SerialConsole and VncConsole as children 1`] = `
- + +
diff --git a/packages/module/src/components/SpiceConsole/SpiceActions.tsx b/packages/module/src/components/SpiceConsole/SpiceActions.tsx index df7e73e..f0d0750 100644 --- a/packages/module/src/components/SpiceConsole/SpiceActions.tsx +++ b/packages/module/src/components/SpiceConsole/SpiceActions.tsx @@ -1,9 +1,5 @@ import React from 'react'; -import { - Dropdown as DropdownDeprecated, - DropdownItem as DropdownItemDeprecated, - DropdownToggle as DropdownToggleDeprecated -} from '@patternfly/react-core/deprecated'; +import { Dropdown, DropdownItem, DropdownList, MenuToggle, MenuToggleElement } from '@patternfly/react-core'; export interface SpiceActionsProps extends React.HTMLProps { /** Callback for when Ctrl+Alt+Delete item is selected */ @@ -20,19 +16,31 @@ export const SpiceActions: React.FunctionComponent = ({ }: SpiceActionsProps) => { const [isOpen, setIsOpen] = React.useState(false); + const onToggleClick = () => { + setIsOpen(!isOpen); + }; + + const onSelect = (_event: React.MouseEvent, _value: string | number) => { + setIsOpen(false); + onCtrlAltDel(); + }; + return ( - { - setIsOpen(!isOpen); - onCtrlAltDel(); - }} + onSelect={onSelect} isOpen={isOpen} - toggle={ - setIsOpen(isDropdownOpen)}>{textSendShortcut} - } - dropdownItems={[{textCtrlAltDel}]} - /> + onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)} + toggle={(toggleRef: React.Ref) => ( + + {textSendShortcut} + + )} + > + + {textCtrlAltDel} + + ); }; SpiceActions.displayName = 'SpiceActions'; diff --git a/packages/module/src/components/VncConsole/VncActions.tsx b/packages/module/src/components/VncConsole/VncActions.tsx index 586e329..1971366 100644 --- a/packages/module/src/components/VncConsole/VncActions.tsx +++ b/packages/module/src/components/VncConsole/VncActions.tsx @@ -1,11 +1,7 @@ import React from 'react'; import { css } from '@patternfly/react-styles'; import { Button, ButtonVariant } from '@patternfly/react-core'; -import { - Dropdown as DropdownDeprecated, - DropdownItem as DropdownItemDeprecated, - DropdownToggle as DropdownToggleDeprecated -} from '@patternfly/react-core/deprecated'; +import { Dropdown, DropdownItem, DropdownList, MenuToggle, MenuToggleElement } from '@patternfly/react-core'; import styles from '@patternfly/react-styles/css/components/Consoles/VncConsole'; @@ -29,24 +25,34 @@ export const VncActions: React.FunctionComponent = ({ additionalButtons = [] }) => { const [isOpen, setIsOpen] = React.useState(false); + + const onToggleClick = () => { + setIsOpen(!isOpen); + }; + + const onSelect = (_event: React.MouseEvent, _value: string | number) => { + setIsOpen(false); + }; const toolbar = (
{additionalButtons} - setIsOpen(false)} - toggle={ - setIsOpen(!isOpen)}> - {textSendShortcut} - - } isOpen={isOpen} - dropdownItems={[ - + onSelect={onSelect} + onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)} + toggle={(toggleRef: React.Ref) => ( + + {textSendShortcut} + + )} + > + + {textCtrlAltDel} - - ]} - /> + + + diff --git a/packages/module/src/components/VncConsole/__snapshots__/VncActions.test.tsx.snap b/packages/module/src/components/VncConsole/__snapshots__/VncActions.test.tsx.snap index a2fa55a..8eb5ff3 100644 --- a/packages/module/src/components/VncConsole/__snapshots__/VncActions.test.tsx.snap +++ b/packages/module/src/components/VncConsole/__snapshots__/VncActions.test.tsx.snap @@ -5,30 +5,21 @@ exports[`VncActions VncActions renders correctly component hierarchy 1`] = `
- + + -
+ + -
+ +