@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.
- package/dist/ConsoleInternal/components/markdown-view.d.ts +2 -2
- package/dist/ConsoleInternal/components/utils/camel-case-wrap.d.ts +1 -1
- package/dist/ConsoleInternal/components/utils/status-box.d.ts +3 -3
- package/dist/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.d.ts +3 -3
- package/dist/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.d.ts +2 -2
- package/dist/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.d.ts +2 -2
- package/dist/ConsoleShared/src/components/modal/Modal.d.ts +3 -3
- package/dist/ConsoleShared/src/components/popper/Portal.d.ts +3 -3
- package/dist/ConsoleShared/src/components/popper/SimplePopper.d.ts +3 -3
- package/dist/ConsoleShared/src/components/spotlight/InteractiveSpotlight.d.ts +2 -2
- package/dist/ConsoleShared/src/components/spotlight/Spotlight.d.ts +2 -2
- package/dist/ConsoleShared/src/components/spotlight/StaticSpotlight.d.ts +2 -2
- package/dist/ConsoleShared/src/components/status/GenericStatus.d.ts +4 -4
- package/dist/ConsoleShared/src/components/status/NotStartedIcon.d.ts +1 -2
- package/dist/ConsoleShared/src/components/status/PopoverStatus.d.ts +4 -4
- package/dist/ConsoleShared/src/components/status/Status.d.ts +3 -3
- package/dist/ConsoleShared/src/components/status/StatusIconAndText.d.ts +3 -3
- package/dist/ConsoleShared/src/components/status/icons.d.ts +4 -4
- package/dist/ConsoleShared/src/components/status/statuses.d.ts +4 -4
- package/dist/ConsoleShared/src/components/utils/FallbackImg.d.ts +3 -3
- package/dist/ConsoleShared/src/utils/useCombineRefs.d.ts +2 -2
- package/dist/HelpTopicDrawer.d.ts +3 -3
- package/dist/HelpTopicPanelContent.d.ts +2 -2
- package/dist/QuickStartCatalogPage.d.ts +3 -3
- package/dist/QuickStartCloseModal.d.ts +2 -2
- package/dist/QuickStartContainer.d.ts +2 -2
- package/dist/QuickStartController.d.ts +2 -2
- package/dist/QuickStartDrawer.d.ts +2 -2
- package/dist/QuickStartDrawerContent.d.ts +2 -2
- package/dist/QuickStartMarkdownView.d.ts +2 -2
- package/dist/QuickStartPanelContent.d.ts +2 -2
- package/dist/catalog/Catalog/QuickStartCatalogHeader.d.ts +2 -2
- package/dist/catalog/Catalog/QuickStartCatalogSection.d.ts +2 -2
- package/dist/catalog/Catalog/QuickStartCatalogToolbar.d.ts +2 -2
- package/dist/catalog/QuickStartCatalog.d.ts +2 -2
- package/dist/catalog/QuickStartTile.d.ts +2 -2
- package/dist/catalog/QuickStartTileDescription.d.ts +2 -2
- package/dist/catalog/QuickStartTileFooter.d.ts +2 -2
- package/dist/catalog/QuickStartTileFooterExternal.d.ts +2 -2
- package/dist/catalog/QuickStartTileHeader.d.ts +2 -2
- package/dist/catalog/Toolbar/QuickStartCatalogFilter.d.ts +2 -2
- package/dist/catalog/Toolbar/QuickStartCatalogFilterItems.d.ts +7 -7
- package/dist/controller/QuickStartConclusion.d.ts +2 -2
- package/dist/controller/QuickStartContent.d.ts +2 -2
- package/dist/controller/QuickStartFooter.d.ts +2 -2
- package/dist/controller/QuickStartIntroduction.d.ts +2 -2
- package/dist/controller/QuickStartTaskHeader.d.ts +2 -2
- package/dist/controller/QuickStartTaskHeaderList.d.ts +2 -2
- package/dist/controller/QuickStartTaskReview.d.ts +2 -2
- package/dist/controller/QuickStartTasks.d.ts +2 -2
- package/dist/index.es.js +299 -459
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +310 -472
- package/dist/index.js.map +1 -1
- package/dist/quickstarts-full.es.js +1693 -511
- package/dist/quickstarts-full.es.js.map +1 -1
- package/dist/utils/help-topic-context.d.ts +2 -2
- package/dist/utils/quick-start-context.d.ts +3 -3
- package/package.json +4 -5
- package/src/ConsoleInternal/components/markdown-view.tsx +20 -18
- package/src/ConsoleInternal/components/utils/camel-case-wrap.tsx +3 -3
- package/src/ConsoleInternal/components/utils/status-box.tsx +4 -4
- package/src/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.tsx +8 -15
- package/src/ConsoleShared/src/components/markdown-extensions/__tests__/MarkdownCopyClipboard.spec.tsx +0 -1
- package/src/ConsoleShared/src/components/markdown-extensions/accordion-extension.tsx +2 -2
- package/src/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.tsx +4 -4
- package/src/ConsoleShared/src/components/markdown-extensions/admonition-extension.tsx +2 -2
- package/src/ConsoleShared/src/components/markdown-extensions/code-extension.tsx +2 -2
- package/src/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.tsx +3 -3
- package/src/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.tsx +3 -3
- package/src/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.tsx +5 -5
- package/src/ConsoleShared/src/components/modal/Modal.tsx +3 -3
- package/src/ConsoleShared/src/components/popper/Portal.tsx +5 -5
- package/src/ConsoleShared/src/components/popper/SimplePopper.tsx +15 -15
- package/src/ConsoleShared/src/components/spotlight/InteractiveSpotlight.tsx +5 -5
- package/src/ConsoleShared/src/components/spotlight/Spotlight.tsx +3 -3
- package/src/ConsoleShared/src/components/spotlight/StaticSpotlight.tsx +3 -3
- package/src/ConsoleShared/src/components/status/GenericStatus.tsx +5 -5
- package/src/ConsoleShared/src/components/status/NotStartedIcon.tsx +0 -1
- package/src/ConsoleShared/src/components/status/PopoverStatus.tsx +4 -4
- package/src/ConsoleShared/src/components/status/Status.tsx +3 -11
- package/src/ConsoleShared/src/components/status/StatusIconAndText.tsx +6 -6
- package/src/ConsoleShared/src/components/status/icons.tsx +4 -8
- package/src/ConsoleShared/src/components/status/statuses.tsx +4 -5
- package/src/ConsoleShared/src/components/utils/FallbackImg.tsx +4 -4
- package/src/ConsoleShared/src/hooks/scroll.ts +4 -4
- package/src/ConsoleShared/src/hooks/useBoundingClientRect.ts +3 -3
- package/src/ConsoleShared/src/hooks/useForceRender.ts +2 -2
- package/src/ConsoleShared/src/hooks/useResizeObserver.ts +3 -6
- package/src/ConsoleShared/src/hooks/useScrollShadows.ts +4 -4
- package/src/ConsoleShared/src/utils/useCombineRefs.ts +4 -4
- package/src/HelpTopicDrawer.tsx +6 -6
- package/src/HelpTopicPanelContent.tsx +4 -4
- package/src/QuickStartCatalogPage.tsx +9 -9
- package/src/QuickStartCloseModal.tsx +3 -7
- package/src/QuickStartContainer.tsx +4 -4
- package/src/QuickStartController.tsx +11 -11
- package/src/QuickStartDrawer.tsx +6 -6
- package/src/QuickStartDrawerContent.tsx +3 -3
- package/src/QuickStartMarkdownView.tsx +3 -3
- package/src/QuickStartPanelContent.tsx +8 -8
- package/src/catalog/Catalog/QuickStartCatalogHeader.tsx +2 -2
- package/src/catalog/Catalog/QuickStartCatalogSection.tsx +2 -2
- package/src/catalog/Catalog/QuickStartCatalogToolbar.tsx +2 -2
- package/src/catalog/QuickStartCatalog.tsx +3 -3
- package/src/catalog/QuickStartTile.tsx +4 -4
- package/src/catalog/QuickStartTileDescription.tsx +4 -4
- package/src/catalog/QuickStartTileFooter.tsx +6 -6
- package/src/catalog/QuickStartTileFooterExternal.tsx +2 -5
- package/src/catalog/QuickStartTileHeader.tsx +2 -6
- package/src/catalog/Toolbar/QuickStartCatalogFilter.tsx +2 -2
- package/src/catalog/Toolbar/QuickStartCatalogFilterItems.tsx +16 -16
- package/src/catalog/__tests__/QuickStartCatalog.spec.tsx +0 -1
- package/src/catalog/__tests__/QuickStartTile.spec.tsx +0 -1
- package/src/catalog/__tests__/QuickStartTileDescription.spec.tsx +1 -2
- package/src/controller/QuickStartConclusion.tsx +3 -3
- package/src/controller/QuickStartContent.tsx +2 -2
- package/src/controller/QuickStartFooter.tsx +10 -11
- package/src/controller/QuickStartIntroduction.tsx +4 -4
- package/src/controller/QuickStartTaskHeader.tsx +5 -5
- package/src/controller/QuickStartTaskHeaderList.tsx +2 -2
- package/src/controller/QuickStartTaskReview.tsx +4 -4
- package/src/controller/QuickStartTasks.tsx +5 -5
- package/src/controller/__tests__/QuickStartConclusion.spec.tsx +3 -3
- package/src/controller/__tests__/QuickStartContent.spec.tsx +2 -2
- package/src/controller/__tests__/QuickStartTaskHeader.spec.tsx +2 -2
- package/src/controller/__tests__/QuickStartTaskReview.spec.tsx +2 -2
- package/src/utils/help-topic-context.tsx +7 -10
- package/src/utils/quick-start-context.tsx +11 -11
package/dist/index.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
6
7
|
var reactCore = require('@patternfly/react-core');
|
|
7
8
|
var SearchIcon = require('@patternfly/react-icons/dist/js/icons/search-icon');
|
|
8
9
|
var reactStyles = require('@patternfly/react-styles');
|
|
@@ -45,8 +46,6 @@ function _interopNamespace(e) {
|
|
|
45
46
|
return Object.freeze(n);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
49
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
50
49
|
var SearchIcon__default = /*#__PURE__*/_interopDefaultLegacy(SearchIcon);
|
|
51
50
|
var RocketIcon__default = /*#__PURE__*/_interopDefaultLegacy(RocketIcon);
|
|
52
51
|
var ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);
|
|
@@ -619,7 +618,7 @@ const QuickStartContextDefaults = {
|
|
|
619
618
|
alwaysShowTaskReview: true,
|
|
620
619
|
focusOnQuickStart: true,
|
|
621
620
|
};
|
|
622
|
-
const QuickStartContext =
|
|
621
|
+
const QuickStartContext = react.createContext(QuickStartContextDefaults);
|
|
623
622
|
const getResource = (resource, options, resourceBundle, lng) => {
|
|
624
623
|
if (options && !isNaN(options.count)) {
|
|
625
624
|
const suffix = pluralResolver.getSuffix(lng, options.count);
|
|
@@ -634,27 +633,27 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
634
633
|
var _a, _b;
|
|
635
634
|
const combinedValue = Object.assign(Object.assign({}, QuickStartContextDefaults), value);
|
|
636
635
|
const { activeQuickStartID, setActiveQuickStartID, setAllQuickStartStates, useQueryParams, allQuickStartStates, allQuickStarts = [], footer, useLegacyHeaderColors, markdown, } = combinedValue;
|
|
637
|
-
const [quickStarts, setQuickStarts] =
|
|
638
|
-
const [resourceBundle, setResourceBundle] =
|
|
639
|
-
const [language, setLanguage] =
|
|
636
|
+
const [quickStarts, setQuickStarts] = react.useState(combinedValue.allQuickStarts || []);
|
|
637
|
+
const [resourceBundle, setResourceBundle] = react.useState(Object.assign(Object.assign({}, en), combinedValue.resourceBundle));
|
|
638
|
+
const [language, setLanguage] = react.useState(combinedValue.language);
|
|
640
639
|
const changeResourceBundle = (bundle, lng) => {
|
|
641
640
|
lng && setLanguage(lng);
|
|
642
641
|
setResourceBundle(Object.assign(Object.assign({}, en), bundle));
|
|
643
642
|
};
|
|
644
|
-
const findResource =
|
|
645
|
-
const [loading, setLoading] =
|
|
646
|
-
const [alwaysShowTaskReview, setAlwaysShowTaskReview] =
|
|
643
|
+
const findResource = react.useCallback((resource, count) => getResource(resource, count !== undefined ? { count } : null, resourceBundle, language), [resourceBundle, language]);
|
|
644
|
+
const [loading, setLoading] = react.useState(combinedValue.loading);
|
|
645
|
+
const [alwaysShowTaskReview, setAlwaysShowTaskReview] = react.useState(combinedValue.alwaysShowTaskReview);
|
|
647
646
|
const initialSearchParams = new URLSearchParams(window.location.search);
|
|
648
647
|
const initialSearchQuery = initialSearchParams.get(QUICKSTART_SEARCH_FILTER_KEY) || '';
|
|
649
648
|
const initialStatusFilters = ((_a = initialSearchParams.get(QUICKSTART_STATUS_FILTER_KEY)) === null || _a === void 0 ? void 0 : _a.split(',')) || [];
|
|
650
649
|
const quickStartStatusCount = getQuickStartStatusCount(allQuickStartStates, allQuickStarts);
|
|
651
|
-
const [statusTypes, setStatusTypes] =
|
|
650
|
+
const [statusTypes, setStatusTypes] = react.useState({
|
|
652
651
|
[exports.QuickStartStatus.COMPLETE]: findResource('Complete ({{statusCount, number}})').replace('{{statusCount, number}}', quickStartStatusCount[exports.QuickStartStatus.COMPLETE]),
|
|
653
652
|
[exports.QuickStartStatus.IN_PROGRESS]: findResource('In progress ({{statusCount, number}})').replace('{{statusCount, number}}', quickStartStatusCount[exports.QuickStartStatus.IN_PROGRESS]),
|
|
654
653
|
[exports.QuickStartStatus.NOT_STARTED]: findResource('Not started ({{statusCount, number}})').replace('{{statusCount, number}}', quickStartStatusCount[exports.QuickStartStatus.NOT_STARTED]),
|
|
655
654
|
});
|
|
656
|
-
const [statusFilters, setStatusFilters] =
|
|
657
|
-
const [filterKeyword, setFilterKeyword] =
|
|
655
|
+
const [statusFilters, setStatusFilters] = react.useState(initialStatusFilters);
|
|
656
|
+
const [filterKeyword, setFilterKeyword] = react.useState(initialSearchQuery);
|
|
658
657
|
const setFilter = (type, val) => {
|
|
659
658
|
if (type === 'keyword') {
|
|
660
659
|
setFilterKeyword(val);
|
|
@@ -663,7 +662,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
663
662
|
setStatusFilters(val);
|
|
664
663
|
}
|
|
665
664
|
};
|
|
666
|
-
|
|
665
|
+
react.useEffect(() => {
|
|
667
666
|
const updatedQuickStartStatusCount = getQuickStartStatusCount(allQuickStartStates, quickStarts);
|
|
668
667
|
setStatusTypes({
|
|
669
668
|
[exports.QuickStartStatus.COMPLETE]: findResource('Complete ({{statusCount, number}})').replace('{{statusCount, number}}', updatedQuickStartStatusCount[exports.QuickStartStatus.COMPLETE]),
|
|
@@ -674,7 +673,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
674
673
|
const updateAllQuickStarts = (qs) => {
|
|
675
674
|
setQuickStarts(qs);
|
|
676
675
|
};
|
|
677
|
-
const setActiveQuickStart =
|
|
676
|
+
const setActiveQuickStart = react.useCallback((quickStartId, totalTasks) => {
|
|
678
677
|
setActiveQuickStartID((id) => {
|
|
679
678
|
if (!quickStartId || id === quickStartId) {
|
|
680
679
|
useQueryParams && removeQueryArgument(QUICKSTART_ID_FILTER_KEY);
|
|
@@ -687,7 +686,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
687
686
|
? qs
|
|
688
687
|
: Object.assign(Object.assign({}, qs), { [quickStartId]: getDefaultQuickStartState(totalTasks) }));
|
|
689
688
|
}, [setActiveQuickStartID, setAllQuickStartStates, useQueryParams]);
|
|
690
|
-
const startQuickStart =
|
|
689
|
+
const startQuickStart = react.useCallback((quickStartId, totalTasks) => {
|
|
691
690
|
setActiveQuickStartID((id) => {
|
|
692
691
|
if (!id || id !== quickStartId) {
|
|
693
692
|
useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId);
|
|
@@ -703,7 +702,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
703
702
|
return Object.assign(Object.assign({}, qs), { [quickStartId]: getDefaultQuickStartState(totalTasks, exports.QuickStartStatus.IN_PROGRESS) });
|
|
704
703
|
});
|
|
705
704
|
}, [setActiveQuickStartID, setAllQuickStartStates, useQueryParams]);
|
|
706
|
-
const restartQuickStart =
|
|
705
|
+
const restartQuickStart = react.useCallback((quickStartId, totalTasks) => {
|
|
707
706
|
setActiveQuickStartID((id) => {
|
|
708
707
|
if (!id || id !== quickStartId) {
|
|
709
708
|
useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId);
|
|
@@ -718,7 +717,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
718
717
|
const stepAfterInitial = alwaysShowTaskReview
|
|
719
718
|
? exports.QuickStartTaskStatus.REVIEW
|
|
720
719
|
: exports.QuickStartTaskStatus.VISITED;
|
|
721
|
-
const nextStep =
|
|
720
|
+
const nextStep = react.useCallback((totalTasks) => {
|
|
722
721
|
if (!activeQuickStartID) {
|
|
723
722
|
return;
|
|
724
723
|
}
|
|
@@ -757,7 +756,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
757
756
|
return newState;
|
|
758
757
|
});
|
|
759
758
|
}, [activeQuickStartID, setAllQuickStartStates, stepAfterInitial]);
|
|
760
|
-
const previousStep =
|
|
759
|
+
const previousStep = react.useCallback(() => {
|
|
761
760
|
setAllQuickStartStates((qs) => {
|
|
762
761
|
const quickStart = qs[activeQuickStartID];
|
|
763
762
|
const taskNumber = quickStart === null || quickStart === void 0 ? void 0 : quickStart.taskNumber;
|
|
@@ -767,7 +766,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
767
766
|
return Object.assign(Object.assign({}, qs), { [activeQuickStartID]: Object.assign(Object.assign({}, quickStart), { taskNumber: taskNumber - 1 }) });
|
|
768
767
|
});
|
|
769
768
|
}, [activeQuickStartID, setAllQuickStartStates]);
|
|
770
|
-
const setQuickStartTaskNumber =
|
|
769
|
+
const setQuickStartTaskNumber = react.useCallback((quickStartId, taskNumber) => {
|
|
771
770
|
setAllQuickStartStates((qs) => {
|
|
772
771
|
const quickStart = qs[quickStartId];
|
|
773
772
|
const status = quickStart === null || quickStart === void 0 ? void 0 : quickStart.status;
|
|
@@ -787,14 +786,14 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
787
786
|
return Object.assign(Object.assign({}, qs), { [quickStartId]: updatedQuickStart });
|
|
788
787
|
});
|
|
789
788
|
}, [setAllQuickStartStates, stepAfterInitial]);
|
|
790
|
-
const setQuickStartTaskStatus =
|
|
789
|
+
const setQuickStartTaskStatus = react.useCallback((taskStatus) => {
|
|
791
790
|
const quickStart = allQuickStartStates[activeQuickStartID];
|
|
792
791
|
const { taskNumber } = quickStart;
|
|
793
792
|
const updatedQuickStart = Object.assign(Object.assign({}, quickStart), { [getTaskStatusKey(taskNumber)]: taskStatus });
|
|
794
793
|
setAllQuickStartStates((qs) => (Object.assign(Object.assign({}, qs), { [activeQuickStartID]: updatedQuickStart })));
|
|
795
794
|
}, [allQuickStartStates, activeQuickStartID, setAllQuickStartStates]);
|
|
796
795
|
const activeQuickStartState = (_b = allQuickStartStates === null || allQuickStartStates === void 0 ? void 0 : allQuickStartStates[activeQuickStartID]) !== null && _b !== void 0 ? _b : {};
|
|
797
|
-
const getQuickStartForId =
|
|
796
|
+
const getQuickStartForId = react.useCallback((id) => allQuickStartStates[id], [allQuickStartStates]);
|
|
798
797
|
return {
|
|
799
798
|
allQuickStarts: quickStarts,
|
|
800
799
|
setAllQuickStarts: updateAllQuickStarts,
|
|
@@ -835,24 +834,18 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
835
834
|
setAlwaysShowTaskReview,
|
|
836
835
|
};
|
|
837
836
|
};
|
|
838
|
-
const QuickStartContextProvider = ({ children, value }) => (
|
|
837
|
+
const QuickStartContextProvider = ({ children, value }) => (jsxRuntime.jsx(QuickStartContext.Provider, Object.assign({ value: useValuesForQuickStartContext(value) }, { children: children })));
|
|
839
838
|
|
|
840
|
-
const Box = ({ children, className }) => (
|
|
841
|
-
const Loading = ({ className }) => (
|
|
842
|
-
React__namespace.createElement("div", { className: "pfext-m-loader-dot__one" }),
|
|
843
|
-
React__namespace.createElement("div", { className: "pfext-m-loader-dot__two" }),
|
|
844
|
-
React__namespace.createElement("div", { className: "pfext-m-loader-dot__three" })));
|
|
839
|
+
const Box = ({ children, className }) => (jsxRuntime.jsx("div", Object.assign({ className: reactStyles.css('pfext-status-box', className) }, { children: children })));
|
|
840
|
+
const Loading = ({ className }) => (jsxRuntime.jsxs("div", Object.assign({ className: reactStyles.css('pfext-m-loader', className) }, { children: [jsxRuntime.jsx("div", { className: "pfext-m-loader-dot__one" }), jsxRuntime.jsx("div", { className: "pfext-m-loader-dot__two" }), jsxRuntime.jsx("div", { className: "pfext-m-loader-dot__three" })] })));
|
|
845
841
|
Loading.displayName = 'Loading';
|
|
846
|
-
const LoadingBox = ({ className, message }) => (
|
|
847
|
-
React__namespace.createElement(Loading, null),
|
|
848
|
-
message && React__namespace.createElement("div", { className: "pfext-status-box__loading-message" }, message)));
|
|
842
|
+
const LoadingBox = ({ className, message }) => (jsxRuntime.jsxs(Box, Object.assign({ className: reactStyles.css('pfext-status-box--loading', className) }, { children: [jsxRuntime.jsx(Loading, {}), message && jsxRuntime.jsx("div", Object.assign({ className: "pfext-status-box__loading-message" }, { children: message }))] })));
|
|
849
843
|
LoadingBox.displayName = 'LoadingBox';
|
|
850
844
|
const EmptyBox = ({ label }) => {
|
|
851
|
-
const { getResource } =
|
|
852
|
-
return (
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
: getResource('Not found'))));
|
|
845
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
846
|
+
return (jsxRuntime.jsx(Box, { children: jsxRuntime.jsx("div", Object.assign({ "data-test": "empty-message", className: "text-center" }, { children: label
|
|
847
|
+
? getResource('No {{label}} found').replace('{{label}}', label)
|
|
848
|
+
: getResource('Not found') })) }));
|
|
856
849
|
};
|
|
857
850
|
EmptyBox.displayName = 'EmptyBox';
|
|
858
851
|
|
|
@@ -866,49 +859,47 @@ const CamelCaseWrap = ({ value, dataTest }) => {
|
|
|
866
859
|
}
|
|
867
860
|
// Add word break points before capital letters (but keep consecutive capital letters together).
|
|
868
861
|
const words = value.match(/[A-Z]+[^A-Z]*|[^A-Z]+/g);
|
|
869
|
-
const rendered = (
|
|
870
|
-
word,
|
|
871
|
-
i !== words.length - 1 && React__namespace.createElement("wbr", null))))));
|
|
862
|
+
const rendered = (jsxRuntime.jsx("span", Object.assign({ "data-test": dataTest }, { children: words.map((word, i) => (jsxRuntime.jsxs(react.Fragment, { children: [word, i !== words.length - 1 && jsxRuntime.jsx("wbr", {})] }, i))) })));
|
|
872
863
|
MEMO[value] = rendered;
|
|
873
864
|
return rendered;
|
|
874
865
|
};
|
|
875
866
|
|
|
876
867
|
const Modal = (_a) => {
|
|
877
868
|
var { isFullScreen = false, className } = _a, props = tslib.__rest(_a, ["isFullScreen", "className"]);
|
|
878
|
-
return (
|
|
869
|
+
return (jsxRuntime.jsx(deprecated.Modal, Object.assign({}, props, { className: reactStyles.css('pfext-modal', className), appendTo: () => (isFullScreen ? document.body : document.querySelector('#modal-container')) })));
|
|
879
870
|
};
|
|
880
871
|
|
|
881
872
|
const getContainer = (container) => typeof container === 'function' ? container() : container;
|
|
882
873
|
const Portal = ({ children, container }) => {
|
|
883
|
-
const [containerNode, setContainerNode] =
|
|
874
|
+
const [containerNode, setContainerNode] = react.useState();
|
|
884
875
|
reactCore.useIsomorphicLayoutEffect(() => {
|
|
885
876
|
setContainerNode(getContainer(container) || document.body);
|
|
886
877
|
}, [container]);
|
|
887
|
-
return containerNode ?
|
|
878
|
+
return containerNode ? ReactDOM.createPortal(children, containerNode) : null;
|
|
888
879
|
};
|
|
889
880
|
|
|
890
881
|
const SimplePopper = ({ children }) => {
|
|
891
882
|
const openProp = true;
|
|
892
|
-
const nodeRef =
|
|
893
|
-
const popperRef =
|
|
894
|
-
const [isOpen, setOpenState] =
|
|
895
|
-
const setOpen =
|
|
883
|
+
const nodeRef = react.useRef(null);
|
|
884
|
+
const popperRef = react.useRef(null);
|
|
885
|
+
const [isOpen, setOpenState] = react.useState(openProp);
|
|
886
|
+
const setOpen = react.useCallback((newOpen) => {
|
|
896
887
|
setOpenState(newOpen);
|
|
897
888
|
}, []);
|
|
898
|
-
|
|
889
|
+
react.useEffect(() => {
|
|
899
890
|
setOpen(openProp);
|
|
900
891
|
}, [openProp, setOpen]);
|
|
901
|
-
const onKeyDown =
|
|
892
|
+
const onKeyDown = react.useCallback((e) => {
|
|
902
893
|
if (e.keyCode === 27) {
|
|
903
894
|
setOpen(false);
|
|
904
895
|
}
|
|
905
896
|
}, [setOpen]);
|
|
906
|
-
const onClickOutside =
|
|
897
|
+
const onClickOutside = react.useCallback((e) => {
|
|
907
898
|
if (!nodeRef.current || (e.target instanceof Node && !nodeRef.current.contains(e.target))) {
|
|
908
899
|
setOpen(false);
|
|
909
900
|
}
|
|
910
901
|
}, [setOpen]);
|
|
911
|
-
const destroy =
|
|
902
|
+
const destroy = react.useCallback(() => {
|
|
912
903
|
if (popperRef.current) {
|
|
913
904
|
popperRef.current.destroy();
|
|
914
905
|
document.removeEventListener('keydown', onKeyDown, true);
|
|
@@ -916,29 +907,28 @@ const SimplePopper = ({ children }) => {
|
|
|
916
907
|
document.removeEventListener('touchstart', onClickOutside, true);
|
|
917
908
|
}
|
|
918
909
|
}, [onClickOutside, onKeyDown]);
|
|
919
|
-
const initialize =
|
|
910
|
+
const initialize = react.useCallback(() => {
|
|
920
911
|
if (!nodeRef.current || !isOpen) {
|
|
921
912
|
return;
|
|
922
913
|
}
|
|
923
914
|
destroy();
|
|
924
915
|
}, [isOpen, destroy]);
|
|
925
|
-
const nodeRefCallback =
|
|
916
|
+
const nodeRefCallback = react.useCallback((node) => {
|
|
926
917
|
nodeRef.current = node;
|
|
927
918
|
initialize();
|
|
928
919
|
}, [initialize]);
|
|
929
|
-
|
|
920
|
+
react.useEffect(() => {
|
|
930
921
|
initialize();
|
|
931
922
|
}, [initialize]);
|
|
932
|
-
|
|
923
|
+
react.useEffect(() => () => {
|
|
933
924
|
destroy();
|
|
934
925
|
}, [destroy]);
|
|
935
|
-
|
|
926
|
+
react.useEffect(() => {
|
|
936
927
|
if (!isOpen) {
|
|
937
928
|
destroy();
|
|
938
929
|
}
|
|
939
930
|
}, [destroy, isOpen]);
|
|
940
|
-
return isOpen ? (
|
|
941
|
-
React__namespace.createElement("div", { ref: nodeRefCallback, style: { zIndex: 9999, position: 'absolute', top: 0, left: 0 }, className: "pfext-quick-start__base" }, children))) : null;
|
|
931
|
+
return isOpen ? (jsxRuntime.jsx(Portal, { children: jsxRuntime.jsx("div", Object.assign({ ref: nodeRefCallback, style: { zIndex: 9999, position: 'absolute', top: 0, left: 0 }, className: "pfext-quick-start__base" }, { children: children })) })) : null;
|
|
942
932
|
};
|
|
943
933
|
|
|
944
934
|
const isInViewport = (elementToCheck) => {
|
|
@@ -958,8 +948,8 @@ const InteractiveSpotlight = ({ element }) => {
|
|
|
958
948
|
bottom,
|
|
959
949
|
right,
|
|
960
950
|
};
|
|
961
|
-
const [clicked, setClicked] =
|
|
962
|
-
|
|
951
|
+
const [clicked, setClicked] = react.useState(false);
|
|
952
|
+
react.useEffect(() => {
|
|
963
953
|
if (!clicked) {
|
|
964
954
|
if (!isInViewport(element)) {
|
|
965
955
|
element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
|
|
@@ -975,9 +965,7 @@ const InteractiveSpotlight = ({ element }) => {
|
|
|
975
965
|
if (clicked) {
|
|
976
966
|
return null;
|
|
977
967
|
}
|
|
978
|
-
return (
|
|
979
|
-
React__namespace.createElement(SimplePopper, null,
|
|
980
|
-
React__namespace.createElement("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-animate", style: style }))));
|
|
968
|
+
return (jsxRuntime.jsx(Portal, { children: jsxRuntime.jsx(SimplePopper, { children: jsxRuntime.jsx("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-animate", style: style }) }) }));
|
|
981
969
|
};
|
|
982
970
|
|
|
983
971
|
var ScrollDirection;
|
|
@@ -989,8 +977,8 @@ var ScrollDirection;
|
|
|
989
977
|
})(ScrollDirection || (ScrollDirection = {}));
|
|
990
978
|
|
|
991
979
|
const useResizeObserver = (callback, targetElement, observerOptions = undefined) => {
|
|
992
|
-
const element =
|
|
993
|
-
|
|
980
|
+
const element = react.useMemo(() => targetElement !== null && targetElement !== void 0 ? targetElement : document.querySelector('body'), [targetElement]);
|
|
981
|
+
react.useEffect(() => {
|
|
994
982
|
const observer = new ResizeObserver(callback);
|
|
995
983
|
observer.observe(element, observerOptions);
|
|
996
984
|
return () => {
|
|
@@ -1008,8 +996,8 @@ var Shadows;
|
|
|
1008
996
|
})(Shadows || (Shadows = {}));
|
|
1009
997
|
|
|
1010
998
|
const useBoundingClientRect = (targetElement) => {
|
|
1011
|
-
const [clientRect, setClientRect] =
|
|
1012
|
-
const observerCallback =
|
|
999
|
+
const [clientRect, setClientRect] = react.useState(() => targetElement ? targetElement.getBoundingClientRect() : null);
|
|
1000
|
+
const observerCallback = react.useCallback(() => {
|
|
1013
1001
|
setClientRect(targetElement ? targetElement.getBoundingClientRect() : null);
|
|
1014
1002
|
}, [targetElement]);
|
|
1015
1003
|
useResizeObserver(observerCallback);
|
|
@@ -1019,10 +1007,10 @@ const useBoundingClientRect = (targetElement) => {
|
|
|
1019
1007
|
/**
|
|
1020
1008
|
* React hook that forces component render.
|
|
1021
1009
|
*/
|
|
1022
|
-
const useForceRender = () =>
|
|
1010
|
+
const useForceRender = () => react.useReducer((s) => !s, false)[1];
|
|
1023
1011
|
|
|
1024
1012
|
const useEventListener = (target, event, callback) => {
|
|
1025
|
-
|
|
1013
|
+
react.useEffect(() => {
|
|
1026
1014
|
target.addEventListener(event, callback);
|
|
1027
1015
|
return () => {
|
|
1028
1016
|
target.removeEventListener(event, callback);
|
|
@@ -1040,14 +1028,12 @@ const StaticSpotlight = ({ element }) => {
|
|
|
1040
1028
|
width: clientRect.width,
|
|
1041
1029
|
}
|
|
1042
1030
|
: {};
|
|
1043
|
-
return clientRect ? (
|
|
1044
|
-
React__namespace.createElement("div", { className: "pf-v6-c-backdrop pfext-spotlight__with-backdrop" },
|
|
1045
|
-
React__namespace.createElement("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-noanimate", style: style })))) : null;
|
|
1031
|
+
return clientRect ? (jsxRuntime.jsx(Portal, { children: jsxRuntime.jsx("div", Object.assign({ className: "pf-v6-c-backdrop pfext-spotlight__with-backdrop" }, { children: jsxRuntime.jsx("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-noanimate", style: style }) })) })) : null;
|
|
1046
1032
|
};
|
|
1047
1033
|
|
|
1048
1034
|
const Spotlight = ({ selector, interactive }) => {
|
|
1049
1035
|
// if target element is a hidden one return null
|
|
1050
|
-
const element =
|
|
1036
|
+
const element = react.useMemo(() => {
|
|
1051
1037
|
const highlightElement = document.querySelector(selector);
|
|
1052
1038
|
let hiddenElement = highlightElement;
|
|
1053
1039
|
while (hiddenElement) {
|
|
@@ -1062,12 +1048,12 @@ const Spotlight = ({ selector, interactive }) => {
|
|
|
1062
1048
|
if (!element) {
|
|
1063
1049
|
return null;
|
|
1064
1050
|
}
|
|
1065
|
-
return interactive ? (
|
|
1051
|
+
return interactive ? (jsxRuntime.jsx(InteractiveSpotlight, { element: element })) : (jsxRuntime.jsx(StaticSpotlight, { element: element }));
|
|
1066
1052
|
};
|
|
1067
1053
|
|
|
1068
1054
|
const MarkdownHighlightExtension = ({ docContext, rootSelector, }) => {
|
|
1069
|
-
const [selector, setSelector] =
|
|
1070
|
-
|
|
1055
|
+
const [selector, setSelector] = react.useState(null);
|
|
1056
|
+
react.useEffect(() => {
|
|
1071
1057
|
const elements = docContext.querySelectorAll(`${rootSelector} [data-highlight]`);
|
|
1072
1058
|
let timeoutId;
|
|
1073
1059
|
function startHighlight(e) {
|
|
@@ -1086,7 +1072,7 @@ const MarkdownHighlightExtension = ({ docContext, rootSelector, }) => {
|
|
|
1086
1072
|
elements && elements.forEach((elm) => elm.removeEventListener('click', startHighlight));
|
|
1087
1073
|
};
|
|
1088
1074
|
}, [docContext, rootSelector]);
|
|
1089
|
-
|
|
1075
|
+
react.useEffect(() => {
|
|
1090
1076
|
const elements = docContext.querySelectorAll(`${rootSelector} [class^=data-highlight__]`);
|
|
1091
1077
|
let timeoutId;
|
|
1092
1078
|
function startHighlight(e) {
|
|
@@ -1116,7 +1102,7 @@ const MarkdownHighlightExtension = ({ docContext, rootSelector, }) => {
|
|
|
1116
1102
|
if (!selector) {
|
|
1117
1103
|
return null;
|
|
1118
1104
|
}
|
|
1119
|
-
return
|
|
1105
|
+
return jsxRuntime.jsx(Spotlight, { selector: selector, interactive: true });
|
|
1120
1106
|
};
|
|
1121
1107
|
|
|
1122
1108
|
const MARKDOWN_COPY_BUTTON_ID = 'data-copy-for';
|
|
@@ -1124,15 +1110,15 @@ const MARKDOWN_SNIPPET_ID = 'data-snippet-id';
|
|
|
1124
1110
|
const ACCORDION_MARKDOWN_BUTTON_ID = `accordion-markdown-button-id`;
|
|
1125
1111
|
const ACCORDION_MARKDOWN_CONTENT_ID = `accordion-markdown-content-id`;
|
|
1126
1112
|
|
|
1127
|
-
const CopyClipboard = ({ element, rootSelector, docContext
|
|
1128
|
-
const { getResource } =
|
|
1129
|
-
const [showSuccessContent, setShowSuccessContent] =
|
|
1130
|
-
const textToCopy =
|
|
1113
|
+
const CopyClipboard = ({ element, rootSelector, docContext }) => {
|
|
1114
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1115
|
+
const [showSuccessContent, setShowSuccessContent] = react.useState(false);
|
|
1116
|
+
const textToCopy = react.useMemo(() => {
|
|
1131
1117
|
var _a;
|
|
1132
1118
|
const copyTextId = element.getAttribute(MARKDOWN_COPY_BUTTON_ID);
|
|
1133
1119
|
return (_a = docContext.querySelector(`${rootSelector} [${MARKDOWN_SNIPPET_ID}="${copyTextId}"]`)) === null || _a === void 0 ? void 0 : _a.innerText;
|
|
1134
1120
|
}, [element, docContext, rootSelector]);
|
|
1135
|
-
useEventListener(element, 'click',
|
|
1121
|
+
useEventListener(element, 'click', react.useCallback(() => {
|
|
1136
1122
|
navigator.clipboard
|
|
1137
1123
|
.writeText(textToCopy.trim())
|
|
1138
1124
|
.then(() => {
|
|
@@ -1140,24 +1126,24 @@ const CopyClipboard = ({ element, rootSelector, docContext, }) => {
|
|
|
1140
1126
|
})
|
|
1141
1127
|
.catch(() => { });
|
|
1142
1128
|
}, [textToCopy]));
|
|
1143
|
-
useEventListener(element, 'mouseleave',
|
|
1129
|
+
useEventListener(element, 'mouseleave', react.useCallback(() => {
|
|
1144
1130
|
setShowSuccessContent(false);
|
|
1145
1131
|
}, []));
|
|
1146
|
-
return showSuccessContent ? (
|
|
1132
|
+
return showSuccessContent ? (jsxRuntime.jsx(reactCore.Tooltip, { isVisible: true, triggerRef: () => element, content: getResource('Successfully copied to clipboard!'), className: "pfext-quick-start__base" }, "after-copy")) : (jsxRuntime.jsx(reactCore.Tooltip, { triggerRef: () => element, content: getResource('Copy to clipboard'), className: "pfext-quick-start__base" }, "before-copy"));
|
|
1147
1133
|
};
|
|
1148
|
-
const MarkdownCopyClipboard = ({ docContext, rootSelector
|
|
1134
|
+
const MarkdownCopyClipboard = ({ docContext, rootSelector }) => {
|
|
1149
1135
|
const elements = docContext.querySelectorAll(`${rootSelector} [${MARKDOWN_COPY_BUTTON_ID}]`);
|
|
1150
|
-
return elements.length > 0 ? (
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1136
|
+
return elements.length > 0 ? (jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from(elements).map((elm) => {
|
|
1137
|
+
const attributeValue = elm.getAttribute(MARKDOWN_COPY_BUTTON_ID);
|
|
1138
|
+
return (jsxRuntime.jsx(CopyClipboard, { element: elm, rootSelector: rootSelector, docContext: docContext }, attributeValue));
|
|
1139
|
+
}) })) : null;
|
|
1154
1140
|
};
|
|
1155
1141
|
|
|
1156
1142
|
const removeTemplateWhitespace = (template) => template.replace(/>(?:\s|\n)+</g, '><');
|
|
1157
1143
|
|
|
1158
1144
|
const useInlineCopyClipboardShowdownExtension = () => {
|
|
1159
|
-
const { getResource } =
|
|
1160
|
-
return
|
|
1145
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1146
|
+
return react.useMemo(() => ({
|
|
1161
1147
|
type: 'lang',
|
|
1162
1148
|
regex: /`([^`](.*?)[^`])`{{copy}}/g,
|
|
1163
1149
|
replace: (text, group, _, groupId) => {
|
|
@@ -1169,7 +1155,7 @@ const useInlineCopyClipboardShowdownExtension = () => {
|
|
|
1169
1155
|
<span class="pf-v6-c-clipboard-copy__actions">
|
|
1170
1156
|
<span class="pf-v6-c-clipboard-copy__actions-item">
|
|
1171
1157
|
<button class="pf-v6-c-button pf-m-plain" aria-label="${getResource('Copy to clipboard')}" ${MARKDOWN_COPY_BUTTON_ID}="${groupId}">
|
|
1172
|
-
${server.renderToStaticMarkup(
|
|
1158
|
+
${server.renderToStaticMarkup(jsxRuntime.jsx(CopyIcon__default["default"], {}))}
|
|
1173
1159
|
</button>
|
|
1174
1160
|
</span>
|
|
1175
1161
|
</span>
|
|
@@ -1178,10 +1164,9 @@ const useInlineCopyClipboardShowdownExtension = () => {
|
|
|
1178
1164
|
}), [getResource]);
|
|
1179
1165
|
};
|
|
1180
1166
|
|
|
1181
|
-
/* eslint-disable max-len */
|
|
1182
1167
|
const useMultilineCopyClipboardShowdownExtension = () => {
|
|
1183
|
-
const { getResource } =
|
|
1184
|
-
return
|
|
1168
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1169
|
+
return react.useMemo(() => ({
|
|
1185
1170
|
type: 'lang',
|
|
1186
1171
|
regex: /```[\n]\s*((((?!```).)*?\n)+)\s*```{{copy}}/g,
|
|
1187
1172
|
replace: (text, group, _1, _2, groupId) => {
|
|
@@ -1193,7 +1178,7 @@ const useMultilineCopyClipboardShowdownExtension = () => {
|
|
|
1193
1178
|
<div class="pf-v6-c-code-block__actions">
|
|
1194
1179
|
<div class="pf-v6-c-code-block__actions-item">
|
|
1195
1180
|
<button class="pf-v6-c-button pf-m-plain" type="button" aria-label="${getResource('Copy to clipboard')}" ${MARKDOWN_COPY_BUTTON_ID}="${groupId}">
|
|
1196
|
-
${server.renderToStaticMarkup(
|
|
1181
|
+
${server.renderToStaticMarkup(jsxRuntime.jsx(CopyIcon__default["default"], {}))}
|
|
1197
1182
|
</button>
|
|
1198
1183
|
</div>
|
|
1199
1184
|
</div>
|
|
@@ -1285,9 +1270,9 @@ const markdownConvert = (markdown, extensions) => tslib.__awaiter(void 0, void 0
|
|
|
1285
1270
|
return DOMPurify.sanitize(md);
|
|
1286
1271
|
});
|
|
1287
1272
|
const SyncMarkdownView = ({ content, emptyMsg, extensions, renderExtension, exactHeight, inline, className, }) => {
|
|
1288
|
-
const { getResource } =
|
|
1289
|
-
const [markup, setMarkup] =
|
|
1290
|
-
|
|
1273
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1274
|
+
const [markup, setMarkup] = react.useState('');
|
|
1275
|
+
react.useEffect(() => {
|
|
1291
1276
|
function getMd() {
|
|
1292
1277
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
1293
1278
|
const md = yield markdownConvert(content || emptyMsg || getResource('Not available'), extensions);
|
|
@@ -1303,7 +1288,7 @@ const SyncMarkdownView = ({ content, emptyMsg, extensions, renderExtension, exac
|
|
|
1303
1288
|
isEmpty: !content,
|
|
1304
1289
|
className,
|
|
1305
1290
|
};
|
|
1306
|
-
return inline ?
|
|
1291
|
+
return inline ? jsxRuntime.jsx(InlineMarkdownView, Object.assign({}, innerProps)) : jsxRuntime.jsx(IFrameMarkdownView, Object.assign({}, innerProps));
|
|
1307
1292
|
};
|
|
1308
1293
|
const uniqueId = (function () {
|
|
1309
1294
|
let num = 0;
|
|
@@ -1315,8 +1300,8 @@ const uniqueId = (function () {
|
|
|
1315
1300
|
})();
|
|
1316
1301
|
const RenderExtension = ({ renderExtension, selector, markup, docContext, }) => {
|
|
1317
1302
|
const forceRender = useForceRender();
|
|
1318
|
-
const markupRef =
|
|
1319
|
-
const shouldRenderExtension =
|
|
1303
|
+
const markupRef = react.useRef(null);
|
|
1304
|
+
const shouldRenderExtension = react.useCallback(() => {
|
|
1320
1305
|
if (markupRef.current === markup) {
|
|
1321
1306
|
return true;
|
|
1322
1307
|
}
|
|
@@ -1329,25 +1314,23 @@ const RenderExtension = ({ renderExtension, selector, markup, docContext, }) =>
|
|
|
1329
1314
|
* which causes the component rendered by renderExtension to receive old copy of document
|
|
1330
1315
|
* use forceRender to delay the rendering of extension by one render cycle
|
|
1331
1316
|
*/
|
|
1332
|
-
|
|
1317
|
+
react.useEffect(() => {
|
|
1333
1318
|
if (renderExtension) {
|
|
1334
1319
|
forceRender();
|
|
1335
1320
|
}
|
|
1336
1321
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1337
1322
|
}, [markup]);
|
|
1338
|
-
return (
|
|
1323
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: shouldRenderExtension() ? renderExtension === null || renderExtension === void 0 ? void 0 : renderExtension(docContext !== null && docContext !== void 0 ? docContext : document, selector) : null }));
|
|
1339
1324
|
};
|
|
1340
1325
|
const InlineMarkdownView = ({ markup, isEmpty, renderExtension, className, }) => {
|
|
1341
|
-
const id =
|
|
1342
|
-
return (
|
|
1343
|
-
React__namespace.createElement("div", { dangerouslySetInnerHTML: { __html: markup } }),
|
|
1344
|
-
renderExtension && (React__namespace.createElement(RenderExtension, { renderExtension: renderExtension, selector: `#${id}`, markup: markup }))));
|
|
1326
|
+
const id = react.useMemo(() => uniqueId('markdown'), []);
|
|
1327
|
+
return (jsxRuntime.jsxs("div", Object.assign({ className: reactStyles.css({ 'is-empty': isEmpty }, className), id: id }, { children: [jsxRuntime.jsx("div", { dangerouslySetInnerHTML: { __html: markup } }), renderExtension && (jsxRuntime.jsx(RenderExtension, { renderExtension: renderExtension, selector: `#${id}`, markup: markup }))] })));
|
|
1345
1328
|
};
|
|
1346
1329
|
const IFrameMarkdownView = ({ exactHeight, markup, isEmpty, renderExtension, className, }) => {
|
|
1347
|
-
const [frame, setFrame] =
|
|
1348
|
-
const [loaded, setLoaded] =
|
|
1349
|
-
const updateTimeoutHandle =
|
|
1350
|
-
const updateDimensions =
|
|
1330
|
+
const [frame, setFrame] = react.useState();
|
|
1331
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
1332
|
+
const updateTimeoutHandle = react.useRef(null);
|
|
1333
|
+
const updateDimensions = react.useCallback(() => {
|
|
1351
1334
|
var _a;
|
|
1352
1335
|
if (!((_a = frame === null || frame === void 0 ? void 0 : frame.contentWindow) === null || _a === void 0 ? void 0 : _a.document.body.firstChild)) {
|
|
1353
1336
|
return;
|
|
@@ -1364,10 +1347,10 @@ const IFrameMarkdownView = ({ exactHeight, markup, isEmpty, renderExtension, cla
|
|
|
1364
1347
|
}
|
|
1365
1348
|
});
|
|
1366
1349
|
}, [frame, exactHeight]);
|
|
1367
|
-
|
|
1350
|
+
react.useEffect(() => () => {
|
|
1368
1351
|
clearTimeout(updateTimeoutHandle.current);
|
|
1369
1352
|
}, []);
|
|
1370
|
-
const onLoad =
|
|
1353
|
+
const onLoad = react.useCallback(() => {
|
|
1371
1354
|
updateDimensions();
|
|
1372
1355
|
setLoaded(true);
|
|
1373
1356
|
}, [updateDimensions]);
|
|
@@ -1400,9 +1383,9 @@ const IFrameMarkdownView = ({ exactHeight, markup, isEmpty, renderExtension, cla
|
|
|
1400
1383
|
}
|
|
1401
1384
|
</style>
|
|
1402
1385
|
<body class="pf-m-redhat-font"><div style="overflow-y: auto;">${markup}</div></body>`;
|
|
1403
|
-
return (
|
|
1404
|
-
|
|
1405
|
-
|
|
1386
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("iframe", { sandbox: "allow-popups allow-popups-to-escape-sandbox allow-same-origin", srcDoc: contents, style: { border: '0px', display: 'block', width: '100%', height: '0' }, ref: (r) => {
|
|
1387
|
+
setFrame(r);
|
|
1388
|
+
}, onLoad: () => onLoad(), className: className }), loaded && frame && renderExtension && (jsxRuntime.jsx(RenderExtension, { markup: markup, selector: '', renderExtension: renderExtension, docContext: frame.contentDocument }))] }));
|
|
1406
1389
|
};
|
|
1407
1390
|
|
|
1408
1391
|
const LINK_LABEL = '[\\d\\w\\s-()$!]+';
|
|
@@ -1412,13 +1395,13 @@ const SELECTOR_ID = `[\\w-]+`;
|
|
|
1412
1395
|
const HIGHLIGHT_REGEXP = new RegExp(`\\[(${LINK_LABEL})]{{(${HIGHLIGHT_ACTIONS.join('|')}) (${SELECTOR_ID})}}`, 'g');
|
|
1413
1396
|
|
|
1414
1397
|
const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
|
|
1415
|
-
const { markdown } =
|
|
1398
|
+
const { markdown } = react.useContext(QuickStartContext);
|
|
1416
1399
|
const inlineCopyClipboardShowdownExtension = useInlineCopyClipboardShowdownExtension();
|
|
1417
1400
|
const multilineCopyClipboardShowdownExtension = useMultilineCopyClipboardShowdownExtension();
|
|
1418
1401
|
const admonitionShowdownExtension = useAdmonitionShowdownExtension();
|
|
1419
1402
|
const codeShowdownExtension = useCodeShowdownExtension();
|
|
1420
1403
|
const accordionShowdownExtension = useAccordionShowdownExtension();
|
|
1421
|
-
return (
|
|
1404
|
+
return (jsxRuntime.jsx(SyncMarkdownView, { inline: true, content: content, exactHeight: exactHeight, extensions: [
|
|
1422
1405
|
{
|
|
1423
1406
|
type: 'lang',
|
|
1424
1407
|
regex: HIGHLIGHT_REGEXP,
|
|
@@ -1443,13 +1426,9 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
|
|
|
1443
1426
|
codeShowdownExtension,
|
|
1444
1427
|
accordionShowdownExtension,
|
|
1445
1428
|
...(markdown ? markdown.extensions : []),
|
|
1446
|
-
], renderExtension: (docContext, rootSelector) => (
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
React__namespace.createElement(MarkdownCopyClipboard, { docContext: docContext, rootSelector: rootSelector }),
|
|
1450
|
-
markdown &&
|
|
1451
|
-
markdown.renderExtension &&
|
|
1452
|
-
markdown.renderExtension(docContext, rootSelector))), className: className }));
|
|
1429
|
+
], renderExtension: (docContext, rootSelector) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(AccordionRenderExtension, { docContext: docContext }), jsxRuntime.jsx(MarkdownHighlightExtension, { docContext: docContext, rootSelector: rootSelector }), jsxRuntime.jsx(MarkdownCopyClipboard, { docContext: docContext, rootSelector: rootSelector }), markdown &&
|
|
1430
|
+
markdown.renderExtension &&
|
|
1431
|
+
markdown.renderExtension(docContext, rootSelector)] })), className: className }));
|
|
1453
1432
|
};
|
|
1454
1433
|
|
|
1455
1434
|
var AdmonitionType;
|
|
@@ -1462,14 +1441,14 @@ var AdmonitionType;
|
|
|
1462
1441
|
})(AdmonitionType || (AdmonitionType = {}));
|
|
1463
1442
|
const admonitionToAlertVariantMap = {
|
|
1464
1443
|
[AdmonitionType.NOTE]: { variant: 'info' },
|
|
1465
|
-
[AdmonitionType.TIP]: { variant: 'custom', customIcon:
|
|
1444
|
+
[AdmonitionType.TIP]: { variant: 'custom', customIcon: jsxRuntime.jsx(LightbulbIcon__default["default"], {}) },
|
|
1466
1445
|
[AdmonitionType.IMPORTANT]: { variant: 'danger' },
|
|
1467
|
-
[AdmonitionType.CAUTION]: { variant: 'warning', customIcon:
|
|
1446
|
+
[AdmonitionType.CAUTION]: { variant: 'warning', customIcon: jsxRuntime.jsx(FireIcon__default["default"], {}) },
|
|
1468
1447
|
[AdmonitionType.WARNING]: { variant: 'warning' },
|
|
1469
1448
|
};
|
|
1470
1449
|
const useAdmonitionShowdownExtension = () =>
|
|
1471
1450
|
// const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
|
|
1472
|
-
|
|
1451
|
+
react.useMemo(() => ({
|
|
1473
1452
|
type: 'lang',
|
|
1474
1453
|
regex: /\[(.+)]{{(admonition) ([\w-]+)}}/g,
|
|
1475
1454
|
replace: (text, content, admonitionLabel, admonitionType, groupId) => {
|
|
@@ -1478,39 +1457,35 @@ React__namespace.useMemo(() => ({
|
|
|
1478
1457
|
}
|
|
1479
1458
|
admonitionType = admonitionType.toUpperCase();
|
|
1480
1459
|
const { variant, customIcon } = admonitionToAlertVariantMap[admonitionType];
|
|
1481
|
-
const mdContent =
|
|
1482
|
-
const pfAlert = (
|
|
1460
|
+
const mdContent = jsxRuntime.jsx(QuickStartMarkdownView, { content: content });
|
|
1461
|
+
const pfAlert = (jsxRuntime.jsx(reactCore.Alert, Object.assign({ variant: variant }, (customIcon && { customIcon }), { isInline: true, title: admonitionType, className: "pfext-markdown-admonition" }, { children: mdContent })));
|
|
1483
1462
|
return removeTemplateWhitespace(server.renderToStaticMarkup(pfAlert));
|
|
1484
1463
|
},
|
|
1485
1464
|
}), []);
|
|
1486
1465
|
|
|
1487
|
-
const useCodeShowdownExtension = () =>
|
|
1466
|
+
const useCodeShowdownExtension = () => react.useMemo(() => ({
|
|
1488
1467
|
type: 'output',
|
|
1489
1468
|
regex: /<pre><code>(.*?)\n?<\/code><\/pre>/g,
|
|
1490
1469
|
replace: (text, content) => {
|
|
1491
1470
|
if (!content) {
|
|
1492
1471
|
return text;
|
|
1493
1472
|
}
|
|
1494
|
-
const pfCodeBlock =
|
|
1473
|
+
const pfCodeBlock = jsxRuntime.jsx(reactCore.CodeBlock, { children: content });
|
|
1495
1474
|
return removeTemplateWhitespace(server.renderToStaticMarkup(pfCodeBlock));
|
|
1496
1475
|
},
|
|
1497
1476
|
}), []);
|
|
1498
1477
|
|
|
1499
|
-
const useAccordionShowdownExtension = () =>
|
|
1478
|
+
const useAccordionShowdownExtension = () => react.useMemo(() => ({
|
|
1500
1479
|
type: 'lang',
|
|
1501
1480
|
regex: /\[(.+)]{{(accordion) ("(.*?)")}}/g,
|
|
1502
1481
|
replace: (_text, accordionContent, _command, accordionHeading) => {
|
|
1503
1482
|
const accordionId = String(accordionHeading).replace(/\s/g, '-');
|
|
1504
|
-
return removeTemplateWhitespace(server.renderToStaticMarkup(
|
|
1505
|
-
React__namespace.createElement(reactCore.Accordion, { asDefinitionList: true },
|
|
1506
|
-
React__namespace.createElement(reactCore.AccordionItem, { isExpanded: false },
|
|
1507
|
-
React__namespace.createElement(reactCore.AccordionToggle, { id: `${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}` }, accordionHeading),
|
|
1508
|
-
React__namespace.createElement(reactCore.AccordionContent, { id: `${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}` }, accordionContent))))));
|
|
1483
|
+
return removeTemplateWhitespace(server.renderToStaticMarkup(jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(reactCore.Accordion, Object.assign({ asDefinitionList: true }, { children: jsxRuntime.jsxs(reactCore.AccordionItem, Object.assign({ isExpanded: false }, { children: [jsxRuntime.jsx(reactCore.AccordionToggle, Object.assign({ id: `${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}` }, { children: accordionHeading })), jsxRuntime.jsx(reactCore.AccordionContent, Object.assign({ id: `${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}` }, { children: accordionContent }))] })) })) })));
|
|
1509
1484
|
},
|
|
1510
1485
|
}), []);
|
|
1511
1486
|
|
|
1512
1487
|
const AccordionShowdownHandler = ({ buttonElement, contentElement, }) => {
|
|
1513
|
-
const [expanded, setExpanded] =
|
|
1488
|
+
const [expanded, setExpanded] = react.useState(false);
|
|
1514
1489
|
const handleClick = () => {
|
|
1515
1490
|
const expandedModifier = 'pf-m-expanded';
|
|
1516
1491
|
buttonElement.className = `pf-v6-c-accordion__toggle ${!expanded ? expandedModifier : ''}`;
|
|
@@ -1519,127 +1494,102 @@ const AccordionShowdownHandler = ({ buttonElement, contentElement, }) => {
|
|
|
1519
1494
|
setExpanded(!expanded);
|
|
1520
1495
|
};
|
|
1521
1496
|
useEventListener(buttonElement, 'click', handleClick);
|
|
1522
|
-
return
|
|
1497
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
1523
1498
|
};
|
|
1524
1499
|
const AccordionRenderExtension = ({ docContext }) => {
|
|
1525
1500
|
const buttonElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_BUTTON_ID}]`);
|
|
1526
1501
|
const contentElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_CONTENT_ID}]`);
|
|
1527
|
-
return buttonElements.length > 0 ? (
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1502
|
+
return buttonElements.length > 0 ? (jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from(buttonElements).map((elm) => {
|
|
1503
|
+
const content = Array.from(contentElements).find((elm2) => {
|
|
1504
|
+
const elmId = elm.id.split(ACCORDION_MARKDOWN_BUTTON_ID)[1];
|
|
1505
|
+
const elm2Id = elm2.id.split(ACCORDION_MARKDOWN_CONTENT_ID)[1];
|
|
1506
|
+
return elmId === elm2Id;
|
|
1507
|
+
});
|
|
1508
|
+
return (jsxRuntime.jsx(AccordionShowdownHandler, { buttonElement: elm, contentElement: content }, elm.id.split(ACCORDION_MARKDOWN_BUTTON_ID)[1]));
|
|
1509
|
+
}) })) : null;
|
|
1535
1510
|
};
|
|
1536
1511
|
|
|
1537
1512
|
const FallbackImg = ({ src, alt, className, fallback }) => {
|
|
1538
|
-
const [isSrcValid, setIsSrcValid] =
|
|
1513
|
+
const [isSrcValid, setIsSrcValid] = react.useState(true);
|
|
1539
1514
|
if (src && isSrcValid) {
|
|
1540
|
-
return
|
|
1515
|
+
return jsxRuntime.jsx("img", { className: className, src: src, alt: alt, onError: () => setIsSrcValid(false) });
|
|
1541
1516
|
}
|
|
1542
|
-
return
|
|
1517
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: fallback });
|
|
1543
1518
|
};
|
|
1544
1519
|
|
|
1545
1520
|
const DASH = '-';
|
|
1546
1521
|
|
|
1547
|
-
const PopoverStatus = ({ hideHeader, children, isVisible = null, statusBody, title, onHide, onShow, }) => (
|
|
1548
|
-
React__namespace.createElement(reactCore.Button, { variant: "link", isInline: true }, statusBody)));
|
|
1522
|
+
const PopoverStatus = ({ hideHeader, children, isVisible = null, statusBody, title, onHide, onShow, }) => (jsxRuntime.jsx(reactCore.Popover, Object.assign({ position: reactCore.PopoverPosition.right, headerContent: hideHeader ? null : title, bodyContent: children, "aria-label": title, onHide: onHide, onShow: onShow, isVisible: isVisible }, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "link", isInline: true }, { children: statusBody })) })));
|
|
1549
1523
|
|
|
1550
1524
|
const StatusIconAndText = ({ icon, title, spin, iconOnly, noTooltip, className, }) => {
|
|
1551
1525
|
if (!title) {
|
|
1552
|
-
return
|
|
1526
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: DASH });
|
|
1553
1527
|
}
|
|
1554
|
-
return (
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
}),
|
|
1559
|
-
!iconOnly && React__namespace.createElement(CamelCaseWrap, { value: title, dataTest: "status-text" })));
|
|
1528
|
+
return (jsxRuntime.jsxs("span", Object.assign({ className: reactStyles.css('pfext-icon-and-text', className), title: iconOnly && !noTooltip ? title : undefined }, { children: [icon &&
|
|
1529
|
+
react.cloneElement(icon, {
|
|
1530
|
+
className: reactStyles.css(spin && 'fa-spin', icon.props.className, !iconOnly && 'pfext-icon-and-text__icon pfext-icon-flex-child'),
|
|
1531
|
+
}), !iconOnly && jsxRuntime.jsx(CamelCaseWrap, { value: title, dataTest: "status-text" })] })));
|
|
1560
1532
|
};
|
|
1561
1533
|
|
|
1562
1534
|
const GenericStatus = (props) => {
|
|
1563
1535
|
const { Icon, children, popoverTitle, title, noTooltip, iconOnly } = props, restProps = tslib.__rest(props, ["Icon", "children", "popoverTitle", "title", "noTooltip", "iconOnly"]);
|
|
1564
|
-
const renderIcon = iconOnly && !noTooltip ?
|
|
1565
|
-
const statusBody = (
|
|
1566
|
-
return
|
|
1536
|
+
const renderIcon = iconOnly && !noTooltip ? jsxRuntime.jsx(Icon, { title: title }) : jsxRuntime.jsx(Icon, {});
|
|
1537
|
+
const statusBody = (jsxRuntime.jsx(StatusIconAndText, Object.assign({}, restProps, { noTooltip: noTooltip, title: title, iconOnly: iconOnly, icon: renderIcon })));
|
|
1538
|
+
return react.Children.toArray(children).length ? (jsxRuntime.jsx(PopoverStatus, Object.assign({ title: popoverTitle || title }, restProps, { statusBody: statusBody }, { children: children }))) : (statusBody);
|
|
1567
1539
|
};
|
|
1568
1540
|
|
|
1569
|
-
const GreenCheckCircleIcon = ({ className, title, size }) => (
|
|
1570
|
-
React__namespace.createElement(CheckCircleIcon__default["default"], { "data-test": "success-icon", className: className, title: title })));
|
|
1541
|
+
const GreenCheckCircleIcon = ({ className, title, size }) => (jsxRuntime.jsx(reactCore.Icon, Object.assign({ size: size, status: "success" }, { children: jsxRuntime.jsx(CheckCircleIcon__default["default"], { "data-test": "success-icon", className: className, title: title }) })));
|
|
1571
1542
|
|
|
1572
|
-
const SuccessStatus = (props) => (
|
|
1543
|
+
const SuccessStatus = (props) => (jsxRuntime.jsx(GenericStatus, Object.assign({}, props, { Icon: GreenCheckCircleIcon, title: props.title || 'Healthy' })));
|
|
1573
1544
|
SuccessStatus.displayName = 'SuccessStatus';
|
|
1574
1545
|
|
|
1575
|
-
const Status = ({ status, title, iconOnly, noTooltip, className
|
|
1546
|
+
const Status = ({ status, title, iconOnly, noTooltip, className }) => {
|
|
1576
1547
|
const statusProps = { title: title || status, iconOnly, noTooltip, className };
|
|
1577
1548
|
switch (status) {
|
|
1578
1549
|
case 'In Progress':
|
|
1579
|
-
return
|
|
1550
|
+
return jsxRuntime.jsx(StatusIconAndText, Object.assign({}, statusProps, { icon: jsxRuntime.jsx(SyncAltIcon__default["default"], {}) }));
|
|
1580
1551
|
case 'Complete':
|
|
1581
|
-
return
|
|
1552
|
+
return jsxRuntime.jsx(SuccessStatus, Object.assign({}, statusProps));
|
|
1582
1553
|
default:
|
|
1583
|
-
return
|
|
1554
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: status || DASH });
|
|
1584
1555
|
}
|
|
1585
1556
|
};
|
|
1586
|
-
const StatusIcon = ({ status }) =>
|
|
1557
|
+
const StatusIcon = ({ status }) => jsxRuntime.jsx(Status, { status: status, iconOnly: true });
|
|
1587
1558
|
|
|
1588
1559
|
const QuickStartTileDescription = ({ description, prerequisites, }) => {
|
|
1589
|
-
const { getResource } =
|
|
1560
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1590
1561
|
const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
|
|
1591
|
-
const buttonRef =
|
|
1592
|
-
return (
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
React__namespace.createElement(reactCore.Button, { variant: "link", isInline: true, "data-testid": "qs-card-prereqs", ref: buttonRef, onClick: (e) => {
|
|
1599
|
-
e.preventDefault();
|
|
1600
|
-
e.stopPropagation();
|
|
1601
|
-
}, "aria-label": getResource('Show prerequisites') },
|
|
1602
|
-
React__namespace.createElement(InfoCircleIcon__default["default"], null)),
|
|
1603
|
-
React__namespace.createElement(reactCore.Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), triggerRef: buttonRef, bodyContent: React__namespace.createElement("div", null,
|
|
1604
|
-
React__namespace.createElement("ul", { "aria-label": getResource('Prerequisites') }, prereqs.map((prerequisite, index) => (
|
|
1605
|
-
// eslint-disable-next-line react/no-array-index-key
|
|
1606
|
-
React__namespace.createElement("li", { key: index },
|
|
1607
|
-
React__namespace.createElement(QuickStartMarkdownView, { content: prerequisite })))))) })))));
|
|
1562
|
+
const buttonRef = react.useRef(null);
|
|
1563
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(QuickStartMarkdownView, { content: description }), (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (jsxRuntime.jsxs(reactCore.Flex, Object.assign({ spaceItems: { default: 'spaceItemsSm' } }, { children: [jsxRuntime.jsxs("h5", { children: [getResource('Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), ' '] }), jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "link", isInline: true, "data-testid": "qs-card-prereqs", ref: buttonRef, onClick: (e) => {
|
|
1564
|
+
e.preventDefault();
|
|
1565
|
+
e.stopPropagation();
|
|
1566
|
+
}, "aria-label": getResource('Show prerequisites') }, { children: jsxRuntime.jsx(InfoCircleIcon__default["default"], {}) })), jsxRuntime.jsx(reactCore.Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), triggerRef: buttonRef, bodyContent: jsxRuntime.jsx("div", { children: jsxRuntime.jsx("ul", Object.assign({ "aria-label": getResource('Prerequisites') }, { children: prereqs.map((prerequisite, index) => (
|
|
1567
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
1568
|
+
jsxRuntime.jsx("li", { children: jsxRuntime.jsx(QuickStartMarkdownView, { content: prerequisite }) }, index))) })) }) })] })))] }));
|
|
1608
1569
|
};
|
|
1609
1570
|
|
|
1610
1571
|
const QuickStartTileFooter = ({ quickStartId, status, totalTasks, onClickContinue, }) => {
|
|
1611
|
-
const { getResource } =
|
|
1612
|
-
const { activeQuickStartID, startQuickStart, restartQuickStart } =
|
|
1613
|
-
const start =
|
|
1572
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1573
|
+
const { activeQuickStartID, startQuickStart, restartQuickStart } = react.useContext(QuickStartContext);
|
|
1574
|
+
const start = react.useCallback(() => {
|
|
1614
1575
|
startQuickStart(quickStartId, totalTasks);
|
|
1615
1576
|
}, [quickStartId, startQuickStart, totalTasks]);
|
|
1616
|
-
const restart =
|
|
1577
|
+
const restart = react.useCallback(() => {
|
|
1617
1578
|
restartQuickStart(quickStartId, totalTasks);
|
|
1618
1579
|
}, [quickStartId, restartQuickStart, totalTasks]);
|
|
1619
|
-
return (
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
React__namespace.createElement(reactCore.Button, { variant: "link", onClick: onClickContinue, isInline: true, "data-testid": "qs-card-inProgress-resume", id: `${quickStartId}-continue`, "aria-labelledby": `${quickStartId}-continue ${quickStartId}` }, getResource('Continue')))),
|
|
1624
|
-
status === exports.QuickStartStatus.COMPLETE && (React__namespace.createElement(reactCore.FlexItem, null,
|
|
1625
|
-
React__namespace.createElement(reactCore.Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-complete-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart')))),
|
|
1626
|
-
status === exports.QuickStartStatus.IN_PROGRESS && (React__namespace.createElement(reactCore.FlexItem, null,
|
|
1627
|
-
React__namespace.createElement(reactCore.Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-inProgress-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart'))))));
|
|
1628
|
-
};
|
|
1629
|
-
|
|
1630
|
-
const QuickStartTileFooterExternal = ({ link, quickStartId, }) => {
|
|
1580
|
+
return (jsxRuntime.jsxs(reactCore.Flex, Object.assign({ justifyContent: { default: 'justifyContentSpaceBetween' } }, { children: [status === exports.QuickStartStatus.NOT_STARTED && (jsxRuntime.jsx(reactCore.FlexItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ onClick: start, variant: "link", isInline: true, "data-testid": "qs-card-notStarted-start", id: `${quickStartId}-start`, "aria-labelledby": `${quickStartId}-start ${quickStartId}` }, { children: getResource('Start') })) })), status === exports.QuickStartStatus.IN_PROGRESS && activeQuickStartID !== quickStartId && (jsxRuntime.jsx(reactCore.FlexItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "link", onClick: onClickContinue, isInline: true, "data-testid": "qs-card-inProgress-resume", id: `${quickStartId}-continue`, "aria-labelledby": `${quickStartId}-continue ${quickStartId}` }, { children: getResource('Continue') })) })), status === exports.QuickStartStatus.COMPLETE && (jsxRuntime.jsx(reactCore.FlexItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-complete-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, { children: getResource('Restart') })) })), status === exports.QuickStartStatus.IN_PROGRESS && (jsxRuntime.jsx(reactCore.FlexItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-inProgress-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, { children: getResource('Restart') })) }))] })));
|
|
1581
|
+
};
|
|
1582
|
+
|
|
1583
|
+
const QuickStartTileFooterExternal = ({ link, quickStartId }) => {
|
|
1631
1584
|
const { href, text } = link;
|
|
1632
|
-
return (
|
|
1633
|
-
React__namespace.createElement(reactCore.FlexItem, null,
|
|
1634
|
-
React__namespace.createElement(reactCore.Button, { component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: React__namespace.createElement(ExternalLinkAltIcon__default["default"], null), iconPosition: "right", id: quickStartId, "aria-labelledby": `${quickStartId}-external ${quickStartId}` }, text || href))));
|
|
1585
|
+
return (jsxRuntime.jsx(reactCore.Flex, Object.assign({ justifyContent: { default: 'justifyContentSpaceBetween' } }, { children: jsxRuntime.jsx(reactCore.FlexItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: jsxRuntime.jsx(ExternalLinkAltIcon__default["default"], {}), iconPosition: "right", id: quickStartId, "aria-labelledby": `${quickStartId}-external ${quickStartId}` }, { children: text || href })) }) })));
|
|
1635
1586
|
};
|
|
1636
1587
|
|
|
1637
|
-
const QuickStartTileHeader = ({ name, quickStartId, onSelect
|
|
1638
|
-
React__namespace.createElement(reactCore.Button, { "data-test": "title", id: quickStartId, variant: "link", isInline: true, onClick: onSelect }, name)));
|
|
1588
|
+
const QuickStartTileHeader = ({ name, quickStartId, onSelect }) => (jsxRuntime.jsx(reactCore.Flex, Object.assign({ flexWrap: { default: 'nowrap' } }, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ "data-test": "title", id: quickStartId, variant: "link", isInline: true, onClick: onSelect }, { children: name })) })));
|
|
1639
1589
|
|
|
1640
1590
|
const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, action, }) => {
|
|
1641
1591
|
const { metadata: { name: id }, spec: { icon, tasks, displayName, description, durationMinutes, prerequisites, link, type }, } = quickStart;
|
|
1642
|
-
const { setActiveQuickStart, footer, getResource } =
|
|
1592
|
+
const { setActiveQuickStart, footer, getResource } = react.useContext(QuickStartContext);
|
|
1643
1593
|
const statusColorMap = {
|
|
1644
1594
|
[exports.QuickStartStatus.COMPLETE]: 'green',
|
|
1645
1595
|
[exports.QuickStartStatus.IN_PROGRESS]: 'purple',
|
|
@@ -1652,11 +1602,10 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, act
|
|
|
1652
1602
|
};
|
|
1653
1603
|
let quickStartIcon;
|
|
1654
1604
|
if (typeof icon === 'object') {
|
|
1655
|
-
quickStartIcon =
|
|
1605
|
+
quickStartIcon = jsxRuntime.jsx(reactCore.Icon, Object.assign({ size: "2xl" }, { children: icon }));
|
|
1656
1606
|
}
|
|
1657
1607
|
else {
|
|
1658
|
-
quickStartIcon = (
|
|
1659
|
-
React__namespace.createElement(FallbackImg, { src: icon, alt: "", className: "pfext-catalog-item-icon__img", fallback: React__namespace.createElement(RocketIcon__default["default"], null) })));
|
|
1608
|
+
quickStartIcon = (jsxRuntime.jsx(reactCore.Icon, Object.assign({ size: "2xl" }, { children: jsxRuntime.jsx(FallbackImg, { src: icon, alt: "", className: "pfext-catalog-item-icon__img", fallback: jsxRuntime.jsx(RocketIcon__default["default"], {}) }) })));
|
|
1660
1609
|
}
|
|
1661
1610
|
const onSelect = () => {
|
|
1662
1611
|
if (!link) {
|
|
@@ -1667,70 +1616,53 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, act
|
|
|
1667
1616
|
}
|
|
1668
1617
|
onClick();
|
|
1669
1618
|
};
|
|
1670
|
-
const footerComponent =
|
|
1619
|
+
const footerComponent = react.useMemo(() => {
|
|
1671
1620
|
if (footer && footer.show === false) {
|
|
1672
1621
|
return null;
|
|
1673
1622
|
}
|
|
1674
1623
|
if (link) {
|
|
1675
|
-
return
|
|
1624
|
+
return jsxRuntime.jsx(QuickStartTileFooterExternal, { link: link, quickStartId: id });
|
|
1676
1625
|
}
|
|
1677
|
-
return (
|
|
1626
|
+
return (jsxRuntime.jsx(QuickStartTileFooter, { quickStartId: id, status: status, totalTasks: tasks === null || tasks === void 0 ? void 0 : tasks.length, onClickContinue: onSelect }));
|
|
1678
1627
|
}, [footer, id, link, status, tasks === null || tasks === void 0 ? void 0 : tasks.length]);
|
|
1679
1628
|
const ActionIcon = (action === null || action === void 0 ? void 0 : action.icon) || OutlinedBookmarkIcon__default["default"];
|
|
1680
|
-
const additionalAction = action ? (
|
|
1681
|
-
return (
|
|
1629
|
+
const additionalAction = action ? (jsxRuntime.jsx(reactCore.Button, Object.assign({ "aria-label": action['aria-label'], icon: jsxRuntime.jsx(ActionIcon, {}), variant: "plain", onClick: action.onClick }, action.buttonProps))) : undefined;
|
|
1630
|
+
return (jsxRuntime.jsxs(reactCore.Card, Object.assign({ id: `${id}-catalog-tile`, style: { height: '100%' }, "data-testid": `qs-card-${camelize(displayName)}`, className: "pfext-catalog-item" }, (isActive && {
|
|
1682
1631
|
isClickable: true,
|
|
1683
1632
|
isSelectable: true,
|
|
1684
1633
|
isSelected: true,
|
|
1685
1634
|
isClicked: true,
|
|
1686
|
-
})
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
})), quickStartIcon),
|
|
1690
|
-
React__namespace.createElement(reactCore.CardTitle, null,
|
|
1691
|
-
React__namespace.createElement(QuickStartTileHeader, { name: displayName, onSelect: onSelect, quickStartId: id })),
|
|
1692
|
-
React__namespace.createElement(reactCore.CardBody, null,
|
|
1693
|
-
React__namespace.createElement(reactCore.Stack, { hasGutter: true },
|
|
1694
|
-
React__namespace.createElement(reactCore.Flex, { spaceItems: { default: 'spaceItemsSm' } },
|
|
1695
|
-
type && React__namespace.createElement(reactCore.Label, { color: type.color }, type.text),
|
|
1696
|
-
durationMinutes && (React__namespace.createElement(reactCore.Label, { variant: "outline", "data-test": "duration", icon: React__namespace.createElement(OutlinedClockIcon__default["default"], null) }, getResource('{{duration, number}} minutes', durationMinutes).replace('{{duration, number}}', durationMinutes))),
|
|
1697
|
-
status !== exports.QuickStartStatus.NOT_STARTED && (React__namespace.createElement(reactCore.Label, { variant: "outline", color: statusColorMap[status], icon: React__namespace.createElement(StatusIcon, { status: status }), "data-test": "status" }, statusLocaleMap[status]))),
|
|
1698
|
-
React__namespace.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }))),
|
|
1699
|
-
React__namespace.createElement(reactCore.CardFooter, null, footerComponent)));
|
|
1635
|
+
}), { children: [jsxRuntime.jsx(reactCore.CardHeader, Object.assign({}, (action && {
|
|
1636
|
+
actions: { actions: additionalAction },
|
|
1637
|
+
}), { children: quickStartIcon })), jsxRuntime.jsx(reactCore.CardTitle, { children: jsxRuntime.jsx(QuickStartTileHeader, { name: displayName, onSelect: onSelect, quickStartId: id }) }), jsxRuntime.jsx(reactCore.CardBody, { children: jsxRuntime.jsxs(reactCore.Stack, Object.assign({ hasGutter: true }, { children: [jsxRuntime.jsxs(reactCore.Flex, Object.assign({ spaceItems: { default: 'spaceItemsSm' } }, { children: [type && jsxRuntime.jsx(reactCore.Label, Object.assign({ color: type.color }, { children: type.text })), durationMinutes && (jsxRuntime.jsx(reactCore.Label, Object.assign({ variant: "outline", "data-test": "duration", icon: jsxRuntime.jsx(OutlinedClockIcon__default["default"], {}) }, { children: getResource('{{duration, number}} minutes', durationMinutes).replace('{{duration, number}}', durationMinutes) }))), status !== exports.QuickStartStatus.NOT_STARTED && (jsxRuntime.jsx(reactCore.Label, Object.assign({ variant: "outline", color: statusColorMap[status], icon: jsxRuntime.jsx(StatusIcon, { status: status }), "data-test": "status" }, { children: statusLocaleMap[status] })))] })), jsxRuntime.jsx(QuickStartTileDescription, { description: description, prerequisites: prerequisites })] })) }), jsxRuntime.jsx(reactCore.CardFooter, { children: footerComponent })] })));
|
|
1700
1638
|
};
|
|
1701
1639
|
|
|
1702
1640
|
const QuickStartCatalog = ({ quickStarts }) => {
|
|
1703
|
-
const { activeQuickStartID, allQuickStartStates } =
|
|
1704
|
-
return (
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
}))));
|
|
1641
|
+
const { activeQuickStartID, allQuickStartStates } = react.useContext(QuickStartContext);
|
|
1642
|
+
return (jsxRuntime.jsx("div", { children: jsxRuntime.jsx(reactCore.Gallery, Object.assign({ hasGutter: true, className: "pfext-quick-start-catalog__gallery" }, { children: quickStarts.map((quickStart, index) => {
|
|
1643
|
+
const { metadata: { name: id }, } = quickStart;
|
|
1644
|
+
return (jsxRuntime.jsx(QuickStartTile, { quickStart: quickStart, isActive: id === activeQuickStartID, status: getQuickStartStatus(allQuickStartStates, id) }, index));
|
|
1645
|
+
}) })) }));
|
|
1709
1646
|
};
|
|
1710
1647
|
|
|
1711
1648
|
const QuickStartCatalogFilterSearch = (_a) => {
|
|
1712
1649
|
var { searchInputText, handleTextChange } = _a, props = tslib.__rest(_a, ["searchInputText", "handleTextChange"]);
|
|
1713
|
-
const { getResource } =
|
|
1714
|
-
return (
|
|
1715
|
-
React__namespace.createElement(reactCore.SearchInput, Object.assign({ placeholder: getResource('Filter by keyword...'), value: searchInputText, onChange: (_ev, value) => handleTextChange(value), onClear: () => handleTextChange('') }, props))));
|
|
1650
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1651
|
+
return (jsxRuntime.jsx(reactCore.ToolbarItem, { children: jsxRuntime.jsx(reactCore.SearchInput, Object.assign({ placeholder: getResource('Filter by keyword...'), value: searchInputText, onChange: (_ev, value) => handleTextChange(value), onClear: () => handleTextChange('') }, props)) }));
|
|
1716
1652
|
};
|
|
1717
1653
|
const QuickStartCatalogFilterSelect = (_a) => {
|
|
1718
1654
|
var { isDropdownOpen, setIsDropdownOpen, onRowfilterSelect, selectedFilters, dropdownItems } = _a, props = tslib.__rest(_a, ["isDropdownOpen", "setIsDropdownOpen", "onRowfilterSelect", "selectedFilters", "dropdownItems"]);
|
|
1719
|
-
const { getResource } =
|
|
1720
|
-
const toggle = (toggleRef) => (
|
|
1721
|
-
|
|
1722
|
-
selectedFilters.length > 0 && React__namespace.createElement(reactCore.Badge, { isRead: true }, selectedFilters.length)));
|
|
1723
|
-
return (React__namespace.createElement(reactCore.ToolbarItem, null,
|
|
1724
|
-
React__namespace.createElement(reactCore.Select, Object.assign({ "aria-label": getResource('Select filter'), isOpen: isDropdownOpen, selected: selectedFilters, onSelect: onRowfilterSelect, onOpenChange: (isOpen) => setIsDropdownOpen(isOpen), toggle: toggle }, props),
|
|
1725
|
-
React__namespace.createElement(reactCore.SelectList, null, dropdownItems))));
|
|
1655
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1656
|
+
const toggle = (toggleRef) => (jsxRuntime.jsxs(reactCore.MenuToggle, Object.assign({ isFullWidth: true, ref: toggleRef, onClick: () => setIsDropdownOpen(!isDropdownOpen), isExpanded: isDropdownOpen }, { children: [getResource('Status'), selectedFilters.length > 0 && jsxRuntime.jsx(reactCore.Badge, Object.assign({ isRead: true }, { children: selectedFilters.length }))] })));
|
|
1657
|
+
return (jsxRuntime.jsx(reactCore.ToolbarItem, { children: jsxRuntime.jsx(reactCore.Select, Object.assign({ "aria-label": getResource('Select filter'), isOpen: isDropdownOpen, selected: selectedFilters, onSelect: onRowfilterSelect, onOpenChange: (isOpen) => setIsDropdownOpen(isOpen), toggle: toggle }, props, { children: jsxRuntime.jsx(reactCore.SelectList, { children: dropdownItems }) })) }));
|
|
1726
1658
|
};
|
|
1727
1659
|
const QuickStartCatalogFilterCount = ({ quickStartsCount }) => {
|
|
1728
|
-
const { getResource } =
|
|
1729
|
-
return (
|
|
1660
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1661
|
+
return (jsxRuntime.jsx(reactCore.ToolbarItem, Object.assign({ align: { default: 'alignEnd' } }, { children: getResource('{{count, number}} item', quickStartsCount).replace('{{count, number}}', quickStartsCount) })));
|
|
1730
1662
|
};
|
|
1731
1663
|
const QuickStartCatalogFilterSearchWrapper = ({ onSearchInputChange = () => { } }) => {
|
|
1732
|
-
const { useQueryParams, filter, setFilter } =
|
|
1733
|
-
|
|
1664
|
+
const { useQueryParams, filter, setFilter } = react.useContext(QuickStartContext);
|
|
1665
|
+
react.useEffect(() => {
|
|
1734
1666
|
// use this effect to clear the search when a `clear all` action is performed higher up
|
|
1735
1667
|
const unlisten = history.listen(({ location }) => {
|
|
1736
1668
|
const searchParams = new URLSearchParams(location.search);
|
|
@@ -1756,7 +1688,7 @@ const QuickStartCatalogFilterSearchWrapper = ({ onSearchInputChange = () => { }
|
|
|
1756
1688
|
}
|
|
1757
1689
|
onSearchInputChange(val);
|
|
1758
1690
|
};
|
|
1759
|
-
return (
|
|
1691
|
+
return (jsxRuntime.jsx(QuickStartCatalogFilterSearch, { searchInputText: filter === null || filter === void 0 ? void 0 : filter.keyword, handleTextChange: handleTextChange }));
|
|
1760
1692
|
};
|
|
1761
1693
|
// compare string/number arrays
|
|
1762
1694
|
const equalsIgnoreOrder = (a, b) => {
|
|
@@ -1774,8 +1706,8 @@ const equalsIgnoreOrder = (a, b) => {
|
|
|
1774
1706
|
return true;
|
|
1775
1707
|
};
|
|
1776
1708
|
const QuickStartCatalogFilterStatusWrapper = ({ onStatusChange = () => { } }) => {
|
|
1777
|
-
const { useQueryParams, filter, setFilter } =
|
|
1778
|
-
|
|
1709
|
+
const { useQueryParams, filter, setFilter } = react.useContext(QuickStartContext);
|
|
1710
|
+
react.useEffect(() => {
|
|
1779
1711
|
// use this effect to clear the status when a `clear all` action is performed higher up
|
|
1780
1712
|
const unlisten = history.listen(({ location }) => {
|
|
1781
1713
|
var _a;
|
|
@@ -1790,8 +1722,8 @@ const QuickStartCatalogFilterStatusWrapper = ({ onStatusChange = () => { } }) =>
|
|
|
1790
1722
|
unlisten();
|
|
1791
1723
|
};
|
|
1792
1724
|
});
|
|
1793
|
-
const [isDropdownOpen, setIsDropdownOpen] =
|
|
1794
|
-
const onRowfilterSelect =
|
|
1725
|
+
const [isDropdownOpen, setIsDropdownOpen] = react.useState(false);
|
|
1726
|
+
const onRowfilterSelect = react.useCallback((_e, selectedValue) => {
|
|
1795
1727
|
setIsDropdownOpen(false);
|
|
1796
1728
|
const selection = Object.entries(filter.status.statusTypes).find(([_key, value]) => value === selectedValue)[0];
|
|
1797
1729
|
const selectedFiltersList = filter.status.statusFilters.includes(selection)
|
|
@@ -1808,33 +1740,24 @@ const QuickStartCatalogFilterStatusWrapper = ({ onStatusChange = () => { } }) =>
|
|
|
1808
1740
|
}
|
|
1809
1741
|
onStatusChange(selectedFiltersList);
|
|
1810
1742
|
}, [filter.status.statusFilters, onStatusChange, setFilter, useQueryParams]);
|
|
1811
|
-
const dropdownItems = Object.entries(filter.status.statusTypes).map(([key, value]) => (
|
|
1812
|
-
|
|
1813
|
-
return (React__namespace.createElement(QuickStartCatalogFilterSelect, { isDropdownOpen: isDropdownOpen, setIsDropdownOpen: setIsDropdownOpen, onRowfilterSelect: onRowfilterSelect, selectedFilters: filter.status.statusFilters, dropdownItems: dropdownItems }));
|
|
1743
|
+
const dropdownItems = Object.entries(filter.status.statusTypes).map(([key, value]) => (jsxRuntime.jsx(reactCore.SelectOption, Object.assign({ "data-key": key, value: value, hasCheckbox: true, isSelected: filter.status.statusFilters.includes(key) }, { children: jsxRuntime.jsx(jsxRuntime.Fragment, { children: value }) }), key)));
|
|
1744
|
+
return (jsxRuntime.jsx(QuickStartCatalogFilterSelect, { isDropdownOpen: isDropdownOpen, setIsDropdownOpen: setIsDropdownOpen, onRowfilterSelect: onRowfilterSelect, selectedFilters: filter.status.statusFilters, dropdownItems: dropdownItems }));
|
|
1814
1745
|
};
|
|
1815
|
-
const QuickStartCatalogFilterCountWrapper = ({ quickStartsCount }) =>
|
|
1746
|
+
const QuickStartCatalogFilterCountWrapper = ({ quickStartsCount, }) => jsxRuntime.jsx(QuickStartCatalogFilterCount, { quickStartsCount: quickStartsCount });
|
|
1816
1747
|
|
|
1817
1748
|
const QuickStartCatalogFilter = (_a) => {
|
|
1818
1749
|
var { quickStartsCount, onSearchInputChange = () => { }, onStatusChange = () => { } } = _a, props = tslib.__rest(_a, ["quickStartsCount", "onSearchInputChange", "onStatusChange"]);
|
|
1819
|
-
return (
|
|
1820
|
-
React__namespace.createElement(reactCore.ToolbarContent, null,
|
|
1821
|
-
React__namespace.createElement(QuickStartCatalogFilterSearchWrapper, { onSearchInputChange: onSearchInputChange }),
|
|
1822
|
-
React__namespace.createElement(QuickStartCatalogFilterStatusWrapper, { onStatusChange: onStatusChange }),
|
|
1823
|
-
React__namespace.createElement(QuickStartCatalogFilterCountWrapper, { quickStartsCount: quickStartsCount }))));
|
|
1750
|
+
return (jsxRuntime.jsx(reactCore.Toolbar, Object.assign({}, props, { children: jsxRuntime.jsxs(reactCore.ToolbarContent, { children: [jsxRuntime.jsx(QuickStartCatalogFilterSearchWrapper, { onSearchInputChange: onSearchInputChange }), jsxRuntime.jsx(QuickStartCatalogFilterStatusWrapper, { onStatusChange: onStatusChange }), jsxRuntime.jsx(QuickStartCatalogFilterCountWrapper, { quickStartsCount: quickStartsCount })] }) })));
|
|
1824
1751
|
};
|
|
1825
1752
|
|
|
1826
1753
|
const QuickStartCatalogEmptyState = ({ clearFilters }) => {
|
|
1827
|
-
const { getResource } =
|
|
1828
|
-
return (
|
|
1829
|
-
React__namespace.createElement(reactCore.EmptyStateBody, null, getResource('No results match the filter criteria. Remove filters or clear all filters to show results.')),
|
|
1830
|
-
React__namespace.createElement(reactCore.EmptyStateFooter, null,
|
|
1831
|
-
React__namespace.createElement(reactCore.EmptyStateActions, null,
|
|
1832
|
-
React__namespace.createElement(reactCore.Button, { variant: "link", onClick: clearFilters, "data-test": "clear-filter button" }, getResource('Clear all filters'))))));
|
|
1754
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1755
|
+
return (jsxRuntime.jsxs(reactCore.EmptyState, Object.assign({ headingLevel: "h4", icon: SearchIcon__default["default"], titleText: jsxRuntime.jsx(jsxRuntime.Fragment, { children: getResource('No results found') }) }, { children: [jsxRuntime.jsx(reactCore.EmptyStateBody, { children: getResource('No results match the filter criteria. Remove filters or clear all filters to show results.') }), jsxRuntime.jsx(reactCore.EmptyStateFooter, { children: jsxRuntime.jsx(reactCore.EmptyStateActions, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "link", onClick: clearFilters, "data-test": "clear-filter button" }, { children: getResource('Clear all filters') })) }) })] })));
|
|
1833
1756
|
};
|
|
1834
1757
|
const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) => q1.spec.displayName.localeCompare(q2.spec.displayName), title, hint, showTitle = true, }) => {
|
|
1835
|
-
const sortFncCallback =
|
|
1836
|
-
const { allQuickStarts = [], setAllQuickStarts, allQuickStartStates, getResource, filter, setFilter, loading, } =
|
|
1837
|
-
|
|
1758
|
+
const sortFncCallback = react.useCallback(sortFnc, [sortFnc]);
|
|
1759
|
+
const { allQuickStarts = [], setAllQuickStarts, allQuickStartStates, getResource, filter, setFilter, loading, } = react.useContext(QuickStartContext);
|
|
1760
|
+
react.useEffect(() => {
|
|
1838
1761
|
// passed through prop, not context
|
|
1839
1762
|
if (quickStarts && JSON.stringify(quickStarts) !== JSON.stringify(allQuickStarts)) {
|
|
1840
1763
|
setAllQuickStarts(quickStarts);
|
|
@@ -1843,8 +1766,8 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
|
|
|
1843
1766
|
const initialFilteredQuickStarts = showFilter
|
|
1844
1767
|
? filterQuickStarts(allQuickStarts, filter.keyword, filter.status.statusFilters, allQuickStartStates).sort(sortFncCallback)
|
|
1845
1768
|
: allQuickStarts;
|
|
1846
|
-
const [filteredQuickStarts, setFilteredQuickStarts] =
|
|
1847
|
-
|
|
1769
|
+
const [filteredQuickStarts, setFilteredQuickStarts] = react.useState(initialFilteredQuickStarts);
|
|
1770
|
+
react.useEffect(() => {
|
|
1848
1771
|
const filteredQs = showFilter
|
|
1849
1772
|
? filterQuickStarts(allQuickStarts, filter.keyword, filter.status.statusFilters, allQuickStartStates).sort(sortFncCallback)
|
|
1850
1773
|
: allQuickStarts;
|
|
@@ -1887,59 +1810,37 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
|
|
|
1887
1810
|
}
|
|
1888
1811
|
};
|
|
1889
1812
|
if (loading) {
|
|
1890
|
-
return
|
|
1813
|
+
return jsxRuntime.jsx(LoadingBox, {});
|
|
1891
1814
|
}
|
|
1892
1815
|
if (!allQuickStarts || allQuickStarts.length === 0) {
|
|
1893
|
-
return
|
|
1816
|
+
return jsxRuntime.jsx(EmptyBox, { label: getResource('Quick Starts') });
|
|
1894
1817
|
}
|
|
1895
|
-
return (
|
|
1896
|
-
(showTitle || showFilter) && (React__namespace.createElement(reactCore.PageSection, { hasBodyWrapper: false },
|
|
1897
|
-
showTitle && (React__namespace.createElement(reactCore.Content, { isEditorial: true },
|
|
1898
|
-
React__namespace.createElement(reactCore.Title, { headingLevel: "h1", "data-test": "page-title" }, title || getResource('Quick Starts')),
|
|
1899
|
-
hint && React__namespace.createElement("div", null, hint))),
|
|
1900
|
-
showTitle && React__namespace.createElement(reactCore.Divider, { component: "div" }),
|
|
1901
|
-
showFilter && (React__namespace.createElement(React__namespace.Fragment, null,
|
|
1902
|
-
React__namespace.createElement(QuickStartCatalogFilter, { quickStartsCount: filteredQuickStarts.length, onSearchInputChange: onSearchInputChange, onStatusChange: onStatusChange }))))),
|
|
1903
|
-
React__namespace.createElement(reactCore.PageSection, { hasBodyWrapper: false }, filteredQuickStarts.length === 0 ? (React__namespace.createElement(QuickStartCatalogEmptyState, { clearFilters: clearFilters })) : (React__namespace.createElement(QuickStartCatalog, { quickStarts: filteredQuickStarts })))));
|
|
1818
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [(showTitle || showFilter) && (jsxRuntime.jsxs(reactCore.PageSection, Object.assign({ hasBodyWrapper: false }, { children: [showTitle && (jsxRuntime.jsxs(reactCore.Content, Object.assign({ isEditorial: true }, { children: [jsxRuntime.jsx(reactCore.Title, Object.assign({ headingLevel: "h1", "data-test": "page-title" }, { children: title || getResource('Quick Starts') })), hint && jsxRuntime.jsx("div", { children: hint })] }))), showTitle && jsxRuntime.jsx(reactCore.Divider, { component: "div" }), showFilter && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(QuickStartCatalogFilter, { quickStartsCount: filteredQuickStarts.length, onSearchInputChange: onSearchInputChange, onStatusChange: onStatusChange }) }))] }))), jsxRuntime.jsx(reactCore.PageSection, Object.assign({ hasBodyWrapper: false }, { children: filteredQuickStarts.length === 0 ? (jsxRuntime.jsx(QuickStartCatalogEmptyState, { clearFilters: clearFilters })) : (jsxRuntime.jsx(QuickStartCatalog, { quickStarts: filteredQuickStarts })) }))] }));
|
|
1904
1819
|
};
|
|
1905
1820
|
|
|
1906
|
-
const QuickStartCatalogHeader = ({ title, hint, }) => (
|
|
1907
|
-
React__namespace.createElement(reactCore.Title, { headingLevel: "h1", "data-pf-content": "true" }, title),
|
|
1908
|
-
hint && React__namespace.createElement("div", null, hint)));
|
|
1821
|
+
const QuickStartCatalogHeader = ({ title, hint, }) => (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(reactCore.Title, Object.assign({ headingLevel: "h1", "data-pf-content": "true" }, { children: title })), hint && jsxRuntime.jsx("div", { children: hint })] }));
|
|
1909
1822
|
|
|
1910
|
-
const QuickStartCatalogSection = ({ children }) => (
|
|
1823
|
+
const QuickStartCatalogSection = ({ children }) => (jsxRuntime.jsx("div", { children: children }));
|
|
1911
1824
|
|
|
1912
|
-
const QuickStartCatalogToolbar = ({ children }) => (
|
|
1825
|
+
const QuickStartCatalogToolbar = ({ children }) => (jsxRuntime.jsx(reactCore.Toolbar, { children: children }));
|
|
1913
1826
|
|
|
1914
|
-
const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel
|
|
1915
|
-
const { getResource } =
|
|
1916
|
-
return (
|
|
1917
|
-
React__namespace.createElement(reactCore.FlexItem, { align: { default: 'alignRight' } },
|
|
1918
|
-
React__namespace.createElement(reactCore.Button, { variant: "secondary", "data-test": "cancel button", onClick: onCancel }, getResource('Cancel'))),
|
|
1919
|
-
React__namespace.createElement(reactCore.FlexItem, null,
|
|
1920
|
-
React__namespace.createElement(reactCore.Button, { variant: "primary", "data-test": "leave button", onClick: onConfirm }, getResource('Leave')))), isFullScreen: true }, getResource('Your progress will be saved.')));
|
|
1827
|
+
const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel }) => {
|
|
1828
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1829
|
+
return (jsxRuntime.jsx(Modal, Object.assign({ isOpen: isOpen, variant: deprecated.ModalVariant.small, showClose: false, "data-test": "leave-quickstart", title: getResource('Leave quick start?'), footer: jsxRuntime.jsxs(reactCore.Flex, { children: [jsxRuntime.jsx(reactCore.FlexItem, Object.assign({ align: { default: 'alignRight' } }, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "secondary", "data-test": "cancel button", onClick: onCancel }, { children: getResource('Cancel') })) })), jsxRuntime.jsx(reactCore.FlexItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "primary", "data-test": "leave button", onClick: onConfirm }, { children: getResource('Leave') })) })] }), isFullScreen: true }, { children: getResource('Your progress will be saved.') })));
|
|
1921
1830
|
};
|
|
1922
1831
|
|
|
1923
1832
|
const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, isActiveTask, onTaskSelect, children, }) => {
|
|
1924
|
-
const titleRef =
|
|
1925
|
-
const { focusOnQuickStart } =
|
|
1926
|
-
|
|
1833
|
+
const titleRef = react.useRef(null);
|
|
1834
|
+
const { focusOnQuickStart } = react.useContext(QuickStartContext);
|
|
1835
|
+
react.useEffect(() => {
|
|
1927
1836
|
if (focusOnQuickStart && isActiveTask) {
|
|
1928
1837
|
// Focus the WizardNavItem button element that contains the title
|
|
1929
1838
|
titleRef.current.parentNode.focus();
|
|
1930
1839
|
}
|
|
1931
1840
|
}, [focusOnQuickStart, isActiveTask]);
|
|
1932
1841
|
const failedReview = taskStatus === exports.QuickStartTaskStatus.FAILED;
|
|
1933
|
-
const tryAgain = failedReview && (
|
|
1934
|
-
|
|
1935
|
-
React__namespace.createElement("div", { className: "pfext-quick-start-task-header__tryagain" }, "Try the steps again.")));
|
|
1936
|
-
const content = (React__namespace.createElement("div", { ref: titleRef },
|
|
1937
|
-
React__namespace.createElement(reactCore.Title, { headingLevel: "h3", size: size },
|
|
1938
|
-
React__namespace.createElement("span", { className: "pfext-quick-start-task-header__title" }, title),
|
|
1939
|
-
isActiveTask && subtitle && (React__namespace.createElement("span", null,
|
|
1940
|
-
' ',
|
|
1941
|
-
React__namespace.createElement("span", { "data-test-id": "quick-start-task-subtitle", className: "pfext-quick-start-task-header__subtitle" }, subtitle))),
|
|
1942
|
-
tryAgain)));
|
|
1842
|
+
const tryAgain = failedReview && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", {}), jsxRuntime.jsx("div", Object.assign({ className: "pfext-quick-start-task-header__tryagain" }, { children: "Try the steps again." }))] }));
|
|
1843
|
+
const content = (jsxRuntime.jsx("div", Object.assign({ ref: titleRef }, { children: jsxRuntime.jsxs(reactCore.Title, Object.assign({ headingLevel: "h3", size: size }, { children: [jsxRuntime.jsx("span", Object.assign({ className: "pfext-quick-start-task-header__title" }, { children: title })), isActiveTask && subtitle && (jsxRuntime.jsxs("span", { children: [' ', jsxRuntime.jsx("span", Object.assign({ "data-test-id": "quick-start-task-subtitle", className: "pfext-quick-start-task-header__subtitle" }, { children: subtitle }))] })), tryAgain] })) })));
|
|
1943
1844
|
let status = 'default';
|
|
1944
1845
|
if (taskStatus === exports.QuickStartTaskStatus.FAILED) {
|
|
1945
1846
|
status = 'error';
|
|
@@ -1947,42 +1848,31 @@ const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, is
|
|
|
1947
1848
|
else if (taskStatus === exports.QuickStartTaskStatus.SUCCESS) {
|
|
1948
1849
|
status = 'success';
|
|
1949
1850
|
}
|
|
1950
|
-
return (
|
|
1851
|
+
return (jsxRuntime.jsx(reactCore.WizardNavItem, Object.assign({ content: content, stepIndex: taskIndex, onClick: () => onTaskSelect(taskIndex - 1), component: "button", isCurrent: isActiveTask, status: status, className: "pfext-quick-start-task-header" }, { children: children })));
|
|
1951
1852
|
};
|
|
1952
1853
|
|
|
1953
|
-
const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => (tasks === null || tasks === void 0 ? void 0 : tasks.length) > 0 ? (
|
|
1854
|
+
const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => (tasks === null || tasks === void 0 ? void 0 : tasks.length) > 0 ? (jsxRuntime.jsx("ul", Object.assign({ className: "pf-v6-c-wizard pf-v6-c-wizard__nav-list" }, { children: tasks.map((task, index) => (jsxRuntime.jsx(QuickStartTaskHeader, { title: task.title, taskIndex: index + 1, size: "md", taskStatus: allTaskStatuses[index], onTaskSelect: onTaskSelect }, task.title))) }))) : null;
|
|
1954
1855
|
|
|
1955
1856
|
const QuickStartConclusion = ({ tasks, conclusion, allTaskStatuses, nextQuickStarts, onQuickStartChange, onTaskSelect, }) => {
|
|
1956
1857
|
const hasFailedTask = allTaskStatuses.includes(exports.QuickStartTaskStatus.FAILED);
|
|
1957
|
-
const { getResource } =
|
|
1958
|
-
return (
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
var _a;
|
|
1968
|
-
return (React__namespace.createElement(reactCore.Button, { variant: "link", onClick: () => onQuickStartChange(nextQuickStart.metadata.name), isInline: true, icon: React__namespace.createElement(ArrowRightIcon__default["default"], null), iconPosition: "end", isBlock: true, key: index, style: { marginTop: 'var(--pf-t--global--spacer--md' } }, getResource('Start {{nextQSDisplayName}} quick start').replace('{{nextQSDisplayName}}', (_a = nextQuickStart === null || nextQuickStart === void 0 ? void 0 : nextQuickStart.spec) === null || _a === void 0 ? void 0 : _a.displayName)));
|
|
1969
|
-
})));
|
|
1858
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1859
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect }), jsxRuntime.jsx(QuickStartMarkdownView, { content: hasFailedTask
|
|
1860
|
+
? getResource('One or more verifications did not pass during this quick start. Revisit the tasks or the help links, and then try again.')
|
|
1861
|
+
: conclusion }), !hasFailedTask &&
|
|
1862
|
+
nextQuickStarts &&
|
|
1863
|
+
nextQuickStarts.length > 0 &&
|
|
1864
|
+
nextQuickStarts.map((nextQuickStart, index) => {
|
|
1865
|
+
var _a;
|
|
1866
|
+
return (jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "link", onClick: () => onQuickStartChange(nextQuickStart.metadata.name), isInline: true, icon: jsxRuntime.jsx(ArrowRightIcon__default["default"], {}), iconPosition: "end", isBlock: true, style: { marginTop: 'var(--pf-t--global--spacer--md' } }, { children: getResource('Start {{nextQSDisplayName}} quick start').replace('{{nextQSDisplayName}}', (_a = nextQuickStart === null || nextQuickStart === void 0 ? void 0 : nextQuickStart.spec) === null || _a === void 0 ? void 0 : _a.displayName) }), index));
|
|
1867
|
+
})] }));
|
|
1970
1868
|
};
|
|
1971
1869
|
|
|
1972
1870
|
const QuickStartIntroduction = ({ tasks, introduction, allTaskStatuses, prerequisites, onTaskSelect, }) => {
|
|
1973
|
-
const { getResource } =
|
|
1871
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1974
1872
|
const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
|
|
1975
|
-
const [isPrereqsExpanded, setIsPrereqsExpanded] =
|
|
1976
|
-
const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (
|
|
1977
|
-
|
|
1978
|
-
React__namespace.createElement(QuickStartMarkdownView, { content: pr })))))));
|
|
1979
|
-
return (React__namespace.createElement(reactCore.Stack, { hasGutter: true },
|
|
1980
|
-
React__namespace.createElement(QuickStartMarkdownView, { content: introduction }),
|
|
1981
|
-
prereqList,
|
|
1982
|
-
React__namespace.createElement("p", null,
|
|
1983
|
-
getResource('In this quick start, you will complete {{count, number}} task', tasks === null || tasks === void 0 ? void 0 : tasks.length).replace('{{count, number}}', (tasks === null || tasks === void 0 ? void 0 : tasks.length) || 0),
|
|
1984
|
-
":"),
|
|
1985
|
-
React__namespace.createElement(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect })));
|
|
1873
|
+
const [isPrereqsExpanded, setIsPrereqsExpanded] = react.useState(false);
|
|
1874
|
+
const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (jsxRuntime.jsx(reactCore.ExpandableSection, Object.assign({ toggleText: getResource('View Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), onToggle: () => setIsPrereqsExpanded(!isPrereqsExpanded) }, { children: jsxRuntime.jsx(reactCore.List, { children: prereqs.map((pr) => (jsxRuntime.jsx(reactCore.ListItem, { children: jsxRuntime.jsx(QuickStartMarkdownView, { content: pr }) }, pr))) }) })));
|
|
1875
|
+
return (jsxRuntime.jsxs(reactCore.Stack, Object.assign({ hasGutter: true }, { children: [jsxRuntime.jsx(QuickStartMarkdownView, { content: introduction }), prereqList, jsxRuntime.jsxs("p", { children: [getResource('In this quick start, you will complete {{count, number}} task', tasks === null || tasks === void 0 ? void 0 : tasks.length).replace('{{count, number}}', (tasks === null || tasks === void 0 ? void 0 : tasks.length) || 0), ":"] }), jsxRuntime.jsx(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect })] })));
|
|
1986
1876
|
};
|
|
1987
1877
|
|
|
1988
1878
|
const getAlertVariant = (status) => {
|
|
@@ -1997,64 +1887,52 @@ const getAlertVariant = (status) => {
|
|
|
1997
1887
|
};
|
|
1998
1888
|
const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
|
|
1999
1889
|
const { instructions, failedTaskHelp: taskHelp } = review;
|
|
2000
|
-
const { getResource } =
|
|
2001
|
-
return (
|
|
1890
|
+
const { getResource } = react.useContext(QuickStartContext);
|
|
1891
|
+
return (jsxRuntime.jsxs(reactCore.Alert, Object.assign({ variant: getAlertVariant(taskStatus), title: getResource('Check your work'), isInline: true, role: "alert", style: {
|
|
2002
1892
|
marginBottom: 'var(--pf-t--global--spacer--md)',
|
|
2003
|
-
} },
|
|
2004
|
-
React__namespace.createElement(QuickStartMarkdownView, { content: instructions }),
|
|
2005
|
-
React__namespace.createElement("span", { className: "pfext-quick-start-task-review__actions" },
|
|
2006
|
-
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) }),
|
|
2007
|
-
React__namespace.createElement(reactCore.Radio, { id: "review-failed", name: "review-failed", "data-testid": "qs-drawer-check-no", label: getResource('No'), className: "pfext-quick-start-task-review__radio", isChecked: taskStatus === exports.QuickStartTaskStatus.FAILED, onChange: () => onTaskReview(exports.QuickStartTaskStatus.FAILED) })),
|
|
2008
|
-
taskStatus === exports.QuickStartTaskStatus.FAILED && taskHelp && (React__namespace.createElement(QuickStartMarkdownView, { content: taskHelp, exactHeight: true }))));
|
|
1893
|
+
} }, { children: [jsxRuntime.jsx(QuickStartMarkdownView, { content: instructions }), jsxRuntime.jsxs("span", Object.assign({ className: "pfext-quick-start-task-review__actions" }, { children: [jsxRuntime.jsx(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) }), jsxRuntime.jsx(reactCore.Radio, { id: "review-failed", name: "review-failed", "data-testid": "qs-drawer-check-no", label: getResource('No'), className: "pfext-quick-start-task-review__radio", isChecked: taskStatus === exports.QuickStartTaskStatus.FAILED, onChange: () => onTaskReview(exports.QuickStartTaskStatus.FAILED) })] })), taskStatus === exports.QuickStartTaskStatus.FAILED && taskHelp && (jsxRuntime.jsx(QuickStartMarkdownView, { content: taskHelp, exactHeight: true }))] })));
|
|
2009
1894
|
};
|
|
2010
1895
|
|
|
2011
1896
|
const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onTaskSelect, }) => {
|
|
2012
|
-
const { getResource, alwaysShowTaskReview } =
|
|
2013
|
-
return (
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
}))));
|
|
2029
|
-
};
|
|
2030
|
-
|
|
2031
|
-
const QuickStartContent = React__namespace.forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
|
|
1897
|
+
const { getResource, alwaysShowTaskReview } = react.useContext(QuickStartContext);
|
|
1898
|
+
return (jsxRuntime.jsx("div", Object.assign({ className: "pf-v6-c-wizard pf-v6-c-wizard__nav-list", style: { padding: '0 0 0 0' } }, { children: jsxRuntime.jsx("ul", { children: tasks
|
|
1899
|
+
.filter((_, index) => allTaskStatuses[index] !== exports.QuickStartTaskStatus.INIT)
|
|
1900
|
+
.map((task, index) => {
|
|
1901
|
+
const { title, description, review } = task;
|
|
1902
|
+
const isActiveTask = index === taskNumber;
|
|
1903
|
+
const taskStatus = allTaskStatuses[index];
|
|
1904
|
+
const shouldShowTaskReview = (!QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus) || alwaysShowTaskReview) &&
|
|
1905
|
+
review;
|
|
1906
|
+
return (jsxRuntime.jsx(react.Fragment, { children: jsxRuntime.jsx(QuickStartTaskHeader, Object.assign({ taskIndex: index + 1, title: title, size: "md", subtitle: getResource('{{index, number}} of {{tasks, number}}')
|
|
1907
|
+
.replace('{{index, number}}', index + 1)
|
|
1908
|
+
.replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }, { children: isActiveTask && (jsxRuntime.jsxs(reactCore.Stack, Object.assign({ hasGutter: true }, { children: [jsxRuntime.jsx(QuickStartMarkdownView, { content: description }), shouldShowTaskReview && (jsxRuntime.jsx(QuickStartTaskReview, { review: review, taskStatus: taskStatus, onTaskReview: onTaskReview }))] }))) })) }, title));
|
|
1909
|
+
}) }) })));
|
|
1910
|
+
};
|
|
1911
|
+
|
|
1912
|
+
const QuickStartContent = react.forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
|
|
2032
1913
|
const { spec: { introduction, tasks, conclusion, prerequisites }, } = quickStart;
|
|
2033
1914
|
const totalTasks = tasks === null || tasks === void 0 ? void 0 : tasks.length;
|
|
2034
|
-
return (
|
|
2035
|
-
taskNumber === -1 && (React__namespace.createElement(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, prerequisites: prerequisites, onTaskSelect: onTaskSelect })),
|
|
2036
|
-
taskNumber > -1 && taskNumber < totalTasks && (React__namespace.createElement(QuickStartTasks, { tasks: tasks, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskReview: onTaskReview, onTaskSelect: onTaskSelect })),
|
|
2037
|
-
taskNumber === totalTasks && (React__namespace.createElement(QuickStartConclusion, { tasks: tasks, conclusion: conclusion, allTaskStatuses: allTaskStatuses, nextQuickStarts: nextQuickStarts, onQuickStartChange: onQuickStartChange, onTaskSelect: onTaskSelect }))));
|
|
1915
|
+
return (jsxRuntime.jsxs("div", Object.assign({ className: "pfext-quick-start-task", ref: ref }, { children: [taskNumber === -1 && (jsxRuntime.jsx(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, prerequisites: prerequisites, onTaskSelect: onTaskSelect })), taskNumber > -1 && taskNumber < totalTasks && (jsxRuntime.jsx(QuickStartTasks, { tasks: tasks, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskReview: onTaskReview, onTaskSelect: onTaskSelect })), taskNumber === totalTasks && (jsxRuntime.jsx(QuickStartConclusion, { tasks: tasks, conclusion: conclusion, allTaskStatuses: allTaskStatuses, nextQuickStarts: nextQuickStarts, onQuickStartChange: onQuickStartChange, onTaskSelect: onTaskSelect }))] })));
|
|
2038
1916
|
});
|
|
2039
1917
|
|
|
2040
1918
|
const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, quickStartId, className, }) => {
|
|
2041
|
-
const { restartQuickStart, getResource } =
|
|
2042
|
-
const PrimaryButtonText =
|
|
1919
|
+
const { restartQuickStart, getResource } = react.useContext(QuickStartContext);
|
|
1920
|
+
const PrimaryButtonText = react.useMemo(() => ({
|
|
2043
1921
|
START: getResource('Start'),
|
|
2044
1922
|
CONTINUE: getResource('Continue'),
|
|
2045
1923
|
NEXT: getResource('Next'),
|
|
2046
1924
|
CLOSE: getResource('Close'),
|
|
2047
1925
|
}), [getResource]);
|
|
2048
|
-
const SecondaryButtonText =
|
|
1926
|
+
const SecondaryButtonText = react.useMemo(() => ({
|
|
2049
1927
|
BACK: getResource('Back'),
|
|
2050
1928
|
RESTART: getResource('Restart'),
|
|
2051
1929
|
}), [getResource]);
|
|
2052
|
-
const onRestart =
|
|
1930
|
+
const onRestart = react.useCallback((e) => {
|
|
2053
1931
|
e.preventDefault();
|
|
2054
1932
|
e.stopPropagation();
|
|
2055
1933
|
restartQuickStart(quickStartId, totalTasks);
|
|
2056
1934
|
}, [quickStartId, restartQuickStart, totalTasks]);
|
|
2057
|
-
const getPrimaryButtonText =
|
|
1935
|
+
const getPrimaryButtonText = react.useMemo(() => {
|
|
2058
1936
|
if (status === exports.QuickStartStatus.NOT_STARTED) {
|
|
2059
1937
|
return PrimaryButtonText.START;
|
|
2060
1938
|
}
|
|
@@ -2066,23 +1944,17 @@ const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, quic
|
|
|
2066
1944
|
}
|
|
2067
1945
|
return PrimaryButtonText.CONTINUE;
|
|
2068
1946
|
}, [taskNumber, totalTasks, PrimaryButtonText, status]);
|
|
2069
|
-
const getPrimaryButton =
|
|
2070
|
-
const getSecondaryButton =
|
|
2071
|
-
const getSideNoteAction =
|
|
2072
|
-
return (
|
|
2073
|
-
React__namespace.createElement(reactCore.ActionList, null,
|
|
2074
|
-
React__namespace.createElement(reactCore.ActionListGroup, null,
|
|
2075
|
-
React__namespace.createElement(reactCore.ActionListItem, null, getPrimaryButton),
|
|
2076
|
-
React__namespace.createElement(reactCore.ActionListItem, null, getSecondaryButton)),
|
|
2077
|
-
React__namespace.createElement(reactCore.ActionListGroup, null,
|
|
2078
|
-
React__namespace.createElement(reactCore.ActionListItem, null, getSideNoteAction)))));
|
|
1947
|
+
const getPrimaryButton = react.useMemo(() => (jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "primary", className: "pfext-quick-start-footer__actionbtn", onClick: onNext, "data-testid": `qs-drawer-${camelize(getPrimaryButtonText)}`, "data-test": `${getPrimaryButtonText} button` }, { children: getPrimaryButtonText }))), [getPrimaryButtonText, onNext]);
|
|
1948
|
+
const getSecondaryButton = react.useMemo(() => taskNumber === -1 && status !== exports.QuickStartStatus.NOT_STARTED ? (jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "secondary", onClick: onRestart, "data-testid": "qs-drawer-restart" }, { children: SecondaryButtonText.RESTART }))) : (taskNumber > -1 && (jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "secondary", onClick: onBack, "data-testid": "qs-drawer-back" }, { children: SecondaryButtonText.BACK })))), [onRestart, onBack, SecondaryButtonText, status, taskNumber]);
|
|
1949
|
+
const getSideNoteAction = react.useMemo(() => taskNumber !== -1 && (jsxRuntime.jsx(reactCore.Button, Object.assign({ variant: "link", onClick: onRestart, "data-testid": "qs-drawer-side-note-action" }, { children: SecondaryButtonText.RESTART }))), [taskNumber, onRestart, SecondaryButtonText.RESTART]);
|
|
1950
|
+
return (jsxRuntime.jsx("div", Object.assign({ className: reactStyles.css('pfext-quick-start-footer', className) }, { children: jsxRuntime.jsxs(reactCore.ActionList, { children: [jsxRuntime.jsxs(reactCore.ActionListGroup, { children: [jsxRuntime.jsx(reactCore.ActionListItem, { children: getPrimaryButton }), jsxRuntime.jsx(reactCore.ActionListItem, { children: getSecondaryButton })] }), jsxRuntime.jsx(reactCore.ActionListGroup, { children: jsxRuntime.jsx(reactCore.ActionListItem, { children: getSideNoteAction }) })] }) })));
|
|
2079
1951
|
};
|
|
2080
1952
|
|
|
2081
1953
|
const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerClass, }) => {
|
|
2082
1954
|
const { metadata: { name }, spec: { tasks = [] }, } = quickStart;
|
|
2083
1955
|
const totalTasks = tasks === null || tasks === void 0 ? void 0 : tasks.length;
|
|
2084
|
-
const { activeQuickStartID, allQuickStartStates, setAllQuickStartStates, activeQuickStartState, setActiveQuickStart, setQuickStartTaskNumber, setQuickStartTaskStatus, nextStep, previousStep, } =
|
|
2085
|
-
|
|
1956
|
+
const { activeQuickStartID, allQuickStartStates, setAllQuickStartStates, activeQuickStartState, setActiveQuickStart, setQuickStartTaskNumber, setQuickStartTaskStatus, nextStep, previousStep, } = react.useContext(QuickStartContext);
|
|
1957
|
+
react.useEffect(() => {
|
|
2086
1958
|
// If activeQuickStartID was changed through prop from QuickStartContainer, need to init the state if it does not exist yet
|
|
2087
1959
|
if (activeQuickStartID && !allQuickStartStates[activeQuickStartID]) {
|
|
2088
1960
|
setAllQuickStartStates(Object.assign(Object.assign({}, allQuickStartStates), { [activeQuickStartID]: getDefaultQuickStartState() }));
|
|
@@ -2091,9 +1963,9 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
|
|
|
2091
1963
|
const status = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.status;
|
|
2092
1964
|
const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
|
|
2093
1965
|
const allTaskStatuses = tasks.map((task, index) => activeQuickStartState[`taskStatus${index}`]);
|
|
2094
|
-
const handleQuickStartChange =
|
|
2095
|
-
const handleTaskStatusChange =
|
|
2096
|
-
const getQuickStartActiveTask =
|
|
1966
|
+
const handleQuickStartChange = react.useCallback((quickStartId) => setActiveQuickStart(quickStartId), [setActiveQuickStart]);
|
|
1967
|
+
const handleTaskStatusChange = react.useCallback((newTaskStatus) => setQuickStartTaskStatus(newTaskStatus), [setQuickStartTaskStatus]);
|
|
1968
|
+
const getQuickStartActiveTask = react.useCallback(() => {
|
|
2097
1969
|
let activeTaskNumber = 0;
|
|
2098
1970
|
while (activeTaskNumber !== totalTasks &&
|
|
2099
1971
|
activeQuickStartState[`taskStatus${activeTaskNumber}`] === exports.QuickStartTaskStatus.SUCCESS) {
|
|
@@ -2101,11 +1973,11 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
|
|
|
2101
1973
|
}
|
|
2102
1974
|
return activeTaskNumber;
|
|
2103
1975
|
}, [totalTasks, activeQuickStartState]);
|
|
2104
|
-
const handleQuickStartContinue =
|
|
1976
|
+
const handleQuickStartContinue = react.useCallback(() => {
|
|
2105
1977
|
const activeTaskNumber = getQuickStartActiveTask();
|
|
2106
1978
|
setQuickStartTaskNumber(name, activeTaskNumber);
|
|
2107
1979
|
}, [getQuickStartActiveTask, setQuickStartTaskNumber, name]);
|
|
2108
|
-
const handleNext =
|
|
1980
|
+
const handleNext = react.useCallback(() => {
|
|
2109
1981
|
if (status === exports.QuickStartStatus.COMPLETE && taskNumber === totalTasks) {
|
|
2110
1982
|
return handleQuickStartChange('');
|
|
2111
1983
|
}
|
|
@@ -2114,13 +1986,11 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
|
|
|
2114
1986
|
}
|
|
2115
1987
|
return nextStep(totalTasks);
|
|
2116
1988
|
}, [handleQuickStartChange, nextStep, status, taskNumber, totalTasks, handleQuickStartContinue]);
|
|
2117
|
-
const handleBack =
|
|
2118
|
-
const handleTaskSelect =
|
|
1989
|
+
const handleBack = react.useCallback(() => previousStep(), [previousStep]);
|
|
1990
|
+
const handleTaskSelect = react.useCallback((selectedTaskNumber) => {
|
|
2119
1991
|
setQuickStartTaskNumber(name, selectedTaskNumber);
|
|
2120
1992
|
}, [name, setQuickStartTaskNumber]);
|
|
2121
|
-
return (
|
|
2122
|
-
React__namespace.createElement(QuickStartContent, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskSelect: handleTaskSelect, onTaskReview: handleTaskStatusChange, onQuickStartChange: handleQuickStartChange, ref: contentRef }),
|
|
2123
|
-
React__namespace.createElement(QuickStartFooter, { status: status, taskNumber: taskNumber, totalTasks: totalTasks, onNext: handleNext, onBack: handleBack, className: footerClass, quickStartId: quickStart.metadata.name })));
|
|
1993
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(QuickStartContent, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskSelect: handleTaskSelect, onTaskReview: handleTaskStatusChange, onQuickStartChange: handleQuickStartChange, ref: contentRef }), jsxRuntime.jsx(QuickStartFooter, { status: status, taskNumber: taskNumber, totalTasks: totalTasks, onNext: handleNext, onBack: handleBack, className: footerClass, quickStartId: quickStart.metadata.name })] }));
|
|
2124
1994
|
};
|
|
2125
1995
|
|
|
2126
1996
|
const getElement = (appendTo) => {
|
|
@@ -2130,7 +2000,7 @@ const getElement = (appendTo) => {
|
|
|
2130
2000
|
return appendTo;
|
|
2131
2001
|
};
|
|
2132
2002
|
const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
|
|
2133
|
-
|
|
2003
|
+
react.useEffect(() => {
|
|
2134
2004
|
if (node) {
|
|
2135
2005
|
node.scrollTo({ top: 0, behavior: 'smooth' });
|
|
2136
2006
|
}
|
|
@@ -2138,9 +2008,9 @@ const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
|
|
|
2138
2008
|
};
|
|
2139
2009
|
const QuickStartPanelContent = (_a) => {
|
|
2140
2010
|
var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true, footerClass } = _a, props = tslib.__rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose", "footerClass"]);
|
|
2141
|
-
const titleRef =
|
|
2142
|
-
const { getResource, activeQuickStartState, focusOnQuickStart } =
|
|
2143
|
-
const [contentRef, setContentRef] =
|
|
2011
|
+
const titleRef = react.useRef(null);
|
|
2012
|
+
const { getResource, activeQuickStartState, focusOnQuickStart } = react.useContext(QuickStartContext);
|
|
2013
|
+
const [contentRef, setContentRef] = react.useState();
|
|
2144
2014
|
const quickStart = quickStarts.find((qs) => qs.metadata.name === activeQuickStartID);
|
|
2145
2015
|
const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
|
|
2146
2016
|
useScrollTopOnTaskNumberChange(contentRef, taskNumber);
|
|
@@ -2156,27 +2026,16 @@ const QuickStartPanelContent = (_a) => {
|
|
|
2156
2026
|
}
|
|
2157
2027
|
return Number.parseInt(taskNumber) + 1;
|
|
2158
2028
|
};
|
|
2159
|
-
|
|
2029
|
+
react.useEffect(() => {
|
|
2160
2030
|
if (focusOnQuickStart && quickStart) {
|
|
2161
2031
|
titleRef.current.focus();
|
|
2162
2032
|
}
|
|
2163
2033
|
}, [focusOnQuickStart, quickStart]);
|
|
2164
|
-
const content = quickStart ? (
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
React__namespace.createElement("span", null, quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.displayName),
|
|
2170
|
-
' '),
|
|
2171
|
-
React__namespace.createElement("span", null, (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2172
|
-
? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2173
|
-
.replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2174
|
-
.replace('{{type}}', getResource('Type'))
|
|
2175
|
-
: getResource('Type'))),
|
|
2176
|
-
showClose && (React__namespace.createElement(reactCore.DrawerActions, null,
|
|
2177
|
-
React__namespace.createElement(reactCore.DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))))),
|
|
2178
|
-
React__namespace.createElement(reactCore.DrawerPanelBody, { className: "pfext-quick-start-panel-content__body", "data-test": "content" },
|
|
2179
|
-
React__namespace.createElement(QuickStartController, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, footerClass: footerClass, contentRef: setContentRef })))) : null;
|
|
2034
|
+
const content = quickStart ? (jsxRuntime.jsxs(reactCore.DrawerPanelContent, Object.assign({ isResizable: isResizable, "data-testid": `qs-drawer-${camelize(quickStart.spec.displayName)}`, "data-qs": `qs-step-${getStep()}`, "data-test": "quickstart drawer", style: { '--pf-v6-c-drawer__panel--PaddingBlockStart': '0' } }, props, { children: [jsxRuntime.jsx("div", Object.assign({ className: "pfext-quick-start-panel-content" }, { children: jsxRuntime.jsxs(reactCore.DrawerHead, { children: [jsxRuntime.jsxs("div", Object.assign({ tabIndex: -1, ref: titleRef }, { children: [jsxRuntime.jsxs(reactCore.Title, Object.assign({ headingLevel: "h2", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, { children: [jsxRuntime.jsx("span", { children: quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.displayName }), ' '] })), jsxRuntime.jsx("span", { children: (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2035
|
+
? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2036
|
+
.replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2037
|
+
.replace('{{type}}', getResource('Type'))
|
|
2038
|
+
: getResource('Type') })] })), showClose && (jsxRuntime.jsx(reactCore.DrawerActions, { children: jsxRuntime.jsx(reactCore.DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }) }))] }) })), jsxRuntime.jsx(reactCore.DrawerPanelBody, Object.assign({ className: "pfext-quick-start-panel-content__body", "data-test": "content" }, { children: jsxRuntime.jsx(QuickStartController, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, footerClass: footerClass, contentRef: setContentRef }) }))] }))) : null;
|
|
2180
2039
|
if (appendTo) {
|
|
2181
2040
|
return ReactDOM__namespace.createPortal(content, getElement(appendTo));
|
|
2182
2041
|
}
|
|
@@ -2185,7 +2044,7 @@ const QuickStartPanelContent = (_a) => {
|
|
|
2185
2044
|
|
|
2186
2045
|
const QuickStartDrawerContent = (_a) => {
|
|
2187
2046
|
var { quickStarts = [], appendTo, fullWidth, handleDrawerClose } = _a, props = tslib.__rest(_a, ["quickStarts", "appendTo", "fullWidth", "handleDrawerClose"]);
|
|
2188
|
-
const { activeQuickStartID, allQuickStarts = [], activeQuickStartState, } =
|
|
2047
|
+
const { activeQuickStartID, allQuickStarts = [], activeQuickStartState, } = react.useContext(QuickStartContext);
|
|
2189
2048
|
const combinedQuickStarts = allQuickStarts.concat(quickStarts);
|
|
2190
2049
|
const handleClose = () => {
|
|
2191
2050
|
handleDrawerClose && handleDrawerClose(activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.status);
|
|
@@ -2197,14 +2056,14 @@ const QuickStartDrawerContent = (_a) => {
|
|
|
2197
2056
|
},
|
|
2198
2057
|
}
|
|
2199
2058
|
: {};
|
|
2200
|
-
return (
|
|
2059
|
+
return (jsxRuntime.jsx(QuickStartPanelContent, Object.assign({ quickStarts: combinedQuickStarts, handleClose: handleClose, activeQuickStartID: activeQuickStartID, appendTo: appendTo, isResizable: !fullWidth }, fullWidthPanelStyle, props)));
|
|
2201
2060
|
};
|
|
2202
2061
|
|
|
2203
2062
|
const QuickStartDrawer = (_a) => {
|
|
2204
2063
|
var { quickStarts = [], children, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress } = _a, props = tslib.__rest(_a, ["quickStarts", "children", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress"]);
|
|
2205
|
-
const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], allQuickStartStates, setAllQuickStartStates, } =
|
|
2064
|
+
const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], allQuickStartStates, setAllQuickStartStates, } = react.useContext(QuickStartContext);
|
|
2206
2065
|
const combinedQuickStarts = allQuickStarts.concat(quickStarts);
|
|
2207
|
-
|
|
2066
|
+
react.useEffect(() => {
|
|
2208
2067
|
const params = new URLSearchParams(window.location.search);
|
|
2209
2068
|
// if there is a quick start param, but the quick start is not active, set it
|
|
2210
2069
|
// this can happen if a new browser session is opened or an incognito window for example
|
|
@@ -2217,13 +2076,13 @@ const QuickStartDrawer = (_a) => {
|
|
|
2217
2076
|
}
|
|
2218
2077
|
}
|
|
2219
2078
|
}, [activeQuickStartID, combinedQuickStarts, setActiveQuickStart]);
|
|
2220
|
-
|
|
2079
|
+
react.useEffect(() => {
|
|
2221
2080
|
// If activeQuickStartID was changed through prop from QuickStartContainer, need to init the state if it does not exist yet
|
|
2222
2081
|
if (activeQuickStartID && !allQuickStartStates[activeQuickStartID]) {
|
|
2223
2082
|
setAllQuickStartStates(Object.assign(Object.assign({}, allQuickStartStates), { [activeQuickStartID]: getDefaultQuickStartState() }));
|
|
2224
2083
|
}
|
|
2225
2084
|
}, [activeQuickStartID, allQuickStartStates, setAllQuickStartStates]);
|
|
2226
|
-
const [modalOpen, setModalOpen] =
|
|
2085
|
+
const [modalOpen, setModalOpen] = react.useState(false);
|
|
2227
2086
|
const onClose = () => setActiveQuickStart('');
|
|
2228
2087
|
const handleClose = (activeQuickStartStatus) => {
|
|
2229
2088
|
if (activeQuickStartStatus === exports.QuickStartStatus.IN_PROGRESS) {
|
|
@@ -2253,11 +2112,7 @@ const QuickStartDrawer = (_a) => {
|
|
|
2253
2112
|
},
|
|
2254
2113
|
}
|
|
2255
2114
|
: {};
|
|
2256
|
-
return (
|
|
2257
|
-
React__namespace.createElement(reactCore.Drawer, Object.assign({ isExpanded: !!activeQuickStartID, isInline: true }, props),
|
|
2258
|
-
React__namespace.createElement(reactCore.DrawerContent, Object.assign({ panelContent: React__namespace.createElement(QuickStartDrawerContent, { quickStarts: combinedQuickStarts, handleDrawerClose: handleClose, appendTo: appendTo, fullWidth: fullWidth }) }, fullWidthBodyStyle),
|
|
2259
|
-
React__namespace.createElement(reactCore.DrawerContentBody, null, children))),
|
|
2260
|
-
React__namespace.createElement(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })));
|
|
2115
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(reactCore.Drawer, Object.assign({ isExpanded: !!activeQuickStartID, isInline: true }, props, { children: jsxRuntime.jsx(reactCore.DrawerContent, Object.assign({ panelContent: jsxRuntime.jsx(QuickStartDrawerContent, { quickStarts: combinedQuickStarts, handleDrawerClose: handleClose, appendTo: appendTo, fullWidth: fullWidth }) }, fullWidthBodyStyle, { children: jsxRuntime.jsx(reactCore.DrawerContentBody, { children: children }) })) })), jsxRuntime.jsx(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })] }));
|
|
2261
2116
|
};
|
|
2262
2117
|
|
|
2263
2118
|
const QuickStartContainer = (_a) => {
|
|
@@ -2272,13 +2127,13 @@ const QuickStartContainer = (_a) => {
|
|
|
2272
2127
|
useQueryParams,
|
|
2273
2128
|
markdown,
|
|
2274
2129
|
alwaysShowTaskReview }, contextProps));
|
|
2275
|
-
|
|
2130
|
+
react.useEffect(() => {
|
|
2276
2131
|
if (quickStarts &&
|
|
2277
2132
|
JSON.stringify(quickStarts) !== JSON.stringify(valuesForQuickstartContext.allQuickStarts)) {
|
|
2278
2133
|
valuesForQuickstartContext.setAllQuickStarts(quickStarts);
|
|
2279
2134
|
}
|
|
2280
2135
|
}, [quickStarts, valuesForQuickstartContext]);
|
|
2281
|
-
|
|
2136
|
+
react.useEffect(() => {
|
|
2282
2137
|
if (loading !== valuesForQuickstartContext.loading) {
|
|
2283
2138
|
valuesForQuickstartContext.setLoading(loading);
|
|
2284
2139
|
}
|
|
@@ -2287,7 +2142,7 @@ const QuickStartContainer = (_a) => {
|
|
|
2287
2142
|
fullWidth,
|
|
2288
2143
|
onCloseInProgress,
|
|
2289
2144
|
onCloseNotInProgress }, props);
|
|
2290
|
-
return (
|
|
2145
|
+
return (jsxRuntime.jsx(QuickStartContext.Provider, Object.assign({ value: valuesForQuickstartContext }, { children: isManagedDrawer ? (jsxRuntime.jsx(QuickStartDrawer, Object.assign({}, drawerProps, { children: children }))) : (children) })));
|
|
2291
2146
|
};
|
|
2292
2147
|
|
|
2293
2148
|
const HelpTopicContextDefaults = {
|
|
@@ -2299,14 +2154,14 @@ const HelpTopicContextDefaults = {
|
|
|
2299
2154
|
setFilteredHelpTopics: () => { },
|
|
2300
2155
|
loading: false,
|
|
2301
2156
|
};
|
|
2302
|
-
const HelpTopicContext =
|
|
2157
|
+
const HelpTopicContext = react.createContext(HelpTopicContextDefaults);
|
|
2303
2158
|
const useValuesForHelpTopicContext = (value = {}) => {
|
|
2304
2159
|
const combinedValue = Object.assign(Object.assign({}, HelpTopicContextDefaults), value);
|
|
2305
|
-
const [loading, setLoading] =
|
|
2160
|
+
const [loading, setLoading] = react.useState(combinedValue.loading);
|
|
2306
2161
|
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
2307
|
-
const [helpTopics, setHelpTopics] =
|
|
2308
|
-
const [activeHelpTopic, setActiveHelpTopic] =
|
|
2309
|
-
const setActiveHelpTopicByName =
|
|
2162
|
+
const [helpTopics, setHelpTopics] = react.useState(combinedValue.helpTopics || []);
|
|
2163
|
+
const [activeHelpTopic, setActiveHelpTopic] = react.useState(combinedValue.activeHelpTopic || null);
|
|
2164
|
+
const setActiveHelpTopicByName = react.useCallback((helpTopicName) => {
|
|
2310
2165
|
const topic = helpTopics.find((t) => t.name === helpTopicName);
|
|
2311
2166
|
if (!helpTopicName) {
|
|
2312
2167
|
setActiveHelpTopic(null);
|
|
@@ -2314,7 +2169,7 @@ const useValuesForHelpTopicContext = (value = {}) => {
|
|
|
2314
2169
|
}
|
|
2315
2170
|
setActiveHelpTopic(topic);
|
|
2316
2171
|
}, [helpTopics]);
|
|
2317
|
-
const [filteredHelpTopics, setFilteredHelpTopics] =
|
|
2172
|
+
const [filteredHelpTopics, setFilteredHelpTopics] = react.useState(combinedValue.filteredHelpTopics || []);
|
|
2318
2173
|
return {
|
|
2319
2174
|
helpTopics,
|
|
2320
2175
|
setHelpTopics,
|
|
@@ -2330,8 +2185,8 @@ const useValuesForHelpTopicContext = (value = {}) => {
|
|
|
2330
2185
|
const HelpTopicPanelContent = (_a) => {
|
|
2331
2186
|
var _b, _c;
|
|
2332
2187
|
var { activeHelpTopic = null, filteredHelpTopics = [], isResizable = true, onClose } = _a, props = tslib.__rest(_a, ["activeHelpTopic", "filteredHelpTopics", "isResizable", "onClose"]);
|
|
2333
|
-
const { setActiveHelpTopicByName } =
|
|
2334
|
-
const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] =
|
|
2188
|
+
const { setActiveHelpTopicByName } = react.useContext(HelpTopicContext);
|
|
2189
|
+
const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = react.useState(false);
|
|
2335
2190
|
const toggleHelpTopicMenu = () => {
|
|
2336
2191
|
setIsHelpTopicMenuOpen(!isHelpTopicMenuOpen);
|
|
2337
2192
|
};
|
|
@@ -2341,24 +2196,10 @@ const HelpTopicPanelContent = (_a) => {
|
|
|
2341
2196
|
toggleHelpTopicMenu();
|
|
2342
2197
|
};
|
|
2343
2198
|
const helpTopicOptions = filteredHelpTopics.length > 1 &&
|
|
2344
|
-
filteredHelpTopics.map((topic) => (
|
|
2345
|
-
const paddingContainer = (children) =>
|
|
2346
|
-
const panelBodyItems = (
|
|
2347
|
-
|
|
2348
|
-
!!((_b = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _b === void 0 ? void 0 : _b.length) && React__namespace.createElement(reactCore.Divider, null),
|
|
2349
|
-
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) => (React__namespace.createElement(reactCore.StackItem, { key: index },
|
|
2350
|
-
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))))))));
|
|
2351
|
-
const content = (React__namespace.createElement(reactCore.DrawerPanelContent, Object.assign({ isResizable: isResizable }, props),
|
|
2352
|
-
React__namespace.createElement("div", null,
|
|
2353
|
-
React__namespace.createElement(reactCore.DrawerHead, null,
|
|
2354
|
-
React__namespace.createElement("div", null,
|
|
2355
|
-
helpTopicOptions && (React__namespace.createElement(reactCore.Select, { isPlain: true, id: "help-topics-select", selected: activeHelpTopic, isOpen: isHelpTopicMenuOpen, onSelect: onSelectHelpTopic, onOpenChange: (isOpen) => setIsHelpTopicMenuOpen(isOpen), toggle: (toggleRef) => (React__namespace.createElement(reactCore.MenuToggle, { isFullWidth: true, ref: toggleRef, icon: React__namespace.createElement(BarsIcon__default["default"], null), onClick: toggleHelpTopicMenu, isExpanded: isHelpTopicMenuOpen }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)) },
|
|
2356
|
-
React__namespace.createElement(reactCore.SelectList, null, helpTopicOptions))),
|
|
2357
|
-
React__namespace.createElement(reactCore.Title, { headingLevel: "h1", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)),
|
|
2358
|
-
React__namespace.createElement(reactCore.DrawerActions, null,
|
|
2359
|
-
React__namespace.createElement(reactCore.DrawerCloseButton, { onClick: onClose, "data-testid": "qs-drawer-close" }))),
|
|
2360
|
-
React__namespace.createElement(reactCore.Divider, null),
|
|
2361
|
-
React__namespace.createElement(reactCore.DrawerPanelBody, { "data-test": "content" }, panelBodyItems))));
|
|
2199
|
+
filteredHelpTopics.map((topic) => (jsxRuntime.jsx(reactCore.SelectOption, Object.assign({ value: topic.name }, { children: topic.title }), topic.name)));
|
|
2200
|
+
const paddingContainer = (children) => jsxRuntime.jsx("div", Object.assign({ style: { padding: '24px' } }, { children: children }));
|
|
2201
|
+
const panelBodyItems = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [paddingContainer(jsxRuntime.jsx(QuickStartMarkdownView, { content: activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.content })), !!((_b = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _b === void 0 ? void 0 : _b.length) && jsxRuntime.jsx(reactCore.Divider, {}), paddingContainer(jsxRuntime.jsx(reactCore.Stack, Object.assign({ hasGutter: true }, { children: (_c = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _c === void 0 ? void 0 : _c.map(({ href, text, newTab, isExternal }, index) => (jsxRuntime.jsx(reactCore.StackItem, { children: jsxRuntime.jsx(reactCore.Button, Object.assign({ component: "a", href: href, target: newTab ? '_blank' : '', rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: isExternal ? jsxRuntime.jsx(ExternalLinkAltIcon__default["default"], {}) : null, iconPosition: "right", style: { fontSize: 'inherit' } }, { children: text || href })) }, index))) })))] }));
|
|
2202
|
+
const content = (jsxRuntime.jsx(reactCore.DrawerPanelContent, Object.assign({ isResizable: isResizable }, props, { children: jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs(reactCore.DrawerHead, { children: [jsxRuntime.jsxs("div", { children: [helpTopicOptions && (jsxRuntime.jsx(reactCore.Select, Object.assign({ isPlain: true, id: "help-topics-select", selected: activeHelpTopic, isOpen: isHelpTopicMenuOpen, onSelect: onSelectHelpTopic, onOpenChange: (isOpen) => setIsHelpTopicMenuOpen(isOpen), toggle: (toggleRef) => (jsxRuntime.jsx(reactCore.MenuToggle, Object.assign({ isFullWidth: true, ref: toggleRef, icon: jsxRuntime.jsx(BarsIcon__default["default"], {}), onClick: toggleHelpTopicMenu, isExpanded: isHelpTopicMenuOpen }, { children: activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title }))) }, { children: jsxRuntime.jsx(reactCore.SelectList, { children: helpTopicOptions }) }))), jsxRuntime.jsx(reactCore.Title, Object.assign({ headingLevel: "h1", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, { children: activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title }))] }), jsxRuntime.jsx(reactCore.DrawerActions, { children: jsxRuntime.jsx(reactCore.DrawerCloseButton, { onClick: onClose, "data-testid": "qs-drawer-close" }) })] }), jsxRuntime.jsx(reactCore.Divider, {}), jsxRuntime.jsx(reactCore.DrawerPanelBody, Object.assign({ "data-test": "content" }, { children: panelBodyItems }))] }) })));
|
|
2362
2203
|
return content;
|
|
2363
2204
|
};
|
|
2364
2205
|
|
|
@@ -2367,36 +2208,33 @@ const HelpTopicContainer = (_a) => {
|
|
|
2367
2208
|
const valuesForHelpTopicContext = useValuesForHelpTopicContext(Object.assign({ helpTopics,
|
|
2368
2209
|
language, resourceBundle: Object.assign({}, resourceBundle), loading,
|
|
2369
2210
|
markdown }, contextProps));
|
|
2370
|
-
|
|
2211
|
+
react.useEffect(() => {
|
|
2371
2212
|
if (loading !== valuesForHelpTopicContext.loading) {
|
|
2372
2213
|
valuesForHelpTopicContext.setLoading(loading);
|
|
2373
2214
|
}
|
|
2374
2215
|
}, [loading, valuesForHelpTopicContext]);
|
|
2375
|
-
|
|
2216
|
+
react.useEffect(() => {
|
|
2376
2217
|
if (helpTopics &&
|
|
2377
2218
|
JSON.stringify(helpTopics) !== JSON.stringify(valuesForHelpTopicContext.helpTopics)) {
|
|
2378
2219
|
valuesForHelpTopicContext.setHelpTopics(helpTopics);
|
|
2379
2220
|
}
|
|
2380
2221
|
}, [helpTopics, valuesForHelpTopicContext]);
|
|
2381
|
-
return (
|
|
2382
|
-
React__namespace.createElement(HelpTopicDrawer, Object.assign({}, props), children)));
|
|
2222
|
+
return (jsxRuntime.jsx(HelpTopicContext.Provider, Object.assign({ value: valuesForHelpTopicContext }, { children: jsxRuntime.jsx(HelpTopicDrawer, Object.assign({}, props, { children: children })) })));
|
|
2383
2223
|
};
|
|
2384
2224
|
const HelpTopicDrawer = (_a) => {
|
|
2385
2225
|
var { children } = _a, props = tslib.__rest(_a, ["children"]);
|
|
2386
|
-
const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } =
|
|
2226
|
+
const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } = react.useContext(HelpTopicContext);
|
|
2387
2227
|
const onClose = () => {
|
|
2388
2228
|
setActiveHelpTopicByName('');
|
|
2389
2229
|
};
|
|
2390
|
-
const panelContent = (
|
|
2391
|
-
return (
|
|
2392
|
-
React__namespace.createElement(reactCore.Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props), children ? (React__namespace.createElement(reactCore.DrawerContent, { panelContent: panelContent },
|
|
2393
|
-
React__namespace.createElement(reactCore.DrawerContentBody, null, children))) : (React__namespace.createElement("div", { className: "pf-v6-c-drawer__main" }, panelContent)))));
|
|
2230
|
+
const panelContent = (jsxRuntime.jsx(HelpTopicPanelContent, { activeHelpTopic: activeHelpTopic, filteredHelpTopics: filteredHelpTopics, onClose: onClose }));
|
|
2231
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(reactCore.Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props, { children: children ? (jsxRuntime.jsx(reactCore.DrawerContent, Object.assign({ panelContent: panelContent }, { children: jsxRuntime.jsx(reactCore.DrawerContentBody, { children: children }) }))) : (jsxRuntime.jsx("div", Object.assign({ className: "pf-v6-c-drawer__main" }, { children: panelContent }))) })) }));
|
|
2394
2232
|
};
|
|
2395
2233
|
|
|
2396
2234
|
const useLocalStorage = (key, initialValue) => {
|
|
2397
2235
|
// State to store our value
|
|
2398
2236
|
// Pass initial state function to useState so logic is only executed once
|
|
2399
|
-
const [storedValue, setStoredValue] =
|
|
2237
|
+
const [storedValue, setStoredValue] = react.useState(() => {
|
|
2400
2238
|
try {
|
|
2401
2239
|
// Get from local storage by key
|
|
2402
2240
|
const item = window.localStorage.getItem(key);
|