Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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