Skip to content

Commit

Permalink
[0.11.x] Migration Patternfly 4 to 5: Fixes Hyperfoil#714
Browse files Browse the repository at this point in the history
  • Loading branch information
willr3 authored and johnaohara committed Jan 30, 2024
1 parent 686ddc3 commit 397b0d7
Show file tree
Hide file tree
Showing 84 changed files with 1,439 additions and 1,133 deletions.
999 changes: 457 additions & 542 deletions horreum-web/package-lock.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions horreum-web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"type": "module",
"dependencies": {
"@monaco-editor/react": "4.6.0",
"@patternfly/patternfly": "4.224.4",
"@patternfly/react-core": "4.277.0",
"@patternfly/react-table": "4.113.5",
"@patternfly/patternfly": "5.1.0",
"@patternfly/react-core": "5.1.1",
"@patternfly/react-table": "5.1.1",
"@types/history": "4.7.11",
"@types/jsonpath": "0.2.4",
"@types/luxon": "3.2.0",
Expand Down
19 changes: 16 additions & 3 deletions horreum-web/src/About.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
import { useState, useEffect } from "react"
import { Bullseye, Button, Dropdown, DropdownItem, DropdownToggle, Modal, Spinner } from "@patternfly/react-core"
import {
Bullseye,
Button,
Modal,
Spinner
} from '@patternfly/react-core';
import {
Dropdown,
DropdownItem,
DropdownToggle
} from '@patternfly/react-core/deprecated';
import { QuestionCircleIcon } from "@patternfly/react-icons"
import { Table, TableBody } from "@patternfly/react-table"
import {
Table,
TableBody
} from '@patternfly/react-table/deprecated';

import { configApi } from "./api"
import { formatDateTime } from "./utils"
Expand Down Expand Up @@ -36,7 +49,7 @@ export default function About() {
menuAppendTo="parent"
onSelect={() => setDropdownOpen(false)}
toggle={
<DropdownToggle toggleIndicator={null} onToggle={setDropdownOpen} id="toggle-icon-only">
<DropdownToggle toggleIndicator={null} onToggle={(_event, val) => setDropdownOpen(val)} id="toggle-icon-only">
<QuestionCircleIcon style={{ fill: "#ffffff" }} />
</DropdownToggle>
}
Expand Down
11 changes: 10 additions & 1 deletion horreum-web/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
import "@patternfly/patternfly/patternfly.css" //have to use this import to customize scss-variables.scss

import {Nav, NavItem, NavList, Page, PageHeader, PageHeaderTools} from "@patternfly/react-core"
import {
Nav,
NavItem,
NavList,
Page
} from '@patternfly/react-core';
import {
PageHeader,
PageHeaderTools
} from '@patternfly/react-core/deprecated';

import {NavLink, Route, Routes} from "react-router-dom"
import {Router} from "react-router"
Expand Down
8 changes: 4 additions & 4 deletions horreum-web/src/components/AccessIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,25 @@ export default function AccessIcon({ access }: { access: Access }) {
let explanation
switch (access) {
case Access.Public: {
color = "--pf-global--success-color--200"
color = "--pf-v5-global--success-color--200"
text = "Public"
explanation = "Anyone can view this."
break
}
case Access.Protected: {
color = "--pf-global--warning-color--100"
color = "--pf-v5-global--warning-color--100"
text = "Protected"
explanation = "Only authenticated (logged in) users can view this."
break
}
case Access.Private: {
color = "--pf-global--danger-color--100"
color = "--pf-v5-global--danger-color--100"
text = "Private"
explanation = "Only users from the owning team can view this."
break
}
default: {
color = "--pf-global--icon--Color--light"
color = "--pf-v5-global--icon--Color--light"
text = "Unknown"
explanation = "Unknown"
break
Expand Down
8 changes: 4 additions & 4 deletions horreum-web/src/components/AccessIconOnly.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@ export default function AccessIcon({ access }: { access: Access }) {
let explanation
switch (access) {
case Access.Public: {
color = "--pf-global--success-color--200"
color = "--pf-v5-global--success-color--200"
explanation = "Anyone can view this."
break
}
case Access.Protected: {
color = "--pf-global--warning-color--100"
color = "--pf-v5-global--warning-color--100"
explanation = "Only authenticated (logged in) users can view this."
break
}
case Access.Private: {
color = "--pf-global--danger-color--100"
color = "--pf-v5-global--danger-color--100"
explanation = "Only users from the owning team can view this."
break
}
default: {
color = "--pf-global--icon--Color--light"
color = "--pf-v5-global--icon--Color--light"
explanation = "Unknown"
break
}
Expand Down
6 changes: 5 additions & 1 deletion horreum-web/src/components/ActionMenu.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { useState, useEffect, ReactElement, ReactNode } from "react"

import { Dropdown, DropdownItem, KebabToggle } from "@patternfly/react-core"
import {
Dropdown,
DropdownItem,
KebabToggle
} from '@patternfly/react-core/deprecated';

import { useTester } from "../auth"
import { Access } from "../api"
Expand Down
2 changes: 1 addition & 1 deletion horreum-web/src/components/ButtonLink.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ export default function ButtonLink(
props: NavLinkProps & { variant?: "primary" | "secondary" | "tertiary" | "control"; isDisabled?: boolean }
) {
const variant = props.variant || "primary"
return <NavLink className={"pf-c-button pf-m-" + variant + (props.isDisabled ? " pf-m-disabled" : "")} {...props} />
return <NavLink className={"pf-v5-c-button pf-m-" + variant + (props.isDisabled ? " pf-m-disabled" : "")} {...props} />
}
14 changes: 11 additions & 3 deletions horreum-web/src/components/ConditionComponent.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { Alert, FormGroup, Switch } from "@patternfly/react-core"
import { Alert, FormGroup, Switch,
HelperText,
HelperTextItem,
FormHelperText } from "@patternfly/react-core"
import { ConditionComponent as ConditionComponentDef } from "../api"
import LogSlider from "./LogSlider"
import EnumSelect from "./EnumSelect"
Expand Down Expand Up @@ -58,7 +61,7 @@ export default function ConditionComponent({ value, onChange, properties, isTest
labelOff="OFF"
isDisabled={!isTester}
isChecked={value}
onChange={checked => onChange(checked)}
onChange={(_event, checked) => onChange(checked)}
/>
)
break
Expand All @@ -67,7 +70,12 @@ export default function ConditionComponent({ value, onChange, properties, isTest
break
}
return (
<FormGroup fieldId={name} key={name} label={title} helperText={description}>
<FormGroup fieldId={name} key={name} label={title}>
<FormHelperText>
<HelperText>
<HelperTextItem>{description}</HelperTextItem>
</HelperText>
</FormHelperText>
{component}
</FormGroup>
)
Expand Down
7 changes: 5 additions & 2 deletions horreum-web/src/components/EnumSelect.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { ReactNode, useState } from "react"

import { Select, SelectOption } from "@patternfly/react-core"
import {
Select,
SelectOption
} from '@patternfly/react-core/deprecated';

type EnumSelectProps = {
options: Record<string, ReactNode>
Expand All @@ -14,7 +17,7 @@ export default function EnumSelect({options, selected, onSelect, isDisabled}: En
return (
<Select
isOpen={isOpen}
onToggle={setOpen}
onToggle={(_event, val) => setOpen(val)}
placeholderText="Please select..."
selections={selected}
onSelect={(_, value) => {
Expand Down
6 changes: 3 additions & 3 deletions horreum-web/src/components/ErrorBadge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ export default function ErrorBadge({ children }: ErrorBadgeProps) {
return (
<Badge
style={{
background: "var(--pf-global--palette--red-50)",
color: "var(--pf-global--Color--200)",
background: "var(--pf-v5-global--palette--red-50)",
color: "var(--pf-v5-global--Color--200)",
}}
>
<ExclamationCircleIcon
style={{
fill: "var(--pf-global--danger-color--100)",
fill: "var(--pf-v5-global--danger-color--100)",
marginTop: "4px",
}}
/>{" "}
Expand Down
14 changes: 11 additions & 3 deletions horreum-web/src/components/ExportImport.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import {useContext, useState} from "react"

import { Button, FileUpload, Flex, FlexItem, Form, FormGroup, Spinner } from "@patternfly/react-core"
import { Button, FileUpload, Flex, FlexItem, Form, FormGroup, Spinner,
HelperText,
HelperTextItem,
FormHelperText } from "@patternfly/react-core"

import ExportButton from "./ExportButton"
import {AppContext} from "../context/appContext";
Expand Down Expand Up @@ -29,9 +32,14 @@ export default function ExportImport(props: ExportImportProps) {
<FormGroup
label="Import"
fieldId="import"
validated={parseError ? "error" : "default"}
helperTextInvalid={parseError?.toString()}
>
<FormHelperText>
<HelperText>
<HelperTextItem variant={parseError ? "error" : "default"}>
{parseError ? parseError?.toString() : ""}
</HelperTextItem>
</HelperText>
</FormHelperText>
<Flex>
<FlexItem>
<FileUpload
Expand Down
7 changes: 5 additions & 2 deletions horreum-web/src/components/FolderSelect.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import {useContext, useEffect, useState} from "react"
import { useSelector } from "react-redux"

import { Select, SelectOption } from "@patternfly/react-core"
import {
Select,
SelectOption
} from '@patternfly/react-core/deprecated';

import { teamsSelector } from "../auth"
import {AppContext} from "../context/appContext";
Expand Down Expand Up @@ -30,7 +33,7 @@ type FolderSelectProps = {
isOpen={open}
isCreatable={canCreate}
variant={canCreate ? "typeahead" : "single"}
onToggle={setOpen}
onToggle={(_event, val) => setOpen(val)}
selections={folder}
menuAppendTo="parent"
onSelect={(_, item) => {
Expand Down
7 changes: 5 additions & 2 deletions horreum-web/src/components/HelpButton.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Icon } from '@patternfly/react-core';
import { HelpIcon } from "@patternfly/react-icons"

export default function HelpButton() {
Expand All @@ -6,9 +7,11 @@ export default function HelpButton() {
type="button"
aria-label="More info"
onClick={e => e.preventDefault()}
className="pf-c-form__group-label-help"
className="pf-v5-c-form__group-label-help"
>
<HelpIcon noVerticalAlign />
<Icon isInline={true}>
<HelpIcon/>
</Icon>
</button>
)
}
47 changes: 32 additions & 15 deletions horreum-web/src/components/HttpActionUrlSelector.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
import {useContext, useEffect, useRef, useState} from "react"
import { Dropdown, DropdownItem, DropdownToggle, FormGroup, InputGroup, TextInput } from "@patternfly/react-core"
import {
FormGroup,
InputGroup,
TextInput, InputGroupItem,
HelperText,
HelperTextItem,
FormHelperText,

} from '@patternfly/react-core';
import {
Dropdown,
DropdownItem,
DropdownToggle
} from '@patternfly/react-core/deprecated';

import { AllowedSite, getAllowedSites} from "../api"
import {AppContext} from "../context/appContext";
import {AppContextType} from "../context/@types/appContextTypes";


function isValidUrl(url: string) {
try {
new URL(url)
Expand Down Expand Up @@ -43,17 +58,8 @@ export default function HttpActionUrlSelector({ active, value, setValue, isDisab
return (
<FormGroup
label="HTTP Action URL"
validated={isUrlValid && isUrlAllowed && extraCheckResult === true ? "default" : "error"}
isRequired={true}
fieldId="url"
helperText="URL (with protocol) for POST callback"
helperTextInvalid={
!isUrlValid
? "URL cannot be parsed."
: !isUrlAllowed
? "URL does not start with any of the allowed prefixes."
: extraCheckResult
}
>
<InputGroup>
{!isReadOnly && (
Expand All @@ -71,7 +77,7 @@ export default function HttpActionUrlSelector({ active, value, setValue, isDisab
}
}}
toggle={
<DropdownToggle onToggle={setDropdownOpen} isDisabled={isDisabled}>
<DropdownToggle onToggle={(_event, val) => setDropdownOpen(val)} isDisabled={isDisabled}>
Pick URL prefix
</DropdownToggle>
}
Expand All @@ -83,7 +89,7 @@ export default function HttpActionUrlSelector({ active, value, setValue, isDisab
))}
/>
)}
<TextInput
<InputGroupItem isFill ><TextInput
ref={ref}
value={value}
isRequired
Expand All @@ -93,7 +99,7 @@ export default function HttpActionUrlSelector({ active, value, setValue, isDisab
name="url"
validated={isUrlValid && isUrlAllowed && extraCheckResult === true ? "default" : "error"}
placeholder="e.g. 'http://example.com/api/action'"
onChange={value => {
onChange={(_event, value) => {
value = value.trim()
if (setValid) {
setValid(
Expand All @@ -105,9 +111,20 @@ export default function HttpActionUrlSelector({ active, value, setValue, isDisab
setValue(value)
}}
isDisabled={isDisabled}
isReadOnly={isReadOnly}
/>
readOnlyVariant={isReadOnly ? "default" : undefined}
/></InputGroupItem>
</InputGroup>
<FormHelperText>
<HelperText>
<HelperTextItem variant={isUrlValid && isUrlAllowed && extraCheckResult === true ? "default" : "error"}>
{isUrlValid && isUrlAllowed && extraCheckResult === true ? "URL (with protocol) for POST callback" : !isUrlValid
? "URL cannot be parsed."
: !isUrlAllowed
? "URL does not start with any of the allowed prefixes."
: extraCheckResult ? "URL (with protocol) for POST callback" : ""}
</HelperTextItem>
</HelperText>
</FormHelperText>
</FormGroup>
)
}
4 changes: 2 additions & 2 deletions horreum-web/src/components/IndirectLink.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import { HTMLProps, ReactNode } from "react"
import { useNavigate } from "react-router-dom"

import { noop } from "../utils"
import { Button } from "@patternfly/react-core"
import { Button, ButtonProps } from "@patternfly/react-core"

type IndirectLinkProps = {
variant?: "primary" | "secondary" | "tertiary" | "control" | "link" | "plain"
children: ReactNode | ReactNode[]
onNavigate(): Promise<string>
} & Omit<HTMLProps<HTMLButtonElement>, "ref">
} & ButtonProps //Omit<HTMLProps<HTMLButtonElement>, "ref"|"size">

export default function IndirectLink({ variant = "link", onNavigate, children, ...props }: IndirectLinkProps) {
const navigate = useNavigate()
Expand Down
Loading

0 comments on commit 397b0d7

Please sign in to comment.