@patternfly/quickstarts 2.1.0 → 2.2.2

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.
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ var showdown = require('showdown');
24
24
  var ExternalLinkAltIcon = require('@patternfly/react-icons/dist/js/icons/external-link-alt-icon');
25
25
  var OutlinedClockIcon = require('@patternfly/react-icons/dist/js/icons/outlined-clock-icon');
26
26
  var ArrowRightIcon = require('@patternfly/react-icons/dist/js/icons/arrow-right-icon');
27
+ var BarsIcon = require('@patternfly/react-icons/dist/js/icons/bars-icon');
27
28
 
28
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
29
30
 
@@ -62,6 +63,7 @@ var InfoCircleIcon__default = /*#__PURE__*/_interopDefaultLegacy(InfoCircleIcon)
62
63
  var ExternalLinkAltIcon__default = /*#__PURE__*/_interopDefaultLegacy(ExternalLinkAltIcon);
63
64
  var OutlinedClockIcon__default = /*#__PURE__*/_interopDefaultLegacy(OutlinedClockIcon);
64
65
  var ArrowRightIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowRightIcon);
66
+ var BarsIcon__default = /*#__PURE__*/_interopDefaultLegacy(BarsIcon);
65
67
 
66
68
  function _extends() {
67
69
  _extends = Object.assign || function (target) {
@@ -113,7 +115,8 @@ const QUICKSTART_ID_FILTER_KEY = 'quickstart';
113
115
  const QUICKSTART_TASKS_INITIAL_STATES = [
114
116
  exports.QuickStartTaskStatus.INIT,
115
117
  exports.QuickStartTaskStatus.VISITED,
116
- ];
118
+ ];
119
+ const HELP_TOPIC_NAME_KEY = 'topic';
117
120
 
118
121
  let createHistory;
119
122
  try {
@@ -1354,6 +1357,20 @@ const useAdmonitionShowdownExtension = () => {
1354
1357
  }), []);
1355
1358
  };
1356
1359
 
1360
+ const useCodeShowdownExtension = () => {
1361
+ return React__namespace.useMemo(() => ({
1362
+ type: 'output',
1363
+ regex: /<pre><code>(.*?)\n?<\/code><\/pre>/g,
1364
+ replace: (text, content) => {
1365
+ if (!content) {
1366
+ return text;
1367
+ }
1368
+ const pfCodeBlock = React__namespace.createElement(reactCore.CodeBlock, null, content);
1369
+ return removeTemplateWhitespace(server.renderToStaticMarkup(pfCodeBlock));
1370
+ },
1371
+ }), []);
1372
+ };
1373
+
1357
1374
  const FallbackImg = ({ src, alt, className, fallback }) => {
1358
1375
  const [isSrcValid, setIsSrcValid] = React__namespace.useState(true);
1359
1376
  if (src && isSrcValid) {
@@ -1594,6 +1611,7 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
1594
1611
  const inlineCopyClipboardShowdownExtension = useInlineCopyClipboardShowdownExtension();
1595
1612
  const multilineCopyClipboardShowdownExtension = useMultilineCopyClipboardShowdownExtension();
1596
1613
  const admonitionShowdownExtension = useAdmonitionShowdownExtension();
1614
+ const codeShowdownExtension = useCodeShowdownExtension();
1597
1615
  return (React__namespace.createElement(SyncMarkdownView, { inline: true, content: content, exactHeight: exactHeight, extensions: [
1598
1616
  {
1599
1617
  type: 'lang',
@@ -1616,11 +1634,14 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
1616
1634
  inlineCopyClipboardShowdownExtension,
1617
1635
  multilineCopyClipboardShowdownExtension,
1618
1636
  admonitionShowdownExtension,
1637
+ codeShowdownExtension,
1619
1638
  ...(markdown ? markdown.extensions : []),
1620
1639
  ], renderExtension: (docContext, rootSelector) => (React__namespace.createElement(React__namespace.Fragment, null,
1621
1640
  React__namespace.createElement(MarkdownHighlightExtension, { docContext: docContext, rootSelector: rootSelector }),
1622
1641
  React__namespace.createElement(MarkdownCopyClipboard, { docContext: docContext, rootSelector: rootSelector }),
1623
- markdown && markdown.renderExtension(docContext, rootSelector))), className: className }));
1642
+ markdown &&
1643
+ markdown.renderExtension &&
1644
+ markdown.renderExtension(docContext, rootSelector))), className: className }));
1624
1645
  };
