@patternfly/quickstarts 6.3.0-prerelease.3 → 6.3.0-prerelease.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/ConsoleInternal/components/markdown-view.d.ts +2 -2
  2. package/dist/ConsoleInternal/components/utils/camel-case-wrap.d.ts +1 -1
  3. package/dist/ConsoleInternal/components/utils/status-box.d.ts +3 -3
  4. package/dist/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.d.ts +3 -3
  5. package/dist/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.d.ts +2 -2
  6. package/dist/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.d.ts +2 -2
  7. package/dist/ConsoleShared/src/components/modal/Modal.d.ts +3 -3
  8. package/dist/ConsoleShared/src/components/popper/Portal.d.ts +3 -3
  9. package/dist/ConsoleShared/src/components/popper/SimplePopper.d.ts +3 -3
  10. package/dist/ConsoleShared/src/components/spotlight/InteractiveSpotlight.d.ts +2 -2
  11. package/dist/ConsoleShared/src/components/spotlight/Spotlight.d.ts +2 -2
  12. package/dist/ConsoleShared/src/components/spotlight/StaticSpotlight.d.ts +2 -2
  13. package/dist/ConsoleShared/src/components/status/GenericStatus.d.ts +4 -4
  14. package/dist/ConsoleShared/src/components/status/NotStartedIcon.d.ts +1 -2
  15. package/dist/ConsoleShared/src/components/status/PopoverStatus.d.ts +4 -4
  16. package/dist/ConsoleShared/src/components/status/Status.d.ts +3 -3
  17. package/dist/ConsoleShared/src/components/status/StatusIconAndText.d.ts +3 -3
  18. package/dist/ConsoleShared/src/components/status/icons.d.ts +4 -4
  19. package/dist/ConsoleShared/src/components/status/statuses.d.ts +4 -4
  20. package/dist/ConsoleShared/src/components/utils/FallbackImg.d.ts +3 -3
  21. package/dist/ConsoleShared/src/utils/useCombineRefs.d.ts +2 -2
  22. package/dist/HelpTopicDrawer.d.ts +3 -3
  23. package/dist/HelpTopicPanelContent.d.ts +2 -2
  24. package/dist/QuickStartCatalogPage.d.ts +3 -3
  25. package/dist/QuickStartCloseModal.d.ts +2 -2
  26. package/dist/QuickStartContainer.d.ts +2 -2
  27. package/dist/QuickStartController.d.ts +2 -2
  28. package/dist/QuickStartDrawer.d.ts +2 -2
  29. package/dist/QuickStartDrawerContent.d.ts +2 -2
  30. package/dist/QuickStartMarkdownView.d.ts +2 -2
  31. package/dist/QuickStartPanelContent.d.ts +2 -2
  32. package/dist/catalog/Catalog/QuickStartCatalogHeader.d.ts +2 -2
  33. package/dist/catalog/Catalog/QuickStartCatalogSection.d.ts +2 -2
  34. package/dist/catalog/Catalog/QuickStartCatalogToolbar.d.ts +2 -2
  35. package/dist/catalog/QuickStartCatalog.d.ts +2 -2
  36. package/dist/catalog/QuickStartTile.d.ts +2 -2
  37. package/dist/catalog/QuickStartTileDescription.d.ts +2 -2
  38. package/dist/catalog/QuickStartTileFooter.d.ts +2 -2
  39. package/dist/catalog/QuickStartTileFooterExternal.d.ts +2 -2
  40. package/dist/catalog/QuickStartTileHeader.d.ts +2 -2
  41. package/dist/catalog/Toolbar/QuickStartCatalogFilter.d.ts +2 -2
  42. package/dist/catalog/Toolbar/QuickStartCatalogFilterItems.d.ts +7 -7
  43. package/dist/controller/QuickStartConclusion.d.ts +2 -2
  44. package/dist/controller/QuickStartContent.d.ts +2 -2
  45. package/dist/controller/QuickStartFooter.d.ts +2 -2
  46. package/dist/controller/QuickStartIntroduction.d.ts +2 -2
  47. package/dist/controller/QuickStartTaskHeader.d.ts +2 -2
  48. package/dist/controller/QuickStartTaskHeaderList.d.ts +2 -2
  49. package/dist/controller/QuickStartTaskReview.d.ts +2 -2
  50. package/dist/controller/QuickStartTasks.d.ts +2 -2
  51. package/dist/index.es.js +299 -459
  52. package/dist/index.es.js.map +1 -1
  53. package/dist/index.js +310 -472
  54. package/dist/index.js.map +1 -1
  55. package/dist/quickstarts-full.es.js +1693 -511
  56. package/dist/quickstarts-full.es.js.map +1 -1
  57. package/dist/utils/help-topic-context.d.ts +2 -2
  58. package/dist/utils/quick-start-context.d.ts +3 -3
  59. package/package.json +4 -5
  60. package/src/ConsoleInternal/components/markdown-view.tsx +20 -18
  61. package/src/ConsoleInternal/components/utils/camel-case-wrap.tsx +3 -3
  62. package/src/ConsoleInternal/components/utils/status-box.tsx +4 -4
  63. package/src/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.tsx +8 -15
  64. package/src/ConsoleShared/src/components/markdown-extensions/__tests__/MarkdownCopyClipboard.spec.tsx +0 -1
  65. package/src/ConsoleShared/src/components/markdown-extensions/accordion-extension.tsx +2 -2
  66. package/src/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.tsx +4 -4
  67. package/src/ConsoleShared/src/components/markdown-extensions/admonition-extension.tsx +2 -2
  68. package/src/ConsoleShared/src/components/markdown-extensions/code-extension.tsx +2 -2
  69. package/src/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.tsx +3 -3
  70. package/src/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.tsx +3 -3
  71. package/src/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.tsx +5 -5
  72. package/src/ConsoleShared/src/components/modal/Modal.tsx +3 -3
  73. package/src/ConsoleShared/src/components/popper/Portal.tsx +5 -5
  74. package/src/ConsoleShared/src/components/popper/SimplePopper.tsx +15 -15
  75. package/src/ConsoleShared/src/components/spotlight/InteractiveSpotlight.tsx +5 -5
  76. package/src/ConsoleShared/src/components/spotlight/Spotlight.tsx +3 -3
  77. package/src/ConsoleShared/src/components/spotlight/StaticSpotlight.tsx +3 -3
  78. package/src/ConsoleShared/src/components/status/GenericStatus.tsx +5 -5
  79. package/src/ConsoleShared/src/components/status/NotStartedIcon.tsx +0 -1
  80. package/src/ConsoleShared/src/components/status/PopoverStatus.tsx +4 -4
  81. package/src/ConsoleShared/src/components/status/Status.tsx +3 -11
  82. package/src/ConsoleShared/src/components/status/StatusIconAndText.tsx +6 -6
  83. package/src/ConsoleShared/src/components/status/icons.tsx +4 -8
  84. package/src/ConsoleShared/src/components/status/statuses.tsx +4 -5
  85. package/src/ConsoleShared/src/components/utils/FallbackImg.tsx +4 -4
  86. package/src/ConsoleShared/src/hooks/scroll.ts +4 -4
  87. package/src/ConsoleShared/src/hooks/useBoundingClientRect.ts +3 -3
  88. package/src/ConsoleShared/src/hooks/useForceRender.ts +2 -2
  89. package/src/ConsoleShared/src/hooks/useResizeObserver.ts +3 -6
  90. package/src/ConsoleShared/src/hooks/useScrollShadows.ts +4 -4
  91. package/src/ConsoleShared/src/utils/useCombineRefs.ts +4 -4
  92. package/src/HelpTopicDrawer.tsx +6 -6
  93. package/src/HelpTopicPanelContent.tsx +4 -4
  94. package/src/QuickStartCatalogPage.tsx +9 -9
  95. package/src/QuickStartCloseModal.tsx +3 -7
  96. package/src/QuickStartContainer.tsx +4 -4
  97. package/src/QuickStartController.tsx +11 -11
  98. package/src/QuickStartDrawer.tsx +6 -6
  99. package/src/QuickStartDrawerContent.tsx +3 -3
  100. package/src/QuickStartMarkdownView.tsx +3 -3
  101. package/src/QuickStartPanelContent.tsx +8 -8
  102. package/src/catalog/Catalog/QuickStartCatalogHeader.tsx +2 -2
  103. package/src/catalog/Catalog/QuickStartCatalogSection.tsx +2 -2
  104. package/src/catalog/Catalog/QuickStartCatalogToolbar.tsx +2 -2
  105. package/src/catalog/QuickStartCatalog.tsx +3 -3
  106. package/src/catalog/QuickStartTile.tsx +4 -4
  107. package/src/catalog/QuickStartTileDescription.tsx +4 -4
  108. package/src/catalog/QuickStartTileFooter.tsx +6 -6
  109. package/src/catalog/QuickStartTileFooterExternal.tsx +2 -5
  110. package/src/catalog/QuickStartTileHeader.tsx +2 -6
  111. package/src/catalog/Toolbar/QuickStartCatalogFilter.tsx +2 -2
  112. package/src/catalog/Toolbar/QuickStartCatalogFilterItems.tsx +16 -16
  113. package/src/catalog/__tests__/QuickStartCatalog.spec.tsx +0 -1
  114. package/src/catalog/__tests__/QuickStartTile.spec.tsx +0 -1
  115. package/src/catalog/__tests__/QuickStartTileDescription.spec.tsx +1 -2
  116. package/src/controller/QuickStartConclusion.tsx +3 -3
  117. package/src/controller/QuickStartContent.tsx +2 -2
  118. package/src/controller/QuickStartFooter.tsx +10 -11
  119. package/src/controller/QuickStartIntroduction.tsx +4 -4
  120. package/src/controller/QuickStartTaskHeader.tsx +5 -5
  121. package/src/controller/QuickStartTaskHeaderList.tsx +2 -2
  122. package/src/controller/QuickStartTaskReview.tsx +4 -4
  123. package/src/controller/QuickStartTasks.tsx +5 -5
  124. package/src/controller/__tests__/QuickStartConclusion.spec.tsx +3 -3
  125. package/src/controller/__tests__/QuickStartContent.spec.tsx +2 -2
  126. package/src/controller/__tests__/QuickStartTaskHeader.spec.tsx +2 -2
  127. package/src/controller/__tests__/QuickStartTaskReview.spec.tsx +2 -2
  128. package/src/utils/help-topic-context.tsx +7 -10
  129. package/src/utils/quick-start-context.tsx +11 -11
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  import { HelpTopic } from './help-topic-types';
3
3
  export interface HelpTopicContextValues {
4
4
  helpTopics?: HelpTopic[];
@@ -19,5 +19,5 @@ export declare const HelpTopicContextDefaults: {
19
19
  setFilteredHelpTopics: () => void;
20
20
  loading: boolean;
21
21
  };
22
- export declare const HelpTopicContext: React.Context<HelpTopicContextValues>;
22
+ export declare const HelpTopicContext: import("react").Context<HelpTopicContextValues>;
23
23
  export declare const useValuesForHelpTopicContext: (value?: HelpTopicContextValues) => HelpTopicContextValues;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { FC } from 'react';
2
2
  import { AllQuickStartStates, QuickStart, QuickStartState, QuickStartStatus, QuickStartTaskStatus } from './quick-start-types';
3
3
  export interface FooterProps {
4
4
  show?: boolean;
@@ -74,10 +74,10 @@ export declare const QuickStartContextDefaults: {
74
74
  alwaysShowTaskReview: boolean;
75
75
  focusOnQuickStart: boolean;
76
76
  };
77
- export declare const QuickStartContext: React.Context<QuickStartContextValues>;
77
+ export declare const QuickStartContext: import("react").Context<QuickStartContextValues>;
78
78
  export declare const getResource: (resource: string, options: any, resourceBundle: any, lng: string) => any;
79
79
  export declare const useValuesForQuickStartContext: (value?: QuickStartContextValues) => QuickStartContextValues;
80
- export declare const QuickStartContextProvider: React.FC<{
80
+ export declare const QuickStartContextProvider: FC<{
81
81
  children: React.ReactNode;
82
82
  value: QuickStartContextValues;
83
83
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/quickstarts",
3
- "version": "6.3.0-prerelease.3",
3
+ "version": "6.3.0-prerelease.5",
4
4
  "description": "PatternFly quick starts",
5
5
  "files": [
6
6
  "src",
@@ -46,12 +46,12 @@
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@patternfly/react-core": "^6.0.0",
49
- "react": "^17 || ^18",
50
- "react-dom": "^17 || ^18",
49
+ "react": "^17 || ^18 || ^19",
50
+ "react-dom": "^17 || ^18 || ^19",
51
51
  "marked": "^15.0.6"
52
52
  },
53
53
  "dependencies": {
54
- "dompurify": "^3.1.3",
54
+ "dompurify": "^3.2.4",
55
55
  "history": "^5.0.0"
56
56
  },
57
57
  "devDependencies": {
@@ -88,7 +88,6 @@
88
88
  "react-axe": "^3.5.4",
89
89
  "react-docgen-typescript-loader": "^3.7.2",
90
90
  "react-dom": "^18.2.0",
91
- "react-monaco-editor": "0.51.0",
92
91
  "regenerator-runtime": "^0.13.7",
93
92
  "rimraf": "^3.0.2",
94
93
  "rollup": "^2.79.2",
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { FC, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
2
2
  import { css } from '@patternfly/react-styles';
3
3
  import { marked } from 'marked';
4
4
  import { useForceRender } from '@console/shared';
@@ -121,7 +121,7 @@ type InnerSyncMarkdownProps = Pick<SyncMarkdownProps, 'renderExtension' | 'exact
121
121
  className?: string;
122
122
  };
123
123
 
124
- export const SyncMarkdownView: React.FC<SyncMarkdownProps> = ({
124
+ export const SyncMarkdownView: FC<SyncMarkdownProps> = ({
125
125
  content,
126
126
  emptyMsg,
127
127
  extensions,
@@ -130,10 +130,10 @@ export const SyncMarkdownView: React.FC<SyncMarkdownProps> = ({
130
130
  inline,
131
131
  className,
132
132
  }) => {
133
- const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
134
- const [markup, setMarkup] = React.useState<string>('');
133
+ const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
134
+ const [markup, setMarkup] = useState<string>('');
135
135
 
136
- React.useEffect(() => {
136
+ useEffect(() => {
137
137
  async function getMd() {
138
138
  const md = await markdownConvert(
139
139
  content || emptyMsg || getResource('Not available'),
@@ -176,8 +176,8 @@ const RenderExtension: React.FC<RenderExtensionProps> = ({
176
176
  docContext,
177
177
  }) => {
178
178
  const forceRender = useForceRender();
179
- const markupRef = React.useRef<string>(null);
180
- const shouldRenderExtension = React.useCallback(() => {
179
+ const markupRef = useRef<string>(null);
180
+ const shouldRenderExtension = useCallback(() => {
181
181
  if (markupRef.current === markup) {
182
182
  return true;
183
183
  }
@@ -190,7 +190,7 @@ const RenderExtension: React.FC<RenderExtensionProps> = ({
190
190
  * which causes the component rendered by renderExtension to receive old copy of document
191
191
  * use forceRender to delay the rendering of extension by one render cycle
192
192
  */
193
- React.useEffect(() => {
193
+ useEffect(() => {
194
194
  if (renderExtension) {
195
195
  forceRender();
196
196
  }
@@ -201,13 +201,13 @@ const RenderExtension: React.FC<RenderExtensionProps> = ({
201
201
  );
202
202
  };
203
203
 
204
- const InlineMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
204
+ const InlineMarkdownView: FC<InnerSyncMarkdownProps> = ({
205
205
  markup,
206
206
  isEmpty,
207
207
  renderExtension,
208
208
  className,
209
209
  }) => {
210
- const id = React.useMemo(() => uniqueId('markdown'), []);
210
+ const id = useMemo(() => uniqueId('markdown'), []);
211
211
  return (
212
212
  <div className={css({ 'is-empty': isEmpty } as any, className)} id={id}>
213
213
  <div dangerouslySetInnerHTML={{ __html: markup }} />
@@ -218,18 +218,18 @@ const InlineMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
218
218
  );
219
219
  };
220
220
 
221
- const IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
221
+ const IFrameMarkdownView: FC<InnerSyncMarkdownProps> = ({
222
222
  exactHeight,
223
223
  markup,
224
224
  isEmpty,
225
225
  renderExtension,
226
226
  className,
227
227
  }) => {
228
- const [frame, setFrame] = React.useState<HTMLIFrameElement>();
229
- const [loaded, setLoaded] = React.useState(false);
230
- const updateTimeoutHandle = React.useRef<NodeJS.Timeout>();
228
+ const [frame, setFrame] = useState<HTMLIFrameElement>();
229
+ const [loaded, setLoaded] = useState(false);
230
+ const updateTimeoutHandle = useRef<NodeJS.Timeout>(null);
231
231
 
232
- const updateDimensions = React.useCallback(() => {
232
+ const updateDimensions = useCallback(() => {
233
233
  if (!frame?.contentWindow?.document.body.firstChild) {
234
234
  return;
235
235
  }
@@ -248,14 +248,14 @@ const IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
248
248
  });
249
249
  }, [frame, exactHeight]);
250
250
 
251
- React.useEffect(
251
+ useEffect(
252
252
  () => () => {
253
253
  clearTimeout(updateTimeoutHandle.current);
254
254
  },
255
255
  [],
256
256
  );
257
257
 
258
- const onLoad = React.useCallback(() => {
258
+ const onLoad = useCallback(() => {
259
259
  updateDimensions();
260
260
  setLoaded(true);
261
261
  }, [updateDimensions]);
@@ -302,7 +302,9 @@ const IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({
302
302
  sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin"
303
303
  srcDoc={contents}
304
304
  style={{ border: '0px', display: 'block', width: '100%', height: '0' }}
305
- ref={(r) => setFrame(r)}
305
+ ref={(r) => {
306
+ setFrame(r);
307
+ }}
306
308
  onLoad={() => onLoad()}
307
309
  className={className}
308
310
  />
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { Fragment } from 'react';
2
2
 
3
3
  const MEMO = {};
4
4
 
@@ -16,10 +16,10 @@ export const CamelCaseWrap: React.FC<CamelCaseWrapProps> = ({ value, dataTest })
16
16
  const rendered = (
17
17
  <span data-test={dataTest}>
18
18
  {words.map((word, i) => (
19
- <React.Fragment key={i}>
19
+ <Fragment key={i}>
20
20
  {word}
21
21
  {i !== words.length - 1 && <wbr />}
22
- </React.Fragment>
22
+ </Fragment>
23
23
  ))}
24
24
  </span>
25
25
  );
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { FC, useContext } from 'react';
2
2
  import { css } from '@patternfly/react-styles';
3
3
  import { QuickStartContext, QuickStartContextValues } from '../../../utils/quick-start-context';
4
4
 
@@ -6,7 +6,7 @@ export const Box: React.FC<BoxProps> = ({ children, className }) => (
6
6
  <div className={css('pfext-status-box', className)}>{children}</div>
7
7
  );
8
8
 
9
- export const Loading: React.FC<LoadingProps> = ({ className }) => (
9
+ export const Loading: FC<LoadingProps> = ({ className }) => (
10
10
  <div className={css('pfext-m-loader', className)}>
11
11
  <div className="pfext-m-loader-dot__one" />
12
12
  <div className="pfext-m-loader-dot__two" />
@@ -15,7 +15,7 @@ export const Loading: React.FC<LoadingProps> = ({ className }) => (
15
15
  );
16
16
  Loading.displayName = 'Loading';
17
17
 
18
- export const LoadingBox: React.FC<LoadingBoxProps> = ({ className, message }) => (
18
+ export const LoadingBox: FC<LoadingBoxProps> = ({ className, message }) => (
19
19
  <Box className={css('pfext-status-box--loading', className)}>
20
20
  <Loading />
21
21
  {message && <div className="pfext-status-box__loading-message">{message}</div>}
@@ -24,7 +24,7 @@ export const LoadingBox: React.FC<LoadingBoxProps> = ({ className, message }) =>
24
24
  LoadingBox.displayName = 'LoadingBox';
25
25
 
26
26
  export const EmptyBox: React.FC<EmptyBoxProps> = ({ label }) => {
27
- const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
27
+ const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
28
28
  return (
29
29
  <Box>
30
30
  <div data-test="empty-message" className="text-center">
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { FC, useCallback, useContext, useMemo, useState } from 'react';
2
2
  import { Tooltip } from '@patternfly/react-core';
3
3
  import { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';
4
4
  import { useEventListener } from '../../hooks';
@@ -10,14 +10,10 @@ interface CopyClipboardProps {
10
10
  docContext: Document;
11
11
  }
12
12
 
13
- export const CopyClipboard: React.FC<CopyClipboardProps> = ({
14
- element,
15
- rootSelector,
16
- docContext,
17
- }) => {
18
- const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
19
- const [showSuccessContent, setShowSuccessContent] = React.useState<boolean>(false);
20
- const textToCopy = React.useMemo(() => {
13
+ export const CopyClipboard: FC<CopyClipboardProps> = ({ element, rootSelector, docContext }) => {
14
+ const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
15
+ const [showSuccessContent, setShowSuccessContent] = useState<boolean>(false);
16
+ const textToCopy = useMemo(() => {
21
17
  const copyTextId = element.getAttribute(MARKDOWN_COPY_BUTTON_ID);
22
18
  return (
23
19
  docContext.querySelector(
@@ -29,7 +25,7 @@ export const CopyClipboard: React.FC<CopyClipboardProps> = ({
29
25
  useEventListener(
30
26
  element,
31
27
  'click',
32
- React.useCallback(() => {
28
+ useCallback(() => {
33
29
  navigator.clipboard
34
30
  .writeText(textToCopy.trim())
35
31
  .then(() => {
@@ -42,7 +38,7 @@ export const CopyClipboard: React.FC<CopyClipboardProps> = ({
42
38
  useEventListener(
43
39
  element,
44
40
  'mouseleave',
45
- React.useCallback(() => {
41
+ useCallback(() => {
46
42
  setShowSuccessContent(false);
47
43
  }, []),
48
44
  );
@@ -70,10 +66,7 @@ interface MarkdownCopyClipboardProps {
70
66
  rootSelector: string;
71
67
  }
72
68
 
73
- const MarkdownCopyClipboard: React.FC<MarkdownCopyClipboardProps> = ({
74
- docContext,
75
- rootSelector,
76
- }) => {
69
+ const MarkdownCopyClipboard: FC<MarkdownCopyClipboardProps> = ({ docContext, rootSelector }) => {
77
70
  const elements = docContext.querySelectorAll(`${rootSelector} [${MARKDOWN_COPY_BUTTON_ID}]`);
78
71
  return elements.length > 0 ? (
79
72
  <>
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import { shallow } from 'enzyme';
3
2
  import MarkdownCopyClipboard, { CopyClipboard } from '../MarkdownCopyClipboard';
4
3
  import { htmlDocumentForCopyClipboard } from './test-data';
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { useMemo } from 'react';
2
2
  import {
3
3
  Accordion,
4
4
  AccordionItem,
@@ -10,7 +10,7 @@ import { removeTemplateWhitespace } from './utils';
10
10
  import { ACCORDION_MARKDOWN_BUTTON_ID, ACCORDION_MARKDOWN_CONTENT_ID } from './const';
11
11
 
12
12
  const useAccordionShowdownExtension = () =>
13
- React.useMemo(
13
+ useMemo(
14
14
  () => ({
15
15
  type: 'lang',
16
16
  regex: /\[(.+)]{{(accordion) ("(.*?)")}}/g,
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { FC, useState } from 'react';
2
2
  import { useEventListener } from '../../hooks';
3
3
  import { ACCORDION_MARKDOWN_BUTTON_ID, ACCORDION_MARKDOWN_CONTENT_ID } from './const';
4
4
 
@@ -7,11 +7,11 @@ interface AccordionShowdownComponentProps {
7
7
  contentElement: HTMLElement;
8
8
  }
9
9
 
10
- const AccordionShowdownHandler: React.FC<AccordionShowdownComponentProps> = ({
10
+ const AccordionShowdownHandler: FC<AccordionShowdownComponentProps> = ({
11
11
  buttonElement,
12
12
  contentElement,
13
13
  }) => {
14
- const [expanded, setExpanded] = React.useState<boolean>(false);
14
+ const [expanded, setExpanded] = useState<boolean>(false);
15
15
 
16
16
  const handleClick = () => {
17
17
  const expandedModifier = 'pf-m-expanded';
@@ -33,7 +33,7 @@ interface accordionRenderExtensionProps {
33
33
  docContext: Document;
34
34
  }
35
35
 
36
- const AccordionRenderExtension: React.FC<accordionRenderExtensionProps> = ({ docContext }) => {
36
+ const AccordionRenderExtension: FC<accordionRenderExtensionProps> = ({ docContext }) => {
37
37
  const buttonElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_BUTTON_ID}]`);
38
38
  const contentElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_CONTENT_ID}]`);
39
39
 
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { useMemo } from 'react';
2
2
  import { removeTemplateWhitespace } from './utils';
3
3
  import { renderToStaticMarkup } from 'react-dom/server';
4
4
  import { Alert } from '@patternfly/react-core';
@@ -24,7 +24,7 @@ const admonitionToAlertVariantMap = {
24
24
 
25
25
  const useAdmonitionShowdownExtension = () =>
26
26
  // const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
27
- React.useMemo(
27
+ useMemo(
28
28
  () => ({
29
29
  type: 'lang',
30
30
  regex: /\[(.+)]{{(admonition) ([\w-]+)}}/g,
@@ -1,10 +1,10 @@
1
- import * as React from 'react';
1
+ import { useMemo } from 'react';
2
2
  import { removeTemplateWhitespace } from './utils';
3
3
  import { renderToStaticMarkup } from 'react-dom/server';
4
4
  import { CodeBlock } from '@patternfly/react-core';
5
5
 
6
6
  const useCodeShowdownExtension = () =>
7
- React.useMemo(
7
+ useMemo(
8
8
  () => ({
9
9
  type: 'output',
10
10
  regex: /<pre><code>(.*?)\n?<\/code><\/pre>/g,
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { useContext, useMemo } from 'react';
2
2
  import { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';
3
3
  import { MARKDOWN_COPY_BUTTON_ID, MARKDOWN_SNIPPET_ID } from './const';
4
4
  import { removeTemplateWhitespace } from './utils';
@@ -6,8 +6,8 @@ import { renderToStaticMarkup } from 'react-dom/server';
6
6
  import CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';
7
7
 
8
8
  const useInlineCopyClipboardShowdownExtension = () => {
9
- const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
10
- return React.useMemo(
9
+ const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
10
+ return useMemo(
11
11
  () => ({
12
12
  type: 'lang',
13
13
  regex: /`([^`](.*?)[^`])`{{copy}}/g,
@@ -1,13 +1,13 @@
1
1
  /* eslint-disable max-len */
2
- import * as React from 'react';
2
+ import { useContext, useMemo } from 'react';
3
3
  import { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';
4
4
  import { MARKDOWN_COPY_BUTTON_ID, MARKDOWN_SNIPPET_ID } from './const';
5
5
  import { renderToStaticMarkup } from 'react-dom/server';
6
6
  import CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';
7
7
 
8
8
  const useMultilineCopyClipboardShowdownExtension = () => {
9
- const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
10
- return React.useMemo(
9
+ const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);
10
+ return useMemo(
11
11
  () => ({
12
12
  type: 'lang',
13
13
  regex: /```[\n]\s*((((?!```).)*?\n)+)\s*```{{copy}}/g,
@@ -1,16 +1,16 @@
1
- import * as React from 'react';
1
+ import { FC, useEffect, useState } from 'react';
2
2
  import { Spotlight } from '../spotlight';
3
3
 
4
4
  interface MarkdownHighlightExtensionProps {
5
5
  docContext: Document;
6
6
  rootSelector: string;
7
7
  }
8
- const MarkdownHighlightExtension: React.FC<MarkdownHighlightExtensionProps> = ({
8
+ const MarkdownHighlightExtension: FC<MarkdownHighlightExtensionProps> = ({
9
9
  docContext,
10
10
  rootSelector,
11
11
  }) => {
12
- const [selector, setSelector] = React.useState<string>(null);
13
- React.useEffect(() => {
12
+ const [selector, setSelector] = useState<string>(null);
13
+ useEffect(() => {
14
14
  const elements = docContext.querySelectorAll(`${rootSelector} [data-highlight]`);
15
15
  let timeoutId: NodeJS.Timeout;
16
16
  function startHighlight(e) {
@@ -29,7 +29,7 @@ const MarkdownHighlightExtension: React.FC<MarkdownHighlightExtensionProps> = ({
29
29
  elements && elements.forEach((elm) => elm.removeEventListener('click', startHighlight));
30
30
  };
31
31
  }, [docContext, rootSelector]);
32
- React.useEffect(() => {
32
+ useEffect(() => {
33
33
  const elements = docContext.querySelectorAll(`${rootSelector} [class^=data-highlight__]`);
34
34
  let timeoutId: NodeJS.Timeout;
35
35
  function startHighlight(e) {
@@ -1,13 +1,13 @@
1
- import * as React from 'react';
1
+ import { FC, Ref } from 'react';
2
2
  import { Modal as PfModal, ModalProps as PfModalProps } from '@patternfly/react-core/deprecated';
3
3
  import { css } from '@patternfly/react-styles';
4
4
 
5
5
  type ModalProps = {
6
6
  isFullScreen?: boolean;
7
- ref?: React.LegacyRef<PfModal>;
7
+ ref?: Ref<PfModal>;
8
8
  } & PfModalProps;
9
9
 
10
- const Modal: React.FC<ModalProps> = ({ isFullScreen = false, className, ...props }) => (
10
+ const Modal: FC<ModalProps> = ({ isFullScreen = false, className, ...props }) => (
11
11
  <PfModal
12
12
  {...props}
13
13
  className={css('pfext-modal', className)}
@@ -1,11 +1,11 @@
1
1
  import { useIsomorphicLayoutEffect } from '@patternfly/react-core';
2
- import * as React from 'react';
3
- import * as ReactDOM from 'react-dom';
2
+ import { useState, ReactNode } from 'react';
3
+ import { createPortal } from 'react-dom';
4
4
 
5
5
  type GetContainer = Element | null | undefined | (() => Element);
6
6
 
7
7
  interface PortalProps {
8
- children: React.ReactNode;
8
+ children: ReactNode;
9
9
  container?: GetContainer;
10
10
  }
11
11
 
@@ -13,13 +13,13 @@ const getContainer = (container: GetContainer): Element | null | undefined =>
13
13
  typeof container === 'function' ? container() : container;
14
14
 
15
15
  const Portal = ({ children, container }: PortalProps) => {
16
- const [containerNode, setContainerNode] = React.useState<Element>();
16
+ const [containerNode, setContainerNode] = useState<Element>();
17
17
 
18
18
  useIsomorphicLayoutEffect(() => {
19
19
  setContainerNode(getContainer(container) || document.body);
20
20
  }, [container]);
21
21
 
22
- return containerNode ? ReactDOM.createPortal(children, containerNode) : null;
22
+ return containerNode ? createPortal(children, containerNode) : null;
23
23
  };
24
24
 
25
25
  export default Portal;
@@ -1,25 +1,25 @@
1
- import * as React from 'react';
1
+ import { ReactNode, useCallback, useEffect, useRef, useState } from 'react';
2
2
  import Portal from './Portal';
3
3
 
4
4
  interface SimplePopperProps {
5
- children: React.ReactNode;
5
+ children: ReactNode;
6
6
  }
7
7
 
8
8
  const SimplePopper = ({ children }: SimplePopperProps) => {
9
9
  const openProp = true;
10
- const nodeRef = React.useRef<Element>();
11
- const popperRef = React.useRef(null);
12
- const [isOpen, setOpenState] = React.useState(openProp);
10
+ const nodeRef = useRef<Element>(null);
11
+ const popperRef = useRef(null);
12
+ const [isOpen, setOpenState] = useState(openProp);
13
13
 
14
- const setOpen = React.useCallback((newOpen: boolean) => {
14
+ const setOpen = useCallback((newOpen: boolean) => {
15
15
  setOpenState(newOpen);
16
16
  }, []);
17
17
 
18
- React.useEffect(() => {
18
+ useEffect(() => {
19
19
  setOpen(openProp);
20
20
  }, [openProp, setOpen]);
21
21
 
22
- const onKeyDown = React.useCallback(
22
+ const onKeyDown = useCallback(
23
23
  (e: KeyboardEvent) => {
24
24
  if (e.keyCode === 27) {
25
25
  setOpen(false);
@@ -28,7 +28,7 @@ const SimplePopper = ({ children }: SimplePopperProps) => {
28
28
  [setOpen],
29
29
  );
30
30
 
31
- const onClickOutside = React.useCallback(
31
+ const onClickOutside = useCallback(
32
32
  (e: MouseEvent) => {
33
33
  if (!nodeRef.current || (e.target instanceof Node && !nodeRef.current.contains(e.target))) {
34
34
  setOpen(false);
@@ -37,7 +37,7 @@ const SimplePopper = ({ children }: SimplePopperProps) => {
37
37
  [setOpen],
38
38
  );
39
39
 
40
- const destroy = React.useCallback(() => {
40
+ const destroy = useCallback(() => {
41
41
  if (popperRef.current) {
42
42
  popperRef.current.destroy();
43
43
  document.removeEventListener('keydown', onKeyDown, true);
@@ -46,7 +46,7 @@ const SimplePopper = ({ children }: SimplePopperProps) => {
46
46
  }
47
47
  }, [onClickOutside, onKeyDown]);
48
48
 
49
- const initialize = React.useCallback(() => {
49
+ const initialize = useCallback(() => {
50
50
  if (!nodeRef.current || !isOpen) {
51
51
  return;
52
52
  }
@@ -54,7 +54,7 @@ const SimplePopper = ({ children }: SimplePopperProps) => {
54
54
  destroy();
55
55
  }, [isOpen, destroy]);
56
56
 
57
- const nodeRefCallback = React.useCallback(
57
+ const nodeRefCallback = useCallback(
58
58
  (node) => {
59
59
  nodeRef.current = node;
60
60
  initialize();
@@ -62,18 +62,18 @@ const SimplePopper = ({ children }: SimplePopperProps) => {
62
62
  [initialize],
63
63
  );
64
64
 
65
- React.useEffect(() => {
65
+ useEffect(() => {
66
66
  initialize();
67
67
  }, [initialize]);
68
68
 
69
- React.useEffect(
69
+ useEffect(
70
70
  () => () => {
71
71
  destroy();
72
72
  },
73
73
  [destroy],
74
74
  );
75
75
 
76
- React.useEffect(() => {
76
+ useEffect(() => {
77
77
  if (!isOpen) {
78
78
  destroy();
79
79
  }
@@ -1,5 +1,5 @@
1
1
  import './spotlight.scss';
2
- import * as React from 'react';
2
+ import { CSSProperties, FC, useEffect, useState } from 'react';
3
3
  import { Portal, SimplePopper } from '../popper';
4
4
 
5
5
  interface InteractiveSpotlightProps {
@@ -16,9 +16,9 @@ const isInViewport = (elementToCheck: Element) => {
16
16
  );
17
17
  };
18
18
 
19
- const InteractiveSpotlight: React.FC<InteractiveSpotlightProps> = ({ element }) => {
19
+ const InteractiveSpotlight: FC<InteractiveSpotlightProps> = ({ element }) => {
20
20
  const { top, bottom, left, right, height, width } = element.getBoundingClientRect();
21
- const style: React.CSSProperties = {
21
+ const style: CSSProperties = {
22
22
  height,
23
23
  width,
24
24
  top,
@@ -26,9 +26,9 @@ const InteractiveSpotlight: React.FC<InteractiveSpotlightProps> = ({ element })
26
26
  bottom,
27
27
  right,
28
28
  };
29
- const [clicked, setClicked] = React.useState(false);
29
+ const [clicked, setClicked] = useState(false);
30
30
 
31
- React.useEffect(() => {
31
+ useEffect(() => {
32
32
  if (!clicked) {
33
33
  if (!isInViewport(element)) {
34
34
  element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { FC, useMemo } from 'react';
2
2
  import InteractiveSpotlight from './InteractiveSpotlight';
3
3
  import StaticSpotlight from './StaticSpotlight';
4
4
 
@@ -7,9 +7,9 @@ interface SpotlightProps {
7
7
  interactive?: boolean;
8
8
  }
9
9
 
10
- const Spotlight: React.FC<SpotlightProps> = ({ selector, interactive }) => {
10
+ const Spotlight: FC<SpotlightProps> = ({ selector, interactive }) => {
11
11
  // if target element is a hidden one return null
12
- const element = React.useMemo(() => {
12
+ const element = useMemo(() => {
13
13
  const highlightElement = document.querySelector(selector);
14
14
  let hiddenElement = highlightElement;
15
15
  while (hiddenElement) {
@@ -1,5 +1,5 @@
1
1
  import './spotlight.scss';
2
- import * as React from 'react';
2
+ import { CSSProperties, FC } from 'react';
3
3
  import { useBoundingClientRect } from '../../hooks';
4
4
  import Portal from '../popper/Portal';
5
5
 
@@ -7,9 +7,9 @@ interface StaticSpotlightProps {
7
7
  element: Element;
8
8
  }
9
9
 
10
- const StaticSpotlight: React.FC<StaticSpotlightProps> = ({ element }) => {
10
+ const StaticSpotlight: FC<StaticSpotlightProps> = ({ element }) => {
11
11
  const clientRect = useBoundingClientRect(element as HTMLElement);
12
- const style: React.CSSProperties = clientRect
12
+ const style: CSSProperties = clientRect
13
13
  ? {
14
14
  top: clientRect.top,
15
15
  left: clientRect.left,