@patternfly/quickstarts 2.0.1 → 2.1.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
@@ -11,6 +11,8 @@ var tslib = require('tslib');
11
11
  var ReactDOM = require('react-dom');
12
12
  var server = require('react-dom/server');
13
13
  var CopyIcon = require('@patternfly/react-icons/dist/js/icons/copy-icon');
14
+ var LightbulbIcon = require('@patternfly/react-icons/dist/js/icons/lightbulb-icon');
15
+ var FireIcon = require('@patternfly/react-icons/dist/js/icons/fire-icon');
14
16
  var SyncAltIcon = require('@patternfly/react-icons/dist/js/icons/sync-alt-icon');
15
17
  var CheckCircleIcon = require('@patternfly/react-icons/dist/js/icons/check-circle-icon');
16
18
  var ExclamationCircleIcon = require('@patternfly/react-icons/dist/js/icons/exclamation-circle-icon');
@@ -51,6 +53,8 @@ var SearchIcon__default = /*#__PURE__*/_interopDefaultLegacy(SearchIcon);
51
53
  var RocketIcon__default = /*#__PURE__*/_interopDefaultLegacy(RocketIcon);
52
54
  var ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);
53
55
  var CopyIcon__default = /*#__PURE__*/_interopDefaultLegacy(CopyIcon);
56
+ var LightbulbIcon__default = /*#__PURE__*/_interopDefaultLegacy(LightbulbIcon);
57
+ var FireIcon__default = /*#__PURE__*/_interopDefaultLegacy(FireIcon);
54
58
  var SyncAltIcon__default = /*#__PURE__*/_interopDefaultLegacy(SyncAltIcon);
55
59
  var CheckCircleIcon__default = /*#__PURE__*/_interopDefaultLegacy(CheckCircleIcon);
56
60
  var ExclamationCircleIcon__default = /*#__PURE__*/_interopDefaultLegacy(ExclamationCircleIcon);
@@ -164,6 +168,7 @@ var Yes = "Yes";
164
168
  var No = "No";
165
169
  var Cancel = "Cancel";
166
170
  var Leave = "Leave";
171
+ var Type = "Quick start";
167
172
  var en = {
168
173
  "No results found": "No results found",
169
174
  "No results match the filter criteria. Remove filters or clear all filters to show results.": "No results match the filter criteria. Remove filters or clear all filters to show results.",
@@ -207,7 +212,8 @@ var en = {
207
212
  "Not available": "Not available",
208
213
  "Copy to clipboard": "Copy to clipboard",
209
214
  "Successfully copied to clipboard!": "Successfully copied to clipboard!",
210
- "Quick start • {{duration, number}} minutes": "Quick start • {{duration, number}} minutes"
215
+ Type: Type,
216
+ "{{type}} • {{duration, number}} minutes": "{{type}} • {{duration, number}} minutes"
211
217
  };
212
218
 
213
219
  /* eslint-disable */
@@ -620,7 +626,7 @@ const QuickStartContextDefaults = {
620
626
  useLegacyHeaderColors: false,
621
627
  markdown: null,
622
628
  loading: false,
623
- alwaysShowTaskReview: false,
629
+ alwaysShowTaskReview: true,
624
630
  };
625
631
  const QuickStartContext = React.createContext(QuickStartContextDefaults);
626
632
  const getResource = (resource, options, resourceBundle, lng) => {
@@ -717,7 +723,7 @@ const useValuesForQuickStartContext = (value = {}) => {
717
723
  useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, id);
718
724
  return id;
719
725
  });
720
- setAllQuickStartStates((qs) => (Object.assign(Object.assign({}, qs), { [quickStartId]: getDefaultQuickStartState(totalTasks, exports.QuickStartStatus.IN_PROGRESS) })));
726
+ setAllQuickStartStates((qs) => (Object.assign(Object.assign({}, qs), { [quickStartId]: getDefaultQuickStartState(totalTasks, exports.QuickStartStatus.NOT_STARTED) })));
721
727
  }, [setActiveQuickStartID, setAllQuickStartStates, useQueryParams]);
