@patternfly/quickstarts 2.1.0 → 2.2.0

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 {
@@ -1620,7 +1623,9 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
1620
1623
  ], renderExtension: (docContext, rootSelector) => (React__namespace.createElement(React__namespace.Fragment, null,
1621
1624
  React__namespace.createElement(MarkdownHighlightExtension, { docContext: docContext, rootSelector: rootSelector }),
1622
1625
  React__namespace.createElement(MarkdownCopyClipboard, { docContext: docContext, rootSelector: rootSelector }),
1623
- markdown && markdown.renderExtension(docContext, rootSelector))), className: className }));
1626
+ markdown &&
1627
+ markdown.renderExtension &&
1628
+ markdown.renderExtension(docContext, rootSelector))), className: className }));
1624
1629
  };
1625
1630
 
1626
1631
  const QuickStartTileDescription = ({ description, prerequisites, }) => {
@@ -2190,11 +2195,10 @@ const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
2190
2195
  };
2191
2196
  const QuickStartPanelContent = (_a) => {
2192
2197
  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);
2198
+ const { getResource, activeQuickStartState } = React__namespace.useContext(QuickStartContext);
2194
2199
  const [contentRef, setContentRef] = React__namespace.useState();
2195
2200
  const shadows = useScrollShadows(contentRef);
2196
2201
  const quickStart = quickStarts.find((qs) => qs.metadata.name === activeQuickStartID);
2197
- const { activeQuickStartState } = React__namespace.useContext(QuickStartContext);
2198
2202
  const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
2199
2203
  useScrollTopOnTaskNumberChange(contentRef, taskNumber);
2200
2204
  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 +2338,111 @@ const QuickStartDrawer = (_a) => {
2334
2338
  React__namespace.createElement(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })));
2335
2339
  };
2336
2340
 
