Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react/jsx-runtime",
"plugin:react-hooks/recommended"
],
"parser": "@typescript-eslint/parser",
Expand Down
8 changes: 4 additions & 4 deletions packages/dev/src/App.test.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { createRoot } from 'react-dom/client';
import App from './AppContext';

it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
const root = createRoot(div);
root.render(<App />);
root.unmount();
});
1 change: 0 additions & 1 deletion packages/dev/src/DefaultCatalog.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { QuickStartCatalogPage, QuickStart } from '@patternfly/quickstarts';

export const DefaultCatalog = ({ hint }: { hint?: string }) => {
Expand Down
1 change: 0 additions & 1 deletion packages/dev/src/FormInput.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { Form, FormGroup, TextInput } from '@patternfly/react-core';

export const FormInput = ({
Expand Down
1 change: 0 additions & 1 deletion packages/dev/src/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import * as React from 'react';
import { createRoot } from 'react-dom/client';
import { Route, BrowserRouter, Routes } from 'react-router-dom';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import * as React from 'react';
import { QuickStart } from '@patternfly/quickstarts';
import GithubIcon from '@patternfly/react-icons/dist/js/icons/github-icon';

Expand Down
2 changes: 1 addition & 1 deletion packages/dev/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react",
"jsx": "react-jsx",
"strict": true,
"strictPropertyInitialization": false,
"strictNullChecks": false,
Expand Down
5 changes: 2 additions & 3 deletions packages/module/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@
},
"peerDependencies": {
"@patternfly/react-core": "^6.0.0",
"react": "^17 || ^18",
"react-dom": "^17 || ^18",
"react": "^17 || ^18 || ^19",
"react-dom": "^17 || ^18 || ^19",
"marked": "^15.0.6"
},
"dependencies": {
Expand Down Expand Up @@ -88,7 +88,6 @@
"react-axe": "^3.5.4",
"react-docgen-typescript-loader": "^3.7.2",
"react-dom": "^18.2.0",
"react-monaco-editor": "0.51.0",
"regenerator-runtime": "^0.13.7",
"rimraf": "^3.0.2",
"rollup": "^2.79.2",
Expand Down
1 change: 0 additions & 1 deletion packages/module/patternfly-docs/pages/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { Title, PageSection } from '@patternfly/react-core';

const centerStyle = {
Expand Down
38 changes: 20 additions & 18 deletions packages/module/src/ConsoleInternal/components/markdown-view.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react';
import { FC, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
import { css } from '@patternfly/react-styles';
import { marked } from 'marked';
import { useForceRender } from '@console/shared';
Expand Down Expand Up @@ -121,7 +121,7 @@ type InnerSyncMarkdownProps = Pick<SyncMarkdownProps, 'renderExtension' | 'exact
className?: string;
};

export const SyncMarkdownView: React.FC<SyncMarkdownProps> = ({
export const SyncMarkdownView: FC<SyncMarkdownProps> = ({
content,
emptyMsg,
extensions,
Expand All @@ -130,10 +130,10 @@ export const SyncMarkdownView: React.FC<SyncMarkdownProps> = ({
inline,
className,
}) => {
const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
const [markup, setMarkup] = React.useState<string>('');
const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
const [markup, setMarkup] = useState<string>('');

React.useEffect(() => {
useEffect(() => {
async function getMd() {
const md = await markdownConvert(
content || emptyMsg || getResource('Not available'),
Expand Down Expand Up @@ -176,8 +176,8 @@ const RenderExtension: React.FC<RenderExtensionProps> = ({
docContext,
}) => {
const forceRender = useForceRender();
const markupRef = React.useRef<string>(null);
const shouldRenderExtension = React.useCallback(() => {
const markupRef = useRef<string>(null);
const shouldRenderExtension = useCallback(() => {
if (markupRef.current === markup) {
return true;
}
Expand All @@ -190,7 +190,7 @@ const RenderExtension: React.FC<RenderExtensionProps> = ({
* which causes the component rendered by renderExtension to receive old copy of document
* use forceRender to delay the rendering of extension by one render cycle
*/
React.useEffect(() => {
useEffect(() => {
if (renderExtension) {
forceRender();
}
Expand All @@ -201,13 +201,13 @@ const RenderExtension: React.FC<RenderExtensionProps> = ({
);
};

const InlineMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
const InlineMarkdownView: FC<InnerSyncMarkdownProps> = ({
markup,
isEmpty,
renderExtension,
className,
}) => {
const id = React.useMemo(() => uniqueId('markdown'), []);
const id = useMemo(() => uniqueId('markdown'), []);
return (
<div className={css({ 'is-empty': isEmpty } as any, className)} id={id}>
<div dangerouslySetInnerHTML={{ __html: markup }} />
Expand All @@ -218,18 +218,18 @@ const InlineMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
);
};

const IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
const IFrameMarkdownView: FC<InnerSyncMarkdownProps> = ({
exactHeight,
markup,
isEmpty,
renderExtension,
className,
}) => {
const [frame, setFrame] = React.useState<HTMLIFrameElement>();
const [loaded, setLoaded] = React.useState(false);
const updateTimeoutHandle = React.useRef<NodeJS.Timeout>();
const [frame, setFrame] = useState<HTMLIFrameElement>();
const [loaded, setLoaded] = useState(false);
const updateTimeoutHandle = useRef<NodeJS.Timeout>(null);

const updateDimensions = React.useCallback(() => {
const updateDimensions = useCallback(() => {
if (!frame?.contentWindow?.document.body.firstChild) {
return;
}
Expand All @@ -248,14 +248,14 @@ const IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
});
}, [frame, exactHeight]);

React.useEffect(
useEffect(
() => () => {
clearTimeout(updateTimeoutHandle.current);
},
[],
);

const onLoad = React.useCallback(() => {
const onLoad = useCallback(() => {
updateDimensions();
setLoaded(true);
}, [updateDimensions]);
Expand Down Expand Up @@ -302,7 +302,9 @@ const IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin"
srcDoc={contents}
style={{ border: '0px', display: 'block', width: '100%', height: '0' }}
ref={(r) => setFrame(r)}
ref={(r) => {
setFrame(r);
}}
onLoad={() => onLoad()}
className={className}
/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react';
import { Fragment } from 'react';

const MEMO = {};

Expand All @@ -16,10 +16,10 @@ export const CamelCaseWrap: React.FC<CamelCaseWrapProps> = ({ value, dataTest })
const rendered = (
<span data-test={dataTest}>
{words.map((word, i) => (
<React.Fragment key={i}>
<Fragment key={i}>
{word}
{i !== words.length - 1 && <wbr />}
</React.Fragment>
</Fragment>
))}
</span>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import * as React from 'react';
import { FC, useContext } from 'react';
import { css } from '@patternfly/react-styles';
import { QuickStartContext, QuickStartContextValues } from '../../../utils/quick-start-context';

export const Box: React.FC<BoxProps> = ({ children, className }) => (
<div className={css('pfext-status-box', className)}>{children}</div>
);

export const Loading: React.FC<LoadingProps> = ({ className }) => (
export const Loading: FC<LoadingProps> = ({ className }) => (
<div className={css('pfext-m-loader', className)}>
<div className="pfext-m-loader-dot__one" />
<div className="pfext-m-loader-dot__two" />
Expand All @@ -15,7 +15,7 @@ export const Loading: React.FC<LoadingProps> = ({ className }) => (
);
Loading.displayName = 'Loading';

export const LoadingBox: React.FC<LoadingBoxProps> = ({ className, message }) => (
export const LoadingBox: FC<LoadingBoxProps> = ({ className, message }) => (
<Box className={css('pfext-status-box--loading', className)}>
<Loading />
{message && <div className="pfext-status-box__loading-message">{message}</div>}
Expand All @@ -24,7 +24,7 @@ export const LoadingBox: React.FC<LoadingBoxProps> = ({ className, message }) =>
LoadingBox.displayName = 'LoadingBox';

export const EmptyBox: React.FC<EmptyBoxProps> = ({ label }) => {
const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
return (
<Box>
<div data-test="empty-message" className="text-center">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react';
import { FC, useCallback, useContext, useMemo, useState } from 'react';
import { Tooltip } from '@patternfly/react-core';
import { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';
import { useEventListener } from '../../hooks';
Expand All @@ -10,14 +10,10 @@ interface CopyClipboardProps {
docContext: Document;
}

export const CopyClipboard: React.FC<CopyClipboardProps> = ({
element,
rootSelector,
docContext,
}) => {
const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
const [showSuccessContent, setShowSuccessContent] = React.useState<boolean>(false);
const textToCopy = React.useMemo(() => {
export const CopyClipboard: FC<CopyClipboardProps> = ({ element, rootSelector, docContext }) => {
const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
const [showSuccessContent, setShowSuccessContent] = useState<boolean>(false);
const textToCopy = useMemo(() => {
const copyTextId = element.getAttribute(MARKDOWN_COPY_BUTTON_ID);
return (
docContext.querySelector(
Expand All @@ -29,7 +25,7 @@ export const CopyClipboard: React.FC<CopyClipboardProps> = ({
useEventListener(
element,
'click',
React.useCallback(() => {
useCallback(() => {
navigator.clipboard
.writeText(textToCopy.trim())
.then(() => {
Expand All @@ -42,7 +38,7 @@ export const CopyClipboard: React.FC<CopyClipboardProps> = ({
useEventListener(
element,
'mouseleave',
React.useCallback(() => {
useCallback(() => {
setShowSuccessContent(false);
}, []),
);
Expand Down Expand Up @@ -70,10 +66,7 @@ interface MarkdownCopyClipboardProps {
rootSelector: string;
}

const MarkdownCopyClipboard: React.FC<MarkdownCopyClipboardProps> = ({
docContext,
rootSelector,
}) => {
const MarkdownCopyClipboard: FC<MarkdownCopyClipboardProps> = ({ docContext, rootSelector }) => {
const elements = docContext.querySelectorAll(`${rootSelector} [${MARKDOWN_COPY_BUTTON_ID}]`);
return elements.length > 0 ? (
<>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import * as React from 'react';
import { shallow } from 'enzyme';
import MarkdownCopyClipboard, { CopyClipboard } from '../MarkdownCopyClipboard';
import { htmlDocumentForCopyClipboard } from './test-data';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react';
import { useMemo } from 'react';
import {
Accordion,
AccordionItem,
Expand All @@ -10,7 +10,7 @@ import { removeTemplateWhitespace } from './utils';
import { ACCORDION_MARKDOWN_BUTTON_ID, ACCORDION_MARKDOWN_CONTENT_ID } from './const';

const useAccordionShowdownExtension = () =>
React.useMemo(
useMemo(
() => ({
type: 'lang',
regex: /\[(.+)]{{(accordion) ("(.*?)")}}/g,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react';
import { FC, useState } from 'react';
import { useEventListener } from '../../hooks';
import { ACCORDION_MARKDOWN_BUTTON_ID, ACCORDION_MARKDOWN_CONTENT_ID } from './const';

Expand All @@ -7,11 +7,11 @@ interface AccordionShowdownComponentProps {
contentElement: HTMLElement;
}

const AccordionShowdownHandler: React.FC<AccordionShowdownComponentProps> = ({
const AccordionShowdownHandler: FC<AccordionShowdownComponentProps> = ({
buttonElement,
contentElement,
}) => {
const [expanded, setExpanded] = React.useState<boolean>(false);
const [expanded, setExpanded] = useState<boolean>(false);

const handleClick = () => {
const expandedModifier = 'pf-m-expanded';
Expand All @@ -33,7 +33,7 @@ interface accordionRenderExtensionProps {
docContext: Document;
}

const AccordionRenderExtension: React.FC<accordionRenderExtensionProps> = ({ docContext }) => {
const AccordionRenderExtension: FC<accordionRenderExtensionProps> = ({ docContext }) => {
const buttonElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_BUTTON_ID}]`);
const contentElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_CONTENT_ID}]`);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react';
import { useMemo } from 'react';
import { removeTemplateWhitespace } from './utils';
import { renderToStaticMarkup } from 'react-dom/server';
import { Alert } from '@patternfly/react-core';
Expand All @@ -24,7 +24,7 @@ const admonitionToAlertVariantMap = {

const useAdmonitionShowdownExtension = () =>
// const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
React.useMemo(
useMemo(
() => ({
type: 'lang',
regex: /\[(.+)]{{(admonition) ([\w-]+)}}/g,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as React from 'react';
import { useMemo } from 'react';
import { removeTemplateWhitespace } from './utils';
import { renderToStaticMarkup } from 'react-dom/server';
import { CodeBlock } from '@patternfly/react-core';

const useCodeShowdownExtension = () =>
React.useMemo(
useMemo(
() => ({
type: 'output',
regex: /<pre><code>(.*?)\n?<\/code><\/pre>/g,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import * as React from 'react';
import { useContext, useMemo } from 'react';
import { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';
import { MARKDOWN_COPY_BUTTON_ID, MARKDOWN_SNIPPET_ID } from './const';
import { removeTemplateWhitespace } from './utils';
import { renderToStaticMarkup } from 'react-dom/server';
import CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';

const useInlineCopyClipboardShowdownExtension = () => {
const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
return React.useMemo(
const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
return useMemo(
() => ({
type: 'lang',
regex: /`([^`](.*?)[^`])`{{copy}}/g,
Expand Down
Loading