722
728
  // When alwaysShowTaskReview preference is enabled, skip visited step and go directly to review
723
729
  const stepAfterInitial = alwaysShowTaskReview
@@ -1315,6 +1321,39 @@ const useMultilineCopyClipboardShowdownExtension = () => {
1315
1321
  }), [getResource]);
1316
1322
  };
1317
1323
 
1324
+ var AdmonitionType;
1325
+ (function (AdmonitionType) {
1326
+ AdmonitionType["TIP"] = "TIP";
1327
+ AdmonitionType["NOTE"] = "NOTE";
1328
+ AdmonitionType["IMPORTANT"] = "IMPORTANT";
1329
+ AdmonitionType["WARNING"] = "WARNING";
1330
+ AdmonitionType["CAUTION"] = "CAUTION";
1331
+ })(AdmonitionType || (AdmonitionType = {}));
1332
+ const admonitionToAlertVariantMap = {
1333
+ [AdmonitionType.NOTE]: { variant: 'info' },
1334
+ [AdmonitionType.TIP]: { variant: 'default', customIcon: React__namespace.createElement(LightbulbIcon__default['default'], null) },
1335
+ [AdmonitionType.IMPORTANT]: { variant: 'danger' },
1336
+ [AdmonitionType.CAUTION]: { variant: 'warning', customIcon: React__namespace.createElement(FireIcon__default['default'], null) },
1337
+ [AdmonitionType.WARNING]: { variant: 'warning' },
1338
+ };
1339
+ const useAdmonitionShowdownExtension = () => {
1340
+ // const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
1341
+ return React__namespace.useMemo(() => ({
1342
+ type: 'lang',
1343
+ regex: /\[([\d\w\s-()$!]+)]{{(admonition) ([\w-]+)}}/g,
1344
+ replace: (text, content, admonitionLabel, admonitionType, groupId) => {
1345
+ if (!content || !admonitionLabel || !admonitionType || !groupId) {
1346
+ return text;
1347
+ }
1348
+ admonitionType = admonitionType.toUpperCase();
1349
+ const { variant, customIcon } = admonitionToAlertVariantMap[admonitionType];
1350
+ const style = admonitionType === AdmonitionType.CAUTION ? { backgroundColor: '#ec7a0915' } : {};
1351
+ const pfAlert = (React__namespace.createElement(reactCore.Alert, { variant: variant, customIcon: customIcon && customIcon, isInline: true, title: admonitionType, className: "pfext-markdown-admonition", style: style }, content));
1352
+ return removeTemplateWhitespace(server.renderToStaticMarkup(pfAlert));
1353
+ },
1354
+ }), []);
1355
+ };
1356
+
1318
1357
  const FallbackImg = ({ src, alt, className, fallback }) => {
1319
1358
  const [isSrcValid, setIsSrcValid] = React__namespace.useState(true);
1320
1359
  if (src && isSrcValid) {
@@ -1392,13 +1431,31 @@ const markdownConvert = (markdown, extensions) => {
1392
1431
  if (extensions) {
1393
1432
  converter.addExtension(extensions);
1394
1433
  }
1395
- // add hook to transform anchor tags
1396
1434
  DOMPurify.addHook('beforeSanitizeElements', function (node) {
1397
1435
  // nodeType 1 = element type
1436
+ // transform anchor tags
1398
1437
  if (node.nodeType === 1 && node.nodeName.toLowerCase() === 'a') {
1399
1438
  node.setAttribute('rel', 'noopener noreferrer');
1400
1439
  return node;
1401
1440
  }
1441
+ // add PF class to ul and ol lists
1442
+ if (node.nodeType === 1 &&
1443
+ (node.nodeName.toLowerCase() === 'ul' || node.nodeName.toLowerCase() === 'ol')) {
1444
+ node.setAttribute('class', 'pf-c-list');
1445
+ return node;
1446
+ }
1447
+ });
1448
+ // Add a hook to make all links open a new window
1449
+ DOMPurify.addHook('afterSanitizeAttributes', function (node) {
1450
+ // set all elements owning target to target=_blank
1451
+ if ('target' in node) {
1452
+ node.setAttribute('target', '_blank');
1453
+ }
1454
+ // set non-HTML/MathML links to xlink:show=new
1455
+ if (!node.hasAttribute('target') &&
1456
+ (node.hasAttribute('xlink:href') || node.hasAttribute('href'))) {
1457
+ node.setAttribute('xlink:show', 'new');
1458
+ }
1402
1459
  });
1403
1460
  return DOMPurify.sanitize(converter.makeHtml(markdown), {
1404
1461
  USE_PROFILES: {
@@ -1536,6 +1593,7 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
1536
1593
  const { markdown } = React__namespace.useContext(QuickStartContext);
1537
1594
  const inlineCopyClipboardShowdownExtension = useInlineCopyClipboardShowdownExtension();
1538
1595
  const multilineCopyClipboardShowdownExtension = useMultilineCopyClipboardShowdownExtension();
1596
+ const admonitionShowdownExtension = useAdmonitionShowdownExtension();
1539
1597
  return (React__namespace.createElement(SyncMarkdownView, { inline: true, content: content, exactHeight: exactHeight, extensions: [
1540
1598
  {
1541
1599
  type: 'lang',
@@ -1557,6 +1615,7 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
1557
1615
  },
1558
1616
  inlineCopyClipboardShowdownExtension,
1559
1617
  multilineCopyClipboardShowdownExtension,
1618
+ admonitionShowdownExtension,
1560
1619
  ...(markdown ? markdown.extensions : []),
1561
1620
  ], renderExtension: (docContext, rootSelector) => (React__namespace.createElement(React__namespace.Fragment, null,
1562
1621
  React__namespace.createElement(MarkdownHighlightExtension, { docContext: docContext, rootSelector: rootSelector }),
@@ -1667,7 +1726,9 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, })
1667
1726
  // @ts-ignore
1668
1727
  component: "div", style: {
1669
1728
  cursor: 'pointer',
1670
- }, icon: quickStartIcon, className: "pfext-quick-start-tile", "data-testid": `qs-card-${camelize(displayName)}`, featured: isActive, title: React__namespace.createElement(QuickStartTileHeader, { name: displayName, status: status, duration: durationMinutes, type: type, quickStartId: id }), onClick: handleClick, "data-test": `tile ${id}`, description: React__namespace.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }), footer: footerComponent })));
1729
+ }, icon: quickStartIcon, className: "pfext-quick-start-tile", "data-testid": `qs-card-${camelize(displayName)}`, featured: isActive, title: React__namespace.createElement(QuickStartTileHeader, { name: displayName, status: status, duration: durationMinutes, type: type, quickStartId: id }), onClick: handleClick,
1730
+ // https://github.com/patternfly/patternfly-react/issues/7039
1731
+ href: "#", "data-test": `tile ${id}`, description: React__namespace.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }), footer: footerComponent })));
1671
1732
  };