2341
+ const HelpTopicContextDefaults = {
2342
+ helpTopics: [],
2343
+ activeHelpTopic: null,
2344
+ setActiveHelpTopicByName: () => { },
2345
+ filteredHelpTopics: [],
2346
+ setFilteredHelpTopics: () => { },
2347
+ loading: false,
2348
+ };
2349
+ const HelpTopicContext = React__default['default'].createContext(HelpTopicContextDefaults);
2350
+ const useValuesForHelpTopicContext = (value = {}) => {
2351
+ const combinedValue = Object.assign(Object.assign({}, HelpTopicContextDefaults), value);
2352
+ const [loading, setLoading] = React__default['default'].useState(combinedValue.loading);
2353
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
2354
+ const [helpTopics, setHelpTopics] = React__default['default'].useState(combinedValue.helpTopics || []);
2355
+ const [activeHelpTopic, setActiveHelpTopic] = React__default['default'].useState(combinedValue.activeHelpTopic || null);
2356
+ const setActiveHelpTopicByName = React__default['default'].useCallback((helpTopicName) => {
2357
+ const topic = helpTopics.find((t) => {
2358
+ return t.name === helpTopicName;
2359
+ });
2360
+ if (!helpTopicName) {
2361
+ setActiveHelpTopic(null);
2362
+ return;
2363
+ }
2364
+ setActiveHelpTopic(topic);
2365
+ }, [helpTopics]);
2366
+ const [filteredHelpTopics, setFilteredHelpTopics] = React__default['default'].useState(combinedValue.filteredHelpTopics || []);
2367
+ return {
2368
+ helpTopics,
2369
+ activeHelpTopic,
2370
+ setActiveHelpTopicByName,
2371
+ filteredHelpTopics,
2372
+ setFilteredHelpTopics,
2373
+ loading,
2374
+ setLoading,
2375
+ };
2376
+ };
2377
+
2378
+ const HelpTopicPanelContent = (_a) => {
2379
+ var { activeHelpTopic = null, filteredHelpTopics = [], isResizable = true } = _a, props = tslib.__rest(_a, ["activeHelpTopic", "filteredHelpTopics", "isResizable"]);
2380
+ const { setActiveHelpTopicByName } = React__namespace.useContext(HelpTopicContext);
2381
+ const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = React__namespace.useState(false);
2382
+ const toggleHelpTopicMenu = () => {
2383
+ setIsHelpTopicMenuOpen(!isHelpTopicMenuOpen);
2384
+ };
2385
+ const onSelectHelpTopic = (event) => {
2386
+ const topicName = event.currentTarget.id;
2387
+ setActiveHelpTopicByName(topicName);
2388
+ toggleHelpTopicMenu();
2389
+ };
2390
+ const menuItems = filteredHelpTopics.map((topic) => {
2391
+ return (React__namespace.createElement(reactCore.OptionsMenuItem, { key: topic.name, onSelect: onSelectHelpTopic, id: topic.name }, topic.title));
2392
+ });
2393
+ const content = (React__namespace.createElement(reactCore.DrawerPanelContent, Object.assign({ isResizable: isResizable, className: "pfext-quick-start__base" }, props),
2394
+ React__namespace.createElement("div", null,
2395
+ React__namespace.createElement(reactCore.DrawerHead, null,
2396
+ React__namespace.createElement("div", { className: "pfext-quick-start-panel-content__title" },
2397
+ React__namespace.createElement(reactCore.OptionsMenu, { id: 'helptopics', isPlain: true, isOpen: isHelpTopicMenuOpen, toggle: React__namespace.createElement(reactCore.OptionsMenuToggle, { onToggle: toggleHelpTopicMenu, toggleTemplate: React__namespace.createElement(BarsIcon__default['default'], null) }), menuItems: menuItems }),
2398
+ 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))),
2399
+ React__namespace.createElement(reactCore.Divider, null),
2400
+ React__namespace.createElement(reactCore.DrawerPanelBody, { hasNoPadding: true, className: "pfext-quick-start-panel-content__body", "data-test": "content" },
2401
+ React__namespace.createElement(reactCore.Stack, { hasGutter: true },
2402
+ React__namespace.createElement(reactCore.StackItem, { style: { padding: '20px' } },
2403
+ React__namespace.createElement(QuickStartMarkdownView, { content: activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.content })),
2404
+ React__namespace.createElement(reactCore.Divider, null),
2405
+ React__namespace.createElement(reactCore.StackItem, { style: { padding: '20px' } }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links.map((link) => {
2406
+ return React__namespace.createElement(QuickStartMarkdownView, { key: link, content: link });
2407
+ })))))));
2408
+ return content;
2409
+ };
2410
+
2411
+ const HelpTopicContainer = (_a) => {
2412
+ var { helpTopics, children, resourceBundle, language, loading = false, markdown, contextProps } = _a, props = tslib.__rest(_a, ["helpTopics", "children", "resourceBundle", "language", "loading", "markdown", "contextProps"]);
2413
+ const valuesForHelpTopicContext = useValuesForHelpTopicContext(Object.assign({ helpTopics,
2414
+ language, resourceBundle: Object.assign({}, resourceBundle), loading,
2415
+ markdown }, contextProps));
2416
+ React__namespace.useEffect(() => {
2417
+ if (loading !== valuesForHelpTopicContext.loading) {
2418
+ valuesForHelpTopicContext.setLoading(loading);
2419
+ }
2420
+ }, [loading, valuesForHelpTopicContext]);
2421
+ const drawerProps = Object.assign({}, props);
2422
+ return (React__namespace.createElement(HelpTopicContext.Provider, { value: valuesForHelpTopicContext },
2423
+ React__namespace.createElement(HelpTopicDrawer, Object.assign({}, drawerProps), children)));
2424
+ };
2425
+ const HelpTopicDrawer = (_a) => {
2426
+ var {
2427
+ // helpTopics,
2428
+ children } = _a, props = tslib.__rest(_a, ["children"]);
2429
+ const { activeHelpTopic, filteredHelpTopics } = React__namespace.useContext(HelpTopicContext);
2430
+ // Leave here if query param is desired for help topics later
2431
+ // React.useEffect(() => {
2432
+ // const params = new URLSearchParams(window.location.search);
2433
+ // // if there is a quick start param, but the quick start is not active, set it
2434
+ // // this can happen if a new browser session is opened or an incognito window for example
2435
+ // const helpTopicNameFromParam = params.get(HELP_TOPIC_NAME_KEY) || '';
2436
+ // if (helpTopicNameFromParam) {
2437
+ // setActiveHelpTopicByName(helpTopicNameFromParam);
2438
+ // }
2439
+ // }, [inContextHelpTopics, setActiveHelpTopicByName]);
2440
+ const panelContent = (React__namespace.createElement(HelpTopicPanelContent, { activeHelpTopic: activeHelpTopic, filteredHelpTopics: filteredHelpTopics }));
2441
+ return (React__namespace.createElement(React__namespace.Fragment, null,
2442
+ React__namespace.createElement(reactCore.Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props), children ? (React__namespace.createElement(reactCore.DrawerContent, { panelContent: panelContent },
2443
+ React__namespace.createElement(reactCore.DrawerContentBody, { className: "pfext-quick-start-drawer__body" }, children))) : (React__namespace.createElement("div", { className: "pf-c-drawer__main" }, panelContent)))));
2444
+ };
2445
+
2337
2446
  const useLocalStorage = (key, initialValue) => {
2338
2447
  // State to store our value
2339
2448
  // Pass initial state function to useState so logic is only executed once
@@ -2374,6 +2483,11 @@ const useLocalStorage = (key, initialValue) => {
2374
2483
  exports.Box = Box;
2375
2484
  exports.CamelCaseWrap = CamelCaseWrap;
2376
2485
  exports.EmptyBox = EmptyBox;
2486
+ exports.HELP_TOPIC_NAME_KEY = HELP_TOPIC_NAME_KEY;
2487
+ exports.HelpTopicContainer = HelpTopicContainer;
2488
+ exports.HelpTopicContext = HelpTopicContext;
2489
+ exports.HelpTopicContextDefaults = HelpTopicContextDefaults;
2490
+ exports.HelpTopicDrawer = HelpTopicDrawer;
2377
2491
  exports.Loading = Loading;
2378
2492
  exports.LoadingBox = LoadingBox;
2379
2493
  exports.QUICKSTART_ID_FILTER_KEY = QUICKSTART_ID_FILTER_KEY;
@@ -2422,5 +2536,6 @@ exports.isDisabledQuickStart = isDisabledQuickStart;
2422
2536
  exports.removeQueryArgument = removeQueryArgument;
2423
2537
  exports.setQueryArgument = setQueryArgument;
2424
2538
  exports.useLocalStorage = useLocalStorage;
2539
+ exports.useValuesForHelpTopicContext = useValuesForHelpTopicContext;
2425
2540
  exports.useValuesForQuickStartContext = useValuesForQuickStartContext;
2426
2541
  //# sourceMappingURL=index.js.map