1625
1646
 
1626
1647
  const QuickStartTileDescription = ({ description, prerequisites, }) => {
@@ -1733,7 +1754,7 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, })
1733
1754
 
1734
1755
  const QuickStartCatalog = ({ quickStarts }) => {
1735
1756
  const { activeQuickStartID, allQuickStartStates } = React__namespace.useContext(QuickStartContext);
1736
- return (React__namespace.createElement("div", { className: "pfext-page-layout__content pfext-is-dark" },
1757
+ return (React__namespace.createElement("div", { className: "pfext-page-layout__content" },
1737
1758
  React__namespace.createElement(reactCore.Gallery, { className: "pfext-quick-start-catalog__gallery", hasGutter: true }, quickStarts.map((quickStart) => {
1738
1759
  const { metadata: { name: id }, } = quickStart;
1739
1760
  return (React__namespace.createElement(reactCore.GalleryItem, { key: id, className: "pfext-quick-start-catalog__gallery-item" },
@@ -1938,7 +1959,7 @@ const QuickStartCatalogHeader = ({ title, hint, }) => (React__namespace.createEl
1938
1959
  React__namespace.createElement("h1", { "data-pf-content": "true", className: "pfext-page-layout__title" }, title),
1939
1960
  hint && React__namespace.createElement("div", { className: "pfext-page-layout__hint" }, hint)));
1940
1961
 
1941
- const QuickStartCatalogSection = ({ children }) => (React__namespace.createElement("div", { className: "pfext-page-layout__content pfext-is-dark" }, children));
1962
+ const QuickStartCatalogSection = ({ children }) => (React__namespace.createElement("div", { className: "pfext-page-layout__content" }, children));
1942
1963
 
1943
1964
  const QuickStartCatalogToolbar = ({ children }) => (React__namespace.createElement(reactCore.Toolbar, { usePageInsets: true, className: "pfext-quick-start-catalog-filter__flex" }, children));
1944
1965
 
@@ -2190,11 +2211,10 @@ const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
2190
2211
  };
2191
2212
  const QuickStartPanelContent = (_a) => {
2192
2213
  var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true, headerVariant = '' } = _a, props = tslib.__rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose", "headerVariant"]);
2193
- const { getResource } = React__namespace.useContext(QuickStartContext);
2214
+ const { getResource, activeQuickStartState } = React__namespace.useContext(QuickStartContext);
2194
2215
  const [contentRef, setContentRef] = React__namespace.useState();
2195
2216
  const shadows = useScrollShadows(contentRef);
2196
2217
  const quickStart = quickStarts.find((qs) => qs.metadata.name === activeQuickStartID);
2197
- const { activeQuickStartState } = React__namespace.useContext(QuickStartContext);
2198
2218
  const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
2199
2219
  useScrollTopOnTaskNumberChange(contentRef, taskNumber);
2200
2220
  const nextQuickStarts = quickStarts.filter((qs) => { var _a; return (_a = quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.nextQuickStart) === null || _a === void 0 ? void 0 : _a.includes(qs.metadata.name); });
@@ -2334,6 +2354,115 @@ const QuickStartDrawer = (_a) => {
2334
2354
  React__namespace.createElement(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })));
2335
2355
  };
2336
2356
 
2357
+ const HelpTopicContextDefaults = {
2358
+ helpTopics: [],
2359
+ setHelpTopics: () => { },
2360
+ activeHelpTopic: null,
2361
+ setActiveHelpTopicByName: () => { },
2362
+ filteredHelpTopics: [],
2363
+ setFilteredHelpTopics: () => { },
2364
+ loading: false,
2365
+ };
2366
+ const HelpTopicContext = React__default['default'].createContext(HelpTopicContextDefaults);
2367
+ const useValuesForHelpTopicContext = (value = {}) => {
2368
+ const combinedValue = Object.assign(Object.assign({}, HelpTopicContextDefaults), value);
2369
+ const [loading, setLoading] = React__default['default'].useState(combinedValue.loading);
2370
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
2371
+ const [helpTopics, setHelpTopics] = React__default['default'].useState(combinedValue.helpTopics || []);
2372
+ const [activeHelpTopic, setActiveHelpTopic] = React__default['default'].useState(combinedValue.activeHelpTopic || null);
2373
+ const setActiveHelpTopicByName = React__default['default'].useCallback((helpTopicName) => {
2374
+ const topic = helpTopics.find((t) => {
2375
+ return t.name === helpTopicName;
2376
+ });
2377
+ if (!helpTopicName) {
2378
+ setActiveHelpTopic(null);
2379
+ return;
2380
+ }
2381
+ setActiveHelpTopic(topic);
2382
+ }, [helpTopics]);
2383
+ const [filteredHelpTopics, setFilteredHelpTopics] = React__default['default'].useState(combinedValue.filteredHelpTopics || []);
2384
+ return {
2385
+ helpTopics,
2386
+ setHelpTopics,
2387
+ activeHelpTopic,
2388
+ setActiveHelpTopicByName,
2389
+ filteredHelpTopics,
2390
+ setFilteredHelpTopics,
2391
+ loading,
2392
+ setLoading,
2393
+ };
2394
+ };
2395
+
2396
+ const HelpTopicPanelContent = (_a) => {
2397
+ var _b, _c;
2398
+ var { activeHelpTopic = null, filteredHelpTopics = [], isResizable = true, onClose } = _a, props = tslib.__rest(_a, ["activeHelpTopic", "filteredHelpTopics", "isResizable", "onClose"]);
2399
+ const { setActiveHelpTopicByName } = React__namespace.useContext(HelpTopicContext);
2400
+ const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = React__namespace.useState(false);
2401
+ const toggleHelpTopicMenu = () => {
2402
+ setIsHelpTopicMenuOpen(!isHelpTopicMenuOpen);
2403
+ };
2404
+ const onSelectHelpTopic = (event) => {
2405
+ const topicName = event.currentTarget.id;
2406
+ setActiveHelpTopicByName(topicName);
2407
+ toggleHelpTopicMenu();
2408
+ };
2409
+ const menuItems = filteredHelpTopics.length > 0 &&
2410
+ filteredHelpTopics.map((topic) => {
2411
+ return (React__namespace.createElement(reactCore.OptionsMenuItem, { key: topic.name, onSelect: onSelectHelpTopic, id: topic.name }, topic.title));
2412
+ });
2413
+ const paddingContainer = (children) => React__namespace.createElement("div", { style: { padding: '24px' } }, children);
2414
+ const panelBodyItems = (React__namespace.createElement(React__namespace.Fragment, null,
2415
+ paddingContainer(React__namespace.createElement(QuickStartMarkdownView, { content: activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.content })),
2416
+ ((_b = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _b === void 0 ? void 0 : _b.length) && React__namespace.createElement(reactCore.Divider, null),
2417
+ paddingContainer(React__namespace.createElement(reactCore.Stack, { hasGutter: true }, (_c = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _c === void 0 ? void 0 : _c.map(({ href, text, newTab, isExternal }, index) => {
2418
+ return (React__namespace.createElement(reactCore.StackItem, { key: index },
2419
+ React__namespace.createElement(reactCore.Button, { component: "a", href: href, target: newTab ? '_blank' : '', rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: isExternal ? React__namespace.createElement(ExternalLinkAltIcon__default['default'], null) : null, iconPosition: "right", style: { fontSize: 'inherit' } }, text || href)));
2420
+ })))));
2421
+ const content = (React__namespace.createElement(reactCore.DrawerPanelContent, Object.assign({ isResizable: isResizable, className: "pfext-quick-start__base" }, props),
2422
+ React__namespace.createElement("div", null,
2423
+ React__namespace.createElement(reactCore.DrawerHead, null,
2424
+ React__namespace.createElement("div", { className: "pfext-quick-start-panel-content__title" },
2425
+ menuItems && (React__namespace.createElement(reactCore.OptionsMenu, { id: 'helptopics', isPlain: true, isOpen: isHelpTopicMenuOpen, toggle: React__namespace.createElement(reactCore.OptionsMenuToggle, { style: { paddingLeft: '0px' }, onToggle: toggleHelpTopicMenu, toggleTemplate: React__namespace.createElement(BarsIcon__default['default'], null) }), menuItems: menuItems })),
2426
+ React__namespace.createElement(reactCore.Title, { headingLevel: "h1", size: "xl", className: "pfext-quick-start-panel-content__name", style: { marginRight: 'var(--pf-global--spacer--md)' } }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)),
2427
+ React__namespace.createElement(reactCore.DrawerActions, null,
2428
+ React__namespace.createElement(reactCore.DrawerCloseButton, { onClick: onClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))),
2429
+ React__namespace.createElement(reactCore.Divider, null),
2430
+ React__namespace.createElement(reactCore.DrawerPanelBody, { hasNoPadding: true, className: "pfext-quick-start-panel-content__body", "data-test": "content" }, panelBodyItems))));
2431
+ return content;
2432
+ };
2433
+
2434
+ const HelpTopicContainer = (_a) => {
2435
+ var { helpTopics, children, resourceBundle, language, loading = false, markdown, contextProps } = _a, props = tslib.__rest(_a, ["helpTopics", "children", "resourceBundle", "language", "loading", "markdown", "contextProps"]);
2436
+ const valuesForHelpTopicContext = useValuesForHelpTopicContext(Object.assign({ helpTopics,
2437
+ language, resourceBundle: Object.assign({}, resourceBundle), loading,
2438
+ markdown }, contextProps));
2439
+ React__namespace.useEffect(() => {
2440
+ if (loading !== valuesForHelpTopicContext.loading) {
2441
+ valuesForHelpTopicContext.setLoading(loading);
2442
+ }
2443
+ }, [loading, valuesForHelpTopicContext]);
2444
+ React__namespace.useEffect(() => {
2445
+ if (helpTopics &&
2446
+ JSON.stringify(helpTopics) !== JSON.stringify(valuesForHelpTopicContext.helpTopics)) {
2447
+ valuesForHelpTopicContext.setHelpTopics(helpTopics);
2448
+ }
2449
+ }, [helpTopics, valuesForHelpTopicContext]);
2450
+ const drawerProps = Object.assign({}, props);
2451
+ return (React__namespace.createElement(HelpTopicContext.Provider, { value: valuesForHelpTopicContext },
2452
+ React__namespace.createElement(HelpTopicDrawer, Object.assign({}, drawerProps), children)));
2453
+ };
2454
+ const HelpTopicDrawer = (_a) => {
2455
+ var { children } = _a, props = tslib.__rest(_a, ["children"]);
2456
+ const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } = React__namespace.useContext(HelpTopicContext);
2457
+ const onClose = () => {
2458
+ setActiveHelpTopicByName('');
2459
+ };
2460
+ const panelContent = (React__namespace.createElement(HelpTopicPanelContent, { activeHelpTopic: activeHelpTopic, filteredHelpTopics: filteredHelpTopics, onClose: onClose }));
2461
+ return (React__namespace.createElement(React__namespace.Fragment, null,
2462
+ React__namespace.createElement(reactCore.Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props), children ? (React__namespace.createElement(reactCore.DrawerContent, { panelContent: panelContent },
2463
+ React__namespace.createElement(reactCore.DrawerContentBody, { className: "pfext-quick-start-drawer__body" }, children))) : (React__namespace.createElement("div", { className: "pf-c-drawer__main" }, panelContent)))));
2464
+ };
2465
+
2337
2466
  const useLocalStorage = (key, initialValue) => {
2338
2467
  // State to store our value
2339
2468
  // Pass initial state function to useState so logic is only executed once
@@ -2374,6 +2503,11 @@ const useLocalStorage = (key, initialValue) => {
2374
2503
  exports.Box = Box;
2375
2504
  exports.CamelCaseWrap = CamelCaseWrap;
2376
2505
  exports.EmptyBox = EmptyBox;
2506
+ exports.HELP_TOPIC_NAME_KEY = HELP_TOPIC_NAME_KEY;
2507
+ exports.HelpTopicContainer = HelpTopicContainer;
2508
+ exports.HelpTopicContext = HelpTopicContext;
2509
+ exports.HelpTopicContextDefaults = HelpTopicContextDefaults;
2510
+ exports.HelpTopicDrawer = HelpTopicDrawer;
2377
2511
  exports.Loading = Loading;
2378
2512
  exports.LoadingBox = LoadingBox;
2379
2513
  exports.QUICKSTART_ID_FILTER_KEY = QUICKSTART_ID_FILTER_KEY;
@@ -2422,5 +2556,6 @@ exports.isDisabledQuickStart = isDisabledQuickStart;
2422
2556
  exports.removeQueryArgument = removeQueryArgument;
2423
2557
  exports.setQueryArgument = setQueryArgument;
2424
2558
  exports.useLocalStorage = useLocalStorage;
2559
+ exports.useValuesForHelpTopicContext = useValuesForHelpTopicContext;
2425
2560
  exports.useValuesForQuickStartContext = useValuesForQuickStartContext;
2426
2561
  //# sourceMappingURL=index.js.map