1672
1733
 
1673
1734
  const QuickStartCatalog = ({ quickStarts }) => {
@@ -1818,7 +1879,9 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
1818
1879
  const filteredQs = showFilter
1819
1880
  ? filterQuickStarts(allQuickStarts, filter.keyword, filter.status.statusFilters, allQuickStartStates).sort(sortFncCallback)
1820
1881
  : allQuickStarts;
1821
- if (filteredQs.length !== filteredQuickStarts.length) {
1882
+ // also needs a check whether the content of the QS changed
1883
+ if (filteredQs.length !== filteredQuickStarts.length ||
1884
+ JSON.stringify(filteredQs) !== JSON.stringify(filteredQuickStarts)) {
1822
1885
  setFilteredQuickStarts(filteredQs);
1823
1886
  }
1824
1887
  }, [
@@ -1907,14 +1970,17 @@ const TaskIcon = ({ taskIndex, taskStatus }) => {
1907
1970
  }
1908
1971
  return React__namespace.createElement("span", { className: classNames }, content);
1909
1972
  };
1910
- const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, isActiveTask, onTaskSelect, }) => {
1973
+ const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, isActiveTask, onTaskSelect, children, }) => {
1911
1974
  const classNames = reactStyles.css('pfext-quick-start-task-header__title', {
1912
1975
  'pfext-quick-start-task-header__title-success': taskStatus === exports.QuickStartTaskStatus.SUCCESS,
1913
1976
  'pfext-quick-start-task-header__title-failed': taskStatus === (exports.QuickStartTaskStatus.FAILED || exports.QuickStartTaskStatus.VISITED),
1914
1977
  });
1915
- const notCompleted = taskStatus === exports.QuickStartTaskStatus.VISITED;
1916
- const skippedReviewOrFailed = taskStatus === exports.QuickStartTaskStatus.REVIEW || taskStatus === exports.QuickStartTaskStatus.FAILED;
1917
- const tryAgain = !isActiveTask && (skippedReviewOrFailed || notCompleted) && (React__namespace.createElement(React__namespace.Fragment, null,
1978
+ // const notCompleted = taskStatus === QuickStartTaskStatus.VISITED;
1979
+ // const skippedReview = taskStatus === QuickStartTaskStatus.REVIEW;
1980
+ const failedReview = taskStatus === exports.QuickStartTaskStatus.FAILED;
1981
+ // TODO: toned down when this is shown, investigate further when we should display it
1982
+ // related: https://github.com/patternfly/patternfly-quickstarts/issues/104
1983
+ const tryAgain = failedReview && (React__namespace.createElement(React__namespace.Fragment, null,
1918
1984
  React__namespace.createElement("div", null),
1919
1985
  React__namespace.createElement("div", { className: "pfext-quick-start-task-header__tryagain" }, "Try the steps again.")));
1920
1986
  const content = (React__namespace.createElement("div", { className: "pfext-quick-start-task-header" },
@@ -1925,7 +1991,7 @@ const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, is
1925
1991
  ' ',
1926
1992
  subtitle))),
1927
1993
  tryAgain));
1928
- return (React__namespace.createElement(reactCore.WizardNavItem, { content: content, step: taskIndex, onNavItemClick: () => onTaskSelect(taskIndex - 1), navItemComponent: "button", isCurrent: isActiveTask }));
1994
+ return (React__namespace.createElement(reactCore.WizardNavItem, { content: content, step: taskIndex, onNavItemClick: () => onTaskSelect(taskIndex - 1), navItemComponent: "button", isCurrent: isActiveTask }, children));
1929
1995
  };
1930
1996
 
1931
1997
  const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => {
@@ -1959,7 +2025,8 @@ const QuickStartIntroduction = ({ tasks, introduction, allTaskStatuses, prerequi
1959
2025
  const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (React__namespace.createElement(reactCore.ExpandableSection, { toggleText: getResource('View Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), onToggle: () => setIsPrereqsExpanded(!isPrereqsExpanded), className: "pfext-quick-start-intro__prereq" },
1960
2026
  React__namespace.createElement(reactCore.List, { className: "pfext-quick-start-intro__prereq-list" }, prereqs.map((pr) => {
1961
2027
  return (React__namespace.createElement(reactCore.ListItem, { key: pr, className: "pfext-quick-start-intro__prereq-list__item" },
1962
- React__namespace.createElement("span", { className: "pfext-quick-start-intro__prereq-list__item-content" }, pr)));
2028
+ React__namespace.createElement("span", { className: "pfext-quick-start-intro__prereq-list__item-content" },
2029
+ React__namespace.createElement(QuickStartMarkdownView, { content: pr }))));
1963
2030
  }))));
1964
2031
  return (React__namespace.createElement(React__namespace.Fragment, null,
1965
2032
  React__namespace.createElement(QuickStartMarkdownView, { content: introduction }),
@@ -1988,7 +2055,7 @@ const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
1988
2055
  'pfext-quick-start-task-review--failed': taskStatus === exports.QuickStartTaskStatus.FAILED,
1989
2056
  });
1990
2057
  const title = React__namespace.createElement("span", { className: alertClassNames }, getResource('Check your work'));
1991
- return (React__namespace.createElement(reactCore.Alert, { className: "pfext-quick-start-task-review-alert", variant: getAlertVariant(taskStatus), title: title, isInline: true },
2058
+ return (React__namespace.createElement(reactCore.Alert, { className: "pfext-quick-start-task-review-alert", variant: getAlertVariant(taskStatus), title: title, isInline: true, role: "alert" },
1992
2059
  React__namespace.createElement(QuickStartMarkdownView, { content: instructions }),
1993
2060
  React__namespace.createElement("span", { className: "pfext-quick-start-task-review__actions" },
1994
2061
  React__namespace.createElement(reactCore.Radio, { id: "review-success", name: "review-success", "data-testid": "qs-drawer-check-yes", label: getResource('Yes'), className: "pfext-quick-start-task-review__radio", isChecked: taskStatus === exports.QuickStartTaskStatus.SUCCESS, onChange: () => onTaskReview(exports.QuickStartTaskStatus.SUCCESS) }),
@@ -1998,22 +2065,22 @@ const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
1998
2065
 
1999
2066
  const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onTaskSelect, }) => {
2000
2067
  const { getResource, alwaysShowTaskReview } = React__namespace.useContext(QuickStartContext);
2001
- return (React__namespace.createElement("div", { className: "pfext-quick-start-tasks__list" }, tasks
2002
- .filter((_, index) => allTaskStatuses[index] !== exports.QuickStartTaskStatus.INIT)
2003
- .map((task, index) => {
2004
- const { title, description, review } = task;
2005
- const isActiveTask = index === taskNumber;
2006
- const taskStatus = allTaskStatuses[index];
2007
- const shouldShowTaskReview = (!QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus) || alwaysShowTaskReview) &&
2008
- review;
2009
- return (React__namespace.createElement(React__namespace.Fragment, { key: title },
2010
- React__namespace.createElement(QuickStartTaskHeader, { taskIndex: index + 1, title: title, size: "md", subtitle: getResource('{{index, number}} of {{tasks, number}}')
2011
- .replace('{{index, number}}', index + 1)
2012
- .replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }),
2013
- isActiveTask && (React__namespace.createElement("div", { className: "pfext-quick-start-task__content" },
2014
- React__namespace.createElement(QuickStartMarkdownView, { content: description }),
2015
- shouldShowTaskReview && (React__namespace.createElement(QuickStartTaskReview, { review: review, taskStatus: taskStatus, onTaskReview: onTaskReview }))))));
2016
- })));
2068
+ return (React__namespace.createElement("div", { className: "pfext-quick-start-tasks__list" },
2069
+ React__namespace.createElement("ul", null, tasks
2070
+ .filter((_, index) => allTaskStatuses[index] !== exports.QuickStartTaskStatus.INIT)
2071
+ .map((task, index) => {
2072
+ const { title, description, review } = task;
2073
+ const isActiveTask = index === taskNumber;
2074
+ const taskStatus = allTaskStatuses[index];
2075
+ const shouldShowTaskReview = (!QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus) || alwaysShowTaskReview) &&
2076
+ review;
2077
+ return (React__namespace.createElement(React__namespace.Fragment, { key: title },
2078
+ React__namespace.createElement(QuickStartTaskHeader, { taskIndex: index + 1, title: title, size: "md", subtitle: getResource('{{index, number}} of {{tasks, number}}')
2079
+ .replace('{{index, number}}', index + 1)
2080
+ .replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }, isActiveTask && (React__namespace.createElement("div", { className: "pfext-quick-start-task__content" },
2081
+ React__namespace.createElement(QuickStartMarkdownView, { content: description }),
2082
+ shouldShowTaskReview && (React__namespace.createElement(QuickStartTaskReview, { review: review, taskStatus: taskStatus, onTaskReview: onTaskReview })))))));
2083
+ }))));
2017
2084
  };
2018
2085
 
2019
2086
  const QuickStartContent = React__namespace.forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
@@ -2155,7 +2222,10 @@ const QuickStartPanelContent = (_a) => {
2155
2222
  React__namespace.createElement(reactCore.Title, { headingLevel: "h1", size: "xl", className: "pfext-quick-start-panel-content__name", style: { marginRight: 'var(--pf-global--spacer--md)' } }, quickStart === null || quickStart === void 0 ? void 0 :
2156
2223
  quickStart.spec.displayName,
2157
2224
  ' ',
2158
- React__namespace.createElement("small", { className: "pfext-quick-start-panel-content__duration" }, getResource('Quick start • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes).replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)))),
2225
+ React__namespace.createElement("small", { className: "pfext-quick-start-panel-content__duration" }, (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes) ? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2226
+ .replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2227
+ .replace('{{type}}', getResource('Type'))
2228
+ : getResource('Type')))),
2159
2229
  showClose && (React__namespace.createElement(reactCore.DrawerActions, null,
2160
2230
  React__namespace.createElement(reactCore.DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))))),
2161
2231
  React__namespace.createElement(reactCore.DrawerPanelBody, { hasNoPadding: true, className: "pfext-quick-start-panel-content__body", "data-test": "content" },
@@ -2167,7 +2237,7 @@ const QuickStartPanelContent = (_a) => {
2167
2237
  };
2168
2238
 
2169
2239
  const QuickStartContainer = (_a) => {
2170
- var { quickStarts, children, activeQuickStartID, allQuickStartStates, setActiveQuickStartID, setAllQuickStartStates, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress, resourceBundle, showCardFooters, useLegacyHeaderColors, language, loading = false, useQueryParams = true, markdown, contextProps, alwaysShowTaskReview = false } = _a, props = tslib.__rest(_a, ["quickStarts", "children", "activeQuickStartID", "allQuickStartStates", "setActiveQuickStartID", "setAllQuickStartStates", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress", "resourceBundle", "showCardFooters", "useLegacyHeaderColors", "language", "loading", "useQueryParams", "markdown", "contextProps", "alwaysShowTaskReview"]);
2240
+ var { quickStarts, children, activeQuickStartID, allQuickStartStates, setActiveQuickStartID, setAllQuickStartStates, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress, resourceBundle, showCardFooters, useLegacyHeaderColors, language, loading = false, useQueryParams = true, markdown, contextProps, alwaysShowTaskReview = true } = _a, props = tslib.__rest(_a, ["quickStarts", "children", "activeQuickStartID", "allQuickStartStates", "setActiveQuickStartID", "setAllQuickStartStates", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress", "resourceBundle", "showCardFooters", "useLegacyHeaderColors", "language", "loading", "useQueryParams", "markdown", "contextProps", "alwaysShowTaskReview"]);
2171
2241
  const valuesForQuickstartContext = useValuesForQuickStartContext(Object.assign({ allQuickStarts: quickStarts, activeQuickStartID,
2172
2242
  setActiveQuickStartID,
2173
2243
  allQuickStartStates,
@@ -2205,7 +2275,7 @@ const QuickStartDrawer = (_a) => {
2205
2275
  // if there is a quick start param, but the quick start is not active, set it
2206
2276
  // this can happen if a new browser session is opened or an incognito window for example
2207
2277
  const quickStartIdFromParam = params.get(QUICKSTART_ID_FILTER_KEY) || '';
2208
- if (quickStartIdFromParam && !activeQuickStartID) {
2278
+ if (quickStartIdFromParam && activeQuickStartID !== quickStartIdFromParam) {
2209
2279
  const activeQuickStart = getQuickStartByName(quickStartIdFromParam, combinedQuickStarts);
2210
2280
  // don't try to load a quick start that is actually just an external resource (spec.link)
2211
2281
  if (combinedQuickStarts.length > 0 && activeQuickStart && !activeQuickStart.spec.link) {