@patternfly/quickstarts 6.3.0-prerelease.3 → 6.3.0-prerelease.4
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 +3 -4
- 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.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useState, useCallback, useEffect, useContext, Fragment, useRef, useMemo, useReducer, cloneElement, Children, forwardRef } from 'react';
|
|
3
3
|
import { useIsomorphicLayoutEffect, Tooltip, Alert, CodeBlock, Accordion, AccordionItem, AccordionToggle, AccordionContent, Popover, PopoverPosition, Button, Icon, Flex, FlexItem, Card, CardHeader, CardTitle, CardBody, Stack, Label, CardFooter, Gallery, ToolbarItem, SearchInput, Select, SelectList, SelectOption, MenuToggle, Badge, Toolbar, ToolbarContent, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateActions, PageSection, Content, Title, Divider, WizardNavItem, ExpandableSection, List, ListItem, Radio, ActionList, ActionListGroup, ActionListItem, DrawerPanelContent, DrawerHead, DrawerActions, DrawerCloseButton, DrawerPanelBody, Drawer, DrawerContent, DrawerContentBody, StackItem } from '@patternfly/react-core';
|
|
4
4
|
import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
|
|
5
5
|
import { css } from '@patternfly/react-styles';
|
|
@@ -7,6 +7,7 @@ import RocketIcon from '@patternfly/react-icons/dist/js/icons/rocket-icon';
|
|
|
7
7
|
import { __rest, __awaiter } from 'tslib';
|
|
8
8
|
import { Modal as Modal$1, ModalVariant } from '@patternfly/react-core/deprecated';
|
|
9
9
|
import * as ReactDOM from 'react-dom';
|
|
10
|
+
import { createPortal } from 'react-dom';
|
|
10
11
|
import { renderToStaticMarkup } from 'react-dom/server';
|
|
11
12
|
import CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';
|
|
12
13
|
import LightbulbIcon from '@patternfly/react-icons/dist/js/icons/lightbulb-icon';
|
|
@@ -594,27 +595,27 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
594
595
|
var _a, _b;
|
|
595
596
|
const combinedValue = Object.assign(Object.assign({}, QuickStartContextDefaults), value);
|
|
596
597
|
const { activeQuickStartID, setActiveQuickStartID, setAllQuickStartStates, useQueryParams, allQuickStartStates, allQuickStarts = [], footer, useLegacyHeaderColors, markdown, } = combinedValue;
|
|
597
|
-
const [quickStarts, setQuickStarts] =
|
|
598
|
-
const [resourceBundle, setResourceBundle] =
|
|
599
|
-
const [language, setLanguage] =
|
|
598
|
+
const [quickStarts, setQuickStarts] = useState(combinedValue.allQuickStarts || []);
|
|
599
|
+
const [resourceBundle, setResourceBundle] = useState(Object.assign(Object.assign({}, en), combinedValue.resourceBundle));
|
|
600
|
+
const [language, setLanguage] = useState(combinedValue.language);
|
|
600
601
|
const changeResourceBundle = (bundle, lng) => {
|
|
601
602
|
lng && setLanguage(lng);
|
|
602
603
|
setResourceBundle(Object.assign(Object.assign({}, en), bundle));
|
|
603
604
|
};
|
|
604
605
|
const findResource = useCallback((resource, count) => getResource(resource, count !== undefined ? { count } : null, resourceBundle, language), [resourceBundle, language]);
|
|
605
|
-
const [loading, setLoading] =
|
|
606
|
-
const [alwaysShowTaskReview, setAlwaysShowTaskReview] =
|
|
606
|
+
const [loading, setLoading] = useState(combinedValue.loading);
|
|
607
|
+
const [alwaysShowTaskReview, setAlwaysShowTaskReview] = useState(combinedValue.alwaysShowTaskReview);
|
|
607
608
|
const initialSearchParams = new URLSearchParams(window.location.search);
|
|
608
609
|
const initialSearchQuery = initialSearchParams.get(QUICKSTART_SEARCH_FILTER_KEY) || '';
|
|
609
610
|
const initialStatusFilters = ((_a = initialSearchParams.get(QUICKSTART_STATUS_FILTER_KEY)) === null || _a === void 0 ? void 0 : _a.split(',')) || [];
|
|
610
611
|
const quickStartStatusCount = getQuickStartStatusCount(allQuickStartStates, allQuickStarts);
|
|
611
|
-
const [statusTypes, setStatusTypes] =
|
|
612
|
+
const [statusTypes, setStatusTypes] = useState({
|
|
612
613
|
[QuickStartStatus.COMPLETE]: findResource('Complete ({{statusCount, number}})').replace('{{statusCount, number}}', quickStartStatusCount[QuickStartStatus.COMPLETE]),
|
|
613
614
|
[QuickStartStatus.IN_PROGRESS]: findResource('In progress ({{statusCount, number}})').replace('{{statusCount, number}}', quickStartStatusCount[QuickStartStatus.IN_PROGRESS]),
|
|
614
615
|
[QuickStartStatus.NOT_STARTED]: findResource('Not started ({{statusCount, number}})').replace('{{statusCount, number}}', quickStartStatusCount[QuickStartStatus.NOT_STARTED]),
|
|
615
616
|
});
|
|
616
|
-
const [statusFilters, setStatusFilters] =
|
|
617
|
-
const [filterKeyword, setFilterKeyword] =
|
|
617
|
+
const [statusFilters, setStatusFilters] = useState(initialStatusFilters);
|
|
618
|
+
const [filterKeyword, setFilterKeyword] = useState(initialSearchQuery);
|
|
618
619
|
const setFilter = (type, val) => {
|
|
619
620
|
if (type === 'keyword') {
|
|
620
621
|
setFilterKeyword(val);
|
|
@@ -623,7 +624,7 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
623
624
|
setStatusFilters(val);
|
|
624
625
|
}
|
|
625
626
|
};
|
|
626
|
-
|
|
627
|
+
useEffect(() => {
|
|
627
628
|
const updatedQuickStartStatusCount = getQuickStartStatusCount(allQuickStartStates, quickStarts);
|
|
628
629
|
setStatusTypes({
|
|
629
630
|
[QuickStartStatus.COMPLETE]: findResource('Complete ({{statusCount, number}})').replace('{{statusCount, number}}', updatedQuickStartStatusCount[QuickStartStatus.COMPLETE]),
|
|
@@ -795,24 +796,18 @@ const useValuesForQuickStartContext = (value = {}) => {
|
|
|
795
796
|
setAlwaysShowTaskReview,
|
|
796
797
|
};
|
|
797
798
|
};
|
|
798
|
-
const QuickStartContextProvider = ({ children, value }) => (
|
|
799
|
+
const QuickStartContextProvider = ({ children, value }) => (jsx(QuickStartContext.Provider, Object.assign({ value: useValuesForQuickStartContext(value) }, { children: children })));
|
|
799
800
|
|
|
800
|
-
const Box = ({ children, className }) => (
|
|
801
|
-
const Loading = ({ className }) => (
|
|
802
|
-
React.createElement("div", { className: "pfext-m-loader-dot__one" }),
|
|
803
|
-
React.createElement("div", { className: "pfext-m-loader-dot__two" }),
|
|
804
|
-
React.createElement("div", { className: "pfext-m-loader-dot__three" })));
|
|
801
|
+
const Box = ({ children, className }) => (jsx("div", Object.assign({ className: css('pfext-status-box', className) }, { children: children })));
|
|
802
|
+
const Loading = ({ className }) => (jsxs("div", Object.assign({ className: css('pfext-m-loader', className) }, { children: [jsx("div", { className: "pfext-m-loader-dot__one" }), jsx("div", { className: "pfext-m-loader-dot__two" }), jsx("div", { className: "pfext-m-loader-dot__three" })] })));
|
|
805
803
|
Loading.displayName = 'Loading';
|
|
806
|
-
const LoadingBox = ({ className, message }) => (
|
|
807
|
-
React.createElement(Loading, null),
|
|
808
|
-
message && React.createElement("div", { className: "pfext-status-box__loading-message" }, message)));
|
|
804
|
+
const LoadingBox = ({ className, message }) => (jsxs(Box, Object.assign({ className: css('pfext-status-box--loading', className) }, { children: [jsx(Loading, {}), message && jsx("div", Object.assign({ className: "pfext-status-box__loading-message" }, { children: message }))] })));
|
|
809
805
|
LoadingBox.displayName = 'LoadingBox';
|
|
810
806
|
const EmptyBox = ({ label }) => {
|
|
811
|
-
const { getResource } =
|
|
812
|
-
return (
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
: getResource('Not found'))));
|
|
807
|
+
const { getResource } = useContext(QuickStartContext);
|
|
808
|
+
return (jsx(Box, { children: jsx("div", Object.assign({ "data-test": "empty-message", className: "text-center" }, { children: label
|
|
809
|
+
? getResource('No {{label}} found').replace('{{label}}', label)
|
|
810
|
+
: getResource('Not found') })) }));
|
|
816
811
|
};
|
|
817
812
|
EmptyBox.displayName = 'EmptyBox';
|
|
818
813
|
|
|
@@ -826,49 +821,47 @@ const CamelCaseWrap = ({ value, dataTest }) => {
|
|
|
826
821
|
}
|
|
827
822
|
// Add word break points before capital letters (but keep consecutive capital letters together).
|
|
828
823
|
const words = value.match(/[A-Z]+[^A-Z]*|[^A-Z]+/g);
|
|
829
|
-
const rendered = (
|
|
830
|
-
word,
|
|
831
|
-
i !== words.length - 1 && React.createElement("wbr", null))))));
|
|
824
|
+
const rendered = (jsx("span", Object.assign({ "data-test": dataTest }, { children: words.map((word, i) => (jsxs(Fragment, { children: [word, i !== words.length - 1 && jsx("wbr", {})] }, i))) })));
|
|
832
825
|
MEMO[value] = rendered;
|
|
833
826
|
return rendered;
|
|
834
827
|
};
|
|
835
828
|
|
|
836
829
|
const Modal = (_a) => {
|
|
837
830
|
var { isFullScreen = false, className } = _a, props = __rest(_a, ["isFullScreen", "className"]);
|
|
838
|
-
return (
|
|
831
|
+
return (jsx(Modal$1, Object.assign({}, props, { className: css('pfext-modal', className), appendTo: () => (isFullScreen ? document.body : document.querySelector('#modal-container')) })));
|
|
839
832
|
};
|
|
840
833
|
|
|
841
834
|
const getContainer = (container) => typeof container === 'function' ? container() : container;
|
|
842
835
|
const Portal = ({ children, container }) => {
|
|
843
|
-
const [containerNode, setContainerNode] =
|
|
836
|
+
const [containerNode, setContainerNode] = useState();
|
|
844
837
|
useIsomorphicLayoutEffect(() => {
|
|
845
838
|
setContainerNode(getContainer(container) || document.body);
|
|
846
839
|
}, [container]);
|
|
847
|
-
return containerNode ?
|
|
840
|
+
return containerNode ? createPortal(children, containerNode) : null;
|
|
848
841
|
};
|
|
849
842
|
|
|
850
843
|
const SimplePopper = ({ children }) => {
|
|
851
844
|
const openProp = true;
|
|
852
|
-
const nodeRef =
|
|
853
|
-
const popperRef =
|
|
854
|
-
const [isOpen, setOpenState] =
|
|
855
|
-
const setOpen =
|
|
845
|
+
const nodeRef = useRef(null);
|
|
846
|
+
const popperRef = useRef(null);
|
|
847
|
+
const [isOpen, setOpenState] = useState(openProp);
|
|
848
|
+
const setOpen = useCallback((newOpen) => {
|
|
856
849
|
setOpenState(newOpen);
|
|
857
850
|
}, []);
|
|
858
|
-
|
|
851
|
+
useEffect(() => {
|
|
859
852
|
setOpen(openProp);
|
|
860
853
|
}, [openProp, setOpen]);
|
|
861
|
-
const onKeyDown =
|
|
854
|
+
const onKeyDown = useCallback((e) => {
|
|
862
855
|
if (e.keyCode === 27) {
|
|
863
856
|
setOpen(false);
|
|
864
857
|
}
|
|
865
858
|
}, [setOpen]);
|
|
866
|
-
const onClickOutside =
|
|
859
|
+
const onClickOutside = useCallback((e) => {
|
|
867
860
|
if (!nodeRef.current || (e.target instanceof Node && !nodeRef.current.contains(e.target))) {
|
|
868
861
|
setOpen(false);
|
|
869
862
|
}
|
|
870
863
|
}, [setOpen]);
|
|
871
|
-
const destroy =
|
|
864
|
+
const destroy = useCallback(() => {
|
|
872
865
|
if (popperRef.current) {
|
|
873
866
|
popperRef.current.destroy();
|
|
874
867
|
document.removeEventListener('keydown', onKeyDown, true);
|
|
@@ -876,29 +869,28 @@ const SimplePopper = ({ children }) => {
|
|
|
876
869
|
document.removeEventListener('touchstart', onClickOutside, true);
|
|
877
870
|
}
|
|
878
871
|
}, [onClickOutside, onKeyDown]);
|
|
879
|
-
const initialize =
|
|
872
|
+
const initialize = useCallback(() => {
|
|
880
873
|
if (!nodeRef.current || !isOpen) {
|
|
881
874
|
return;
|
|
882
875
|
}
|
|
883
876
|
destroy();
|
|
884
877
|
}, [isOpen, destroy]);
|
|
885
|
-
const nodeRefCallback =
|
|
878
|
+
const nodeRefCallback = useCallback((node) => {
|
|
886
879
|
nodeRef.current = node;
|
|
887
880
|
initialize();
|
|
888
881
|
}, [initialize]);
|
|
889
|
-
|
|
882
|
+
useEffect(() => {
|
|
890
883
|
initialize();
|
|
891
884
|
}, [initialize]);
|
|
892
|
-
|
|
885
|
+
useEffect(() => () => {
|
|
893
886
|
destroy();
|
|
894
887
|
}, [destroy]);
|
|
895
|
-
|
|
888
|
+
useEffect(() => {
|
|
896
889
|
if (!isOpen) {
|
|
897
890
|
destroy();
|
|
898
891
|
}
|
|
899
892
|
}, [destroy, isOpen]);
|
|
900
|
-
return isOpen ? (
|
|
901
|
-
React.createElement("div", { ref: nodeRefCallback, style: { zIndex: 9999, position: 'absolute', top: 0, left: 0 }, className: "pfext-quick-start__base" }, children))) : null;
|
|
893
|
+
return isOpen ? (jsx(Portal, { children: jsx("div", Object.assign({ ref: nodeRefCallback, style: { zIndex: 9999, position: 'absolute', top: 0, left: 0 }, className: "pfext-quick-start__base" }, { children: children })) })) : null;
|
|
902
894
|
};
|
|
903
895
|
|
|
904
896
|
const isInViewport = (elementToCheck) => {
|
|
@@ -918,8 +910,8 @@ const InteractiveSpotlight = ({ element }) => {
|
|
|
918
910
|
bottom,
|
|
919
911
|
right,
|
|
920
912
|
};
|
|
921
|
-
const [clicked, setClicked] =
|
|
922
|
-
|
|
913
|
+
const [clicked, setClicked] = useState(false);
|
|
914
|
+
useEffect(() => {
|
|
923
915
|
if (!clicked) {
|
|
924
916
|
if (!isInViewport(element)) {
|
|
925
917
|
element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
|
|
@@ -935,9 +927,7 @@ const InteractiveSpotlight = ({ element }) => {
|
|
|
935
927
|
if (clicked) {
|
|
936
928
|
return null;
|
|
937
929
|
}
|
|
938
|
-
return (
|
|
939
|
-
React.createElement(SimplePopper, null,
|
|
940
|
-
React.createElement("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-animate", style: style }))));
|
|
930
|
+
return (jsx(Portal, { children: jsx(SimplePopper, { children: jsx("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-animate", style: style }) }) }));
|
|
941
931
|
};
|
|
942
932
|
|
|
943
933
|
var ScrollDirection;
|
|
@@ -949,8 +939,8 @@ var ScrollDirection;
|
|
|
949
939
|
})(ScrollDirection || (ScrollDirection = {}));
|
|
950
940
|
|
|
951
941
|
const useResizeObserver = (callback, targetElement, observerOptions = undefined) => {
|
|
952
|
-
const element =
|
|
953
|
-
|
|
942
|
+
const element = useMemo(() => targetElement !== null && targetElement !== void 0 ? targetElement : document.querySelector('body'), [targetElement]);
|
|
943
|
+
useEffect(() => {
|
|
954
944
|
const observer = new ResizeObserver(callback);
|
|
955
945
|
observer.observe(element, observerOptions);
|
|
956
946
|
return () => {
|
|
@@ -968,8 +958,8 @@ var Shadows;
|
|
|
968
958
|
})(Shadows || (Shadows = {}));
|
|
969
959
|
|
|
970
960
|
const useBoundingClientRect = (targetElement) => {
|
|
971
|
-
const [clientRect, setClientRect] =
|
|
972
|
-
const observerCallback =
|
|
961
|
+
const [clientRect, setClientRect] = useState(() => targetElement ? targetElement.getBoundingClientRect() : null);
|
|
962
|
+
const observerCallback = useCallback(() => {
|
|
973
963
|
setClientRect(targetElement ? targetElement.getBoundingClientRect() : null);
|
|
974
964
|
}, [targetElement]);
|
|
975
965
|
useResizeObserver(observerCallback);
|
|
@@ -979,7 +969,7 @@ const useBoundingClientRect = (targetElement) => {
|
|
|
979
969
|
/**
|
|
980
970
|
* React hook that forces component render.
|
|
981
971
|
*/
|
|
982
|
-
const useForceRender = () =>
|
|
972
|
+
const useForceRender = () => useReducer((s) => !s, false)[1];
|
|
983
973
|
|
|
984
974
|
const useEventListener = (target, event, callback) => {
|
|
985
975
|
useEffect(() => {
|
|
@@ -1000,14 +990,12 @@ const StaticSpotlight = ({ element }) => {
|
|
|
1000
990
|
width: clientRect.width,
|
|
1001
991
|
}
|
|
1002
992
|
: {};
|
|
1003
|
-
return clientRect ? (
|
|
1004
|
-
React.createElement("div", { className: "pf-v6-c-backdrop pfext-spotlight__with-backdrop" },
|
|
1005
|
-
React.createElement("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-noanimate", style: style })))) : null;
|
|
993
|
+
return clientRect ? (jsx(Portal, { children: jsx("div", Object.assign({ className: "pf-v6-c-backdrop pfext-spotlight__with-backdrop" }, { children: jsx("div", { className: "pfext-spotlight pfext-spotlight__element-highlight-noanimate", style: style }) })) })) : null;
|
|
1006
994
|
};
|
|
1007
995
|
|
|
1008
996
|
const Spotlight = ({ selector, interactive }) => {
|
|
1009
997
|
// if target element is a hidden one return null
|
|
1010
|
-
const element =
|
|
998
|
+
const element = useMemo(() => {
|
|
1011
999
|
const highlightElement = document.querySelector(selector);
|
|
1012
1000
|
let hiddenElement = highlightElement;
|
|
1013
1001
|
while (hiddenElement) {
|
|
@@ -1022,12 +1010,12 @@ const Spotlight = ({ selector, interactive }) => {
|
|
|
1022
1010
|
if (!element) {
|
|
1023
1011
|
return null;
|
|
1024
1012
|
}
|
|
1025
|
-
return interactive ? (
|
|
1013
|
+
return interactive ? (jsx(InteractiveSpotlight, { element: element })) : (jsx(StaticSpotlight, { element: element }));
|
|
1026
1014
|
};
|
|
1027
1015
|
|
|
1028
1016
|
const MarkdownHighlightExtension = ({ docContext, rootSelector, }) => {
|
|
1029
|
-
const [selector, setSelector] =
|
|
1030
|
-
|
|
1017
|
+
const [selector, setSelector] = useState(null);
|
|
1018
|
+
useEffect(() => {
|
|
1031
1019
|
const elements = docContext.querySelectorAll(`${rootSelector} [data-highlight]`);
|
|
1032
1020
|
let timeoutId;
|
|
1033
1021
|
function startHighlight(e) {
|
|
@@ -1046,7 +1034,7 @@ const MarkdownHighlightExtension = ({ docContext, rootSelector, }) => {
|
|
|
1046
1034
|
elements && elements.forEach((elm) => elm.removeEventListener('click', startHighlight));
|
|
1047
1035
|
};
|
|
1048
1036
|
}, [docContext, rootSelector]);
|
|
1049
|
-
|
|
1037
|
+
useEffect(() => {
|
|
1050
1038
|
const elements = docContext.querySelectorAll(`${rootSelector} [class^=data-highlight__]`);
|
|
1051
1039
|
let timeoutId;
|
|
1052
1040
|
function startHighlight(e) {
|
|
@@ -1076,7 +1064,7 @@ const MarkdownHighlightExtension = ({ docContext, rootSelector, }) => {
|
|
|
1076
1064
|
if (!selector) {
|
|
1077
1065
|
return null;
|
|
1078
1066
|
}
|
|
1079
|
-
return
|
|
1067
|
+
return jsx(Spotlight, { selector: selector, interactive: true });
|
|
1080
1068
|
};
|
|
1081
1069
|
|
|
1082
1070
|
const MARKDOWN_COPY_BUTTON_ID = 'data-copy-for';
|
|
@@ -1084,15 +1072,15 @@ const MARKDOWN_SNIPPET_ID = 'data-snippet-id';
|
|
|
1084
1072
|
const ACCORDION_MARKDOWN_BUTTON_ID = `accordion-markdown-button-id`;
|
|
1085
1073
|
const ACCORDION_MARKDOWN_CONTENT_ID = `accordion-markdown-content-id`;
|
|
1086
1074
|
|
|
1087
|
-
const CopyClipboard = ({ element, rootSelector, docContext
|
|
1088
|
-
const { getResource } =
|
|
1089
|
-
const [showSuccessContent, setShowSuccessContent] =
|
|
1090
|
-
const textToCopy =
|
|
1075
|
+
const CopyClipboard = ({ element, rootSelector, docContext }) => {
|
|
1076
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1077
|
+
const [showSuccessContent, setShowSuccessContent] = useState(false);
|
|
1078
|
+
const textToCopy = useMemo(() => {
|
|
1091
1079
|
var _a;
|
|
1092
1080
|
const copyTextId = element.getAttribute(MARKDOWN_COPY_BUTTON_ID);
|
|
1093
1081
|
return (_a = docContext.querySelector(`${rootSelector} [${MARKDOWN_SNIPPET_ID}="${copyTextId}"]`)) === null || _a === void 0 ? void 0 : _a.innerText;
|
|
1094
1082
|
}, [element, docContext, rootSelector]);
|
|
1095
|
-
useEventListener(element, 'click',
|
|
1083
|
+
useEventListener(element, 'click', useCallback(() => {
|
|
1096
1084
|
navigator.clipboard
|
|
1097
1085
|
.writeText(textToCopy.trim())
|
|
1098
1086
|
.then(() => {
|
|
@@ -1100,24 +1088,24 @@ const CopyClipboard = ({ element, rootSelector, docContext, }) => {
|
|
|
1100
1088
|
})
|
|
1101
1089
|
.catch(() => { });
|
|
1102
1090
|
}, [textToCopy]));
|
|
1103
|
-
useEventListener(element, 'mouseleave',
|
|
1091
|
+
useEventListener(element, 'mouseleave', useCallback(() => {
|
|
1104
1092
|
setShowSuccessContent(false);
|
|
1105
1093
|
}, []));
|
|
1106
|
-
return showSuccessContent ? (
|
|
1094
|
+
return showSuccessContent ? (jsx(Tooltip, { isVisible: true, triggerRef: () => element, content: getResource('Successfully copied to clipboard!'), className: "pfext-quick-start__base" }, "after-copy")) : (jsx(Tooltip, { triggerRef: () => element, content: getResource('Copy to clipboard'), className: "pfext-quick-start__base" }, "before-copy"));
|
|
1107
1095
|
};
|
|
1108
|
-
const MarkdownCopyClipboard = ({ docContext, rootSelector
|
|
1096
|
+
const MarkdownCopyClipboard = ({ docContext, rootSelector }) => {
|
|
1109
1097
|
const elements = docContext.querySelectorAll(`${rootSelector} [${MARKDOWN_COPY_BUTTON_ID}]`);
|
|
1110
|
-
return elements.length > 0 ? (
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1098
|
+
return elements.length > 0 ? (jsx(Fragment$1, { children: Array.from(elements).map((elm) => {
|
|
1099
|
+
const attributeValue = elm.getAttribute(MARKDOWN_COPY_BUTTON_ID);
|
|
1100
|
+
return (jsx(CopyClipboard, { element: elm, rootSelector: rootSelector, docContext: docContext }, attributeValue));
|
|
1101
|
+
}) })) : null;
|
|
1114
1102
|
};
|
|
1115
1103
|
|
|
1116
1104
|
const removeTemplateWhitespace = (template) => template.replace(/>(?:\s|\n)+</g, '><');
|
|
1117
1105
|
|
|
1118
1106
|
const useInlineCopyClipboardShowdownExtension = () => {
|
|
1119
|
-
const { getResource } =
|
|
1120
|
-
return
|
|
1107
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1108
|
+
return useMemo(() => ({
|
|
1121
1109
|
type: 'lang',
|
|
1122
1110
|
regex: /`([^`](.*?)[^`])`{{copy}}/g,
|
|
1123
1111
|
replace: (text, group, _, groupId) => {
|
|
@@ -1129,7 +1117,7 @@ const useInlineCopyClipboardShowdownExtension = () => {
|
|
|
1129
1117
|
<span class="pf-v6-c-clipboard-copy__actions">
|
|
1130
1118
|
<span class="pf-v6-c-clipboard-copy__actions-item">
|
|
1131
1119
|
<button class="pf-v6-c-button pf-m-plain" aria-label="${getResource('Copy to clipboard')}" ${MARKDOWN_COPY_BUTTON_ID}="${groupId}">
|
|
1132
|
-
${renderToStaticMarkup(
|
|
1120
|
+
${renderToStaticMarkup(jsx(CopyIcon, {}))}
|
|
1133
1121
|
</button>
|
|
1134
1122
|
</span>
|
|
1135
1123
|
</span>
|
|
@@ -1138,10 +1126,9 @@ const useInlineCopyClipboardShowdownExtension = () => {
|
|
|
1138
1126
|
}), [getResource]);
|
|
1139
1127
|
};
|
|
1140
1128
|
|
|
1141
|
-
/* eslint-disable max-len */
|
|
1142
1129
|
const useMultilineCopyClipboardShowdownExtension = () => {
|
|
1143
|
-
const { getResource } =
|
|
1144
|
-
return
|
|
1130
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1131
|
+
return useMemo(() => ({
|
|
1145
1132
|
type: 'lang',
|
|
1146
1133
|
regex: /```[\n]\s*((((?!```).)*?\n)+)\s*```{{copy}}/g,
|
|
1147
1134
|
replace: (text, group, _1, _2, groupId) => {
|
|
@@ -1153,7 +1140,7 @@ const useMultilineCopyClipboardShowdownExtension = () => {
|
|
|
1153
1140
|
<div class="pf-v6-c-code-block__actions">
|
|
1154
1141
|
<div class="pf-v6-c-code-block__actions-item">
|
|
1155
1142
|
<button class="pf-v6-c-button pf-m-plain" type="button" aria-label="${getResource('Copy to clipboard')}" ${MARKDOWN_COPY_BUTTON_ID}="${groupId}">
|
|
1156
|
-
${renderToStaticMarkup(
|
|
1143
|
+
${renderToStaticMarkup(jsx(CopyIcon, {}))}
|
|
1157
1144
|
</button>
|
|
1158
1145
|
</div>
|
|
1159
1146
|
</div>
|
|
@@ -1245,9 +1232,9 @@ const markdownConvert = (markdown, extensions) => __awaiter(void 0, void 0, void
|
|
|
1245
1232
|
return DOMPurify.sanitize(md);
|
|
1246
1233
|
});
|
|
1247
1234
|
const SyncMarkdownView = ({ content, emptyMsg, extensions, renderExtension, exactHeight, inline, className, }) => {
|
|
1248
|
-
const { getResource } =
|
|
1249
|
-
const [markup, setMarkup] =
|
|
1250
|
-
|
|
1235
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1236
|
+
const [markup, setMarkup] = useState('');
|
|
1237
|
+
useEffect(() => {
|
|
1251
1238
|
function getMd() {
|
|
1252
1239
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1253
1240
|
const md = yield markdownConvert(content || emptyMsg || getResource('Not available'), extensions);
|
|
@@ -1263,7 +1250,7 @@ const SyncMarkdownView = ({ content, emptyMsg, extensions, renderExtension, exac
|
|
|
1263
1250
|
isEmpty: !content,
|
|
1264
1251
|
className,
|
|
1265
1252
|
};
|
|
1266
|
-
return inline ?
|
|
1253
|
+
return inline ? jsx(InlineMarkdownView, Object.assign({}, innerProps)) : jsx(IFrameMarkdownView, Object.assign({}, innerProps));
|
|
1267
1254
|
};
|
|
1268
1255
|
const uniqueId = (function () {
|
|
1269
1256
|
let num = 0;
|
|
@@ -1275,8 +1262,8 @@ const uniqueId = (function () {
|
|
|
1275
1262
|
})();
|
|
1276
1263
|
const RenderExtension = ({ renderExtension, selector, markup, docContext, }) => {
|
|
1277
1264
|
const forceRender = useForceRender();
|
|
1278
|
-
const markupRef =
|
|
1279
|
-
const shouldRenderExtension =
|
|
1265
|
+
const markupRef = useRef(null);
|
|
1266
|
+
const shouldRenderExtension = useCallback(() => {
|
|
1280
1267
|
if (markupRef.current === markup) {
|
|
1281
1268
|
return true;
|
|
1282
1269
|
}
|
|
@@ -1289,25 +1276,23 @@ const RenderExtension = ({ renderExtension, selector, markup, docContext, }) =>
|
|
|
1289
1276
|
* which causes the component rendered by renderExtension to receive old copy of document
|
|
1290
1277
|
* use forceRender to delay the rendering of extension by one render cycle
|
|
1291
1278
|
*/
|
|
1292
|
-
|
|
1279
|
+
useEffect(() => {
|
|
1293
1280
|
if (renderExtension) {
|
|
1294
1281
|
forceRender();
|
|
1295
1282
|
}
|
|
1296
1283
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1297
1284
|
}, [markup]);
|
|
1298
|
-
return (
|
|
1285
|
+
return (jsx(Fragment$1, { children: shouldRenderExtension() ? renderExtension === null || renderExtension === void 0 ? void 0 : renderExtension(docContext !== null && docContext !== void 0 ? docContext : document, selector) : null }));
|
|
1299
1286
|
};
|
|
1300
1287
|
const InlineMarkdownView = ({ markup, isEmpty, renderExtension, className, }) => {
|
|
1301
|
-
const id =
|
|
1302
|
-
return (
|
|
1303
|
-
React.createElement("div", { dangerouslySetInnerHTML: { __html: markup } }),
|
|
1304
|
-
renderExtension && (React.createElement(RenderExtension, { renderExtension: renderExtension, selector: `#${id}`, markup: markup }))));
|
|
1288
|
+
const id = useMemo(() => uniqueId('markdown'), []);
|
|
1289
|
+
return (jsxs("div", Object.assign({ className: css({ 'is-empty': isEmpty }, className), id: id }, { children: [jsx("div", { dangerouslySetInnerHTML: { __html: markup } }), renderExtension && (jsx(RenderExtension, { renderExtension: renderExtension, selector: `#${id}`, markup: markup }))] })));
|
|
1305
1290
|
};
|
|
1306
1291
|
const IFrameMarkdownView = ({ exactHeight, markup, isEmpty, renderExtension, className, }) => {
|
|
1307
|
-
const [frame, setFrame] =
|
|
1308
|
-
const [loaded, setLoaded] =
|
|
1309
|
-
const updateTimeoutHandle =
|
|
1310
|
-
const updateDimensions =
|
|
1292
|
+
const [frame, setFrame] = useState();
|
|
1293
|
+
const [loaded, setLoaded] = useState(false);
|
|
1294
|
+
const updateTimeoutHandle = useRef(null);
|
|
1295
|
+
const updateDimensions = useCallback(() => {
|
|
1311
1296
|
var _a;
|
|
1312
1297
|
if (!((_a = frame === null || frame === void 0 ? void 0 : frame.contentWindow) === null || _a === void 0 ? void 0 : _a.document.body.firstChild)) {
|
|
1313
1298
|
return;
|
|
@@ -1324,10 +1309,10 @@ const IFrameMarkdownView = ({ exactHeight, markup, isEmpty, renderExtension, cla
|
|
|
1324
1309
|
}
|
|
1325
1310
|
});
|
|
1326
1311
|
}, [frame, exactHeight]);
|
|
1327
|
-
|
|
1312
|
+
useEffect(() => () => {
|
|
1328
1313
|
clearTimeout(updateTimeoutHandle.current);
|
|
1329
1314
|
}, []);
|
|
1330
|
-
const onLoad =
|
|
1315
|
+
const onLoad = useCallback(() => {
|
|
1331
1316
|
updateDimensions();
|
|
1332
1317
|
setLoaded(true);
|
|
1333
1318
|
}, [updateDimensions]);
|
|
@@ -1360,9 +1345,9 @@ const IFrameMarkdownView = ({ exactHeight, markup, isEmpty, renderExtension, cla
|
|
|
1360
1345
|
}
|
|
1361
1346
|
</style>
|
|
1362
1347
|
<body class="pf-m-redhat-font"><div style="overflow-y: auto;">${markup}</div></body>`;
|
|
1363
|
-
return (
|
|
1364
|
-
|
|
1365
|
-
|
|
1348
|
+
return (jsxs(Fragment$1, { children: [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) => {
|
|
1349
|
+
setFrame(r);
|
|
1350
|
+
}, onLoad: () => onLoad(), className: className }), loaded && frame && renderExtension && (jsx(RenderExtension, { markup: markup, selector: '', renderExtension: renderExtension, docContext: frame.contentDocument }))] }));
|
|
1366
1351
|
};
|
|
1367
1352
|
|
|
1368
1353
|
const LINK_LABEL = '[\\d\\w\\s-()$!]+';
|
|
@@ -1372,13 +1357,13 @@ const SELECTOR_ID = `[\\w-]+`;
|
|
|
1372
1357
|
const HIGHLIGHT_REGEXP = new RegExp(`\\[(${LINK_LABEL})]{{(${HIGHLIGHT_ACTIONS.join('|')}) (${SELECTOR_ID})}}`, 'g');
|
|
1373
1358
|
|
|
1374
1359
|
const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
|
|
1375
|
-
const { markdown } =
|
|
1360
|
+
const { markdown } = useContext(QuickStartContext);
|
|
1376
1361
|
const inlineCopyClipboardShowdownExtension = useInlineCopyClipboardShowdownExtension();
|
|
1377
1362
|
const multilineCopyClipboardShowdownExtension = useMultilineCopyClipboardShowdownExtension();
|
|
1378
1363
|
const admonitionShowdownExtension = useAdmonitionShowdownExtension();
|
|
1379
1364
|
const codeShowdownExtension = useCodeShowdownExtension();
|
|
1380
1365
|
const accordionShowdownExtension = useAccordionShowdownExtension();
|
|
1381
|
-
return (
|
|
1366
|
+
return (jsx(SyncMarkdownView, { inline: true, content: content, exactHeight: exactHeight, extensions: [
|
|
1382
1367
|
{
|
|
1383
1368
|
type: 'lang',
|
|
1384
1369
|
regex: HIGHLIGHT_REGEXP,
|
|
@@ -1403,13 +1388,9 @@ const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
|
|
|
1403
1388
|
codeShowdownExtension,
|
|
1404
1389
|
accordionShowdownExtension,
|
|
1405
1390
|
...(markdown ? markdown.extensions : []),
|
|
1406
|
-
], renderExtension: (docContext, rootSelector) => (
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
React.createElement(MarkdownCopyClipboard, { docContext: docContext, rootSelector: rootSelector }),
|
|
1410
|
-
markdown &&
|
|
1411
|
-
markdown.renderExtension &&
|
|
1412
|
-
markdown.renderExtension(docContext, rootSelector))), className: className }));
|
|
1391
|
+
], renderExtension: (docContext, rootSelector) => (jsxs(Fragment$1, { children: [jsx(AccordionRenderExtension, { docContext: docContext }), jsx(MarkdownHighlightExtension, { docContext: docContext, rootSelector: rootSelector }), jsx(MarkdownCopyClipboard, { docContext: docContext, rootSelector: rootSelector }), markdown &&
|
|
1392
|
+
markdown.renderExtension &&
|
|
1393
|
+
markdown.renderExtension(docContext, rootSelector)] })), className: className }));
|
|
1413
1394
|
};
|
|
1414
1395
|
|
|
1415
1396
|
var AdmonitionType;
|
|
@@ -1422,14 +1403,14 @@ var AdmonitionType;
|
|
|
1422
1403
|
})(AdmonitionType || (AdmonitionType = {}));
|
|
1423
1404
|
const admonitionToAlertVariantMap = {
|
|
1424
1405
|
[AdmonitionType.NOTE]: { variant: 'info' },
|
|
1425
|
-
[AdmonitionType.TIP]: { variant: 'custom', customIcon:
|
|
1406
|
+
[AdmonitionType.TIP]: { variant: 'custom', customIcon: jsx(LightbulbIcon, {}) },
|
|
1426
1407
|
[AdmonitionType.IMPORTANT]: { variant: 'danger' },
|
|
1427
|
-
[AdmonitionType.CAUTION]: { variant: 'warning', customIcon:
|
|
1408
|
+
[AdmonitionType.CAUTION]: { variant: 'warning', customIcon: jsx(FireIcon, {}) },
|
|
1428
1409
|
[AdmonitionType.WARNING]: { variant: 'warning' },
|
|
1429
1410
|
};
|
|
1430
1411
|
const useAdmonitionShowdownExtension = () =>
|
|
1431
1412
|
// const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
|
|
1432
|
-
|
|
1413
|
+
useMemo(() => ({
|
|
1433
1414
|
type: 'lang',
|
|
1434
1415
|
regex: /\[(.+)]{{(admonition) ([\w-]+)}}/g,
|
|
1435
1416
|
replace: (text, content, admonitionLabel, admonitionType, groupId) => {
|
|
@@ -1438,39 +1419,35 @@ React.useMemo(() => ({
|
|
|
1438
1419
|
}
|
|
1439
1420
|
admonitionType = admonitionType.toUpperCase();
|
|
1440
1421
|
const { variant, customIcon } = admonitionToAlertVariantMap[admonitionType];
|
|
1441
|
-
const mdContent =
|
|
1442
|
-
const pfAlert = (
|
|
1422
|
+
const mdContent = jsx(QuickStartMarkdownView, { content: content });
|
|
1423
|
+
const pfAlert = (jsx(Alert, Object.assign({ variant: variant }, (customIcon && { customIcon }), { isInline: true, title: admonitionType, className: "pfext-markdown-admonition" }, { children: mdContent })));
|
|
1443
1424
|
return removeTemplateWhitespace(renderToStaticMarkup(pfAlert));
|
|
1444
1425
|
},
|
|
1445
1426
|
}), []);
|
|
1446
1427
|
|
|
1447
|
-
const useCodeShowdownExtension = () =>
|
|
1428
|
+
const useCodeShowdownExtension = () => useMemo(() => ({
|
|
1448
1429
|
type: 'output',
|
|
1449
1430
|
regex: /<pre><code>(.*?)\n?<\/code><\/pre>/g,
|
|
1450
1431
|
replace: (text, content) => {
|
|
1451
1432
|
if (!content) {
|
|
1452
1433
|
return text;
|
|
1453
1434
|
}
|
|
1454
|
-
const pfCodeBlock =
|
|
1435
|
+
const pfCodeBlock = jsx(CodeBlock, { children: content });
|
|
1455
1436
|
return removeTemplateWhitespace(renderToStaticMarkup(pfCodeBlock));
|
|
1456
1437
|
},
|
|
1457
1438
|
}), []);
|
|
1458
1439
|
|
|
1459
|
-
const useAccordionShowdownExtension = () =>
|
|
1440
|
+
const useAccordionShowdownExtension = () => useMemo(() => ({
|
|
1460
1441
|
type: 'lang',
|
|
1461
1442
|
regex: /\[(.+)]{{(accordion) ("(.*?)")}}/g,
|
|
1462
1443
|
replace: (_text, accordionContent, _command, accordionHeading) => {
|
|
1463
1444
|
const accordionId = String(accordionHeading).replace(/\s/g, '-');
|
|
1464
|
-
return removeTemplateWhitespace(renderToStaticMarkup(
|
|
1465
|
-
React.createElement(Accordion, { asDefinitionList: true },
|
|
1466
|
-
React.createElement(AccordionItem, { isExpanded: false },
|
|
1467
|
-
React.createElement(AccordionToggle, { id: `${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}` }, accordionHeading),
|
|
1468
|
-
React.createElement(AccordionContent, { id: `${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}` }, accordionContent))))));
|
|
1445
|
+
return removeTemplateWhitespace(renderToStaticMarkup(jsx(Fragment$1, { children: jsx(Accordion, Object.assign({ asDefinitionList: true }, { children: jsxs(AccordionItem, Object.assign({ isExpanded: false }, { children: [jsx(AccordionToggle, Object.assign({ id: `${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}` }, { children: accordionHeading })), jsx(AccordionContent, Object.assign({ id: `${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}` }, { children: accordionContent }))] })) })) })));
|
|
1469
1446
|
},
|
|
1470
1447
|
}), []);
|
|
1471
1448
|
|
|
1472
1449
|
const AccordionShowdownHandler = ({ buttonElement, contentElement, }) => {
|
|
1473
|
-
const [expanded, setExpanded] =
|
|
1450
|
+
const [expanded, setExpanded] = useState(false);
|
|
1474
1451
|
const handleClick = () => {
|
|
1475
1452
|
const expandedModifier = 'pf-m-expanded';
|
|
1476
1453
|
buttonElement.className = `pf-v6-c-accordion__toggle ${!expanded ? expandedModifier : ''}`;
|
|
@@ -1479,127 +1456,102 @@ const AccordionShowdownHandler = ({ buttonElement, contentElement, }) => {
|
|
|
1479
1456
|
setExpanded(!expanded);
|
|
1480
1457
|
};
|
|
1481
1458
|
useEventListener(buttonElement, 'click', handleClick);
|
|
1482
|
-
return
|
|
1459
|
+
return jsx(Fragment$1, {});
|
|
1483
1460
|
};
|
|
1484
1461
|
const AccordionRenderExtension = ({ docContext }) => {
|
|
1485
1462
|
const buttonElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_BUTTON_ID}]`);
|
|
1486
1463
|
const contentElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_CONTENT_ID}]`);
|
|
1487
|
-
return buttonElements.length > 0 ? (
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1464
|
+
return buttonElements.length > 0 ? (jsx(Fragment$1, { children: Array.from(buttonElements).map((elm) => {
|
|
1465
|
+
const content = Array.from(contentElements).find((elm2) => {
|
|
1466
|
+
const elmId = elm.id.split(ACCORDION_MARKDOWN_BUTTON_ID)[1];
|
|
1467
|
+
const elm2Id = elm2.id.split(ACCORDION_MARKDOWN_CONTENT_ID)[1];
|
|
1468
|
+
return elmId === elm2Id;
|
|
1469
|
+
});
|
|
1470
|
+
return (jsx(AccordionShowdownHandler, { buttonElement: elm, contentElement: content }, elm.id.split(ACCORDION_MARKDOWN_BUTTON_ID)[1]));
|
|
1471
|
+
}) })) : null;
|
|
1495
1472
|
};
|
|
1496
1473
|
|
|
1497
1474
|
const FallbackImg = ({ src, alt, className, fallback }) => {
|
|
1498
|
-
const [isSrcValid, setIsSrcValid] =
|
|
1475
|
+
const [isSrcValid, setIsSrcValid] = useState(true);
|
|
1499
1476
|
if (src && isSrcValid) {
|
|
1500
|
-
return
|
|
1477
|
+
return jsx("img", { className: className, src: src, alt: alt, onError: () => setIsSrcValid(false) });
|
|
1501
1478
|
}
|
|
1502
|
-
return
|
|
1479
|
+
return jsx(Fragment$1, { children: fallback });
|
|
1503
1480
|
};
|
|
1504
1481
|
|
|
1505
1482
|
const DASH = '-';
|
|
1506
1483
|
|
|
1507
|
-
const PopoverStatus = ({ hideHeader, children, isVisible = null, statusBody, title, onHide, onShow, }) => (
|
|
1508
|
-
React.createElement(Button, { variant: "link", isInline: true }, statusBody)));
|
|
1484
|
+
const PopoverStatus = ({ hideHeader, children, isVisible = null, statusBody, title, onHide, onShow, }) => (jsx(Popover, Object.assign({ position: PopoverPosition.right, headerContent: hideHeader ? null : title, bodyContent: children, "aria-label": title, onHide: onHide, onShow: onShow, isVisible: isVisible }, { children: jsx(Button, Object.assign({ variant: "link", isInline: true }, { children: statusBody })) })));
|
|
1509
1485
|
|
|
1510
1486
|
const StatusIconAndText = ({ icon, title, spin, iconOnly, noTooltip, className, }) => {
|
|
1511
1487
|
if (!title) {
|
|
1512
|
-
return
|
|
1488
|
+
return jsx(Fragment$1, { children: DASH });
|
|
1513
1489
|
}
|
|
1514
|
-
return (
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
}),
|
|
1519
|
-
!iconOnly && React.createElement(CamelCaseWrap, { value: title, dataTest: "status-text" })));
|
|
1490
|
+
return (jsxs("span", Object.assign({ className: css('pfext-icon-and-text', className), title: iconOnly && !noTooltip ? title : undefined }, { children: [icon &&
|
|
1491
|
+
cloneElement(icon, {
|
|
1492
|
+
className: css(spin && 'fa-spin', icon.props.className, !iconOnly && 'pfext-icon-and-text__icon pfext-icon-flex-child'),
|
|
1493
|
+
}), !iconOnly && jsx(CamelCaseWrap, { value: title, dataTest: "status-text" })] })));
|
|
1520
1494
|
};
|
|
1521
1495
|
|
|
1522
1496
|
const GenericStatus = (props) => {
|
|
1523
1497
|
const { Icon, children, popoverTitle, title, noTooltip, iconOnly } = props, restProps = __rest(props, ["Icon", "children", "popoverTitle", "title", "noTooltip", "iconOnly"]);
|
|
1524
|
-
const renderIcon = iconOnly && !noTooltip ?
|
|
1525
|
-
const statusBody = (
|
|
1526
|
-
return
|
|
1498
|
+
const renderIcon = iconOnly && !noTooltip ? jsx(Icon, { title: title }) : jsx(Icon, {});
|
|
1499
|
+
const statusBody = (jsx(StatusIconAndText, Object.assign({}, restProps, { noTooltip: noTooltip, title: title, iconOnly: iconOnly, icon: renderIcon })));
|
|
1500
|
+
return Children.toArray(children).length ? (jsx(PopoverStatus, Object.assign({ title: popoverTitle || title }, restProps, { statusBody: statusBody }, { children: children }))) : (statusBody);
|
|
1527
1501
|
};
|
|
1528
1502
|
|
|
1529
|
-
const GreenCheckCircleIcon = ({ className, title, size }) => (
|
|
1530
|
-
React.createElement(CheckCircleIcon, { "data-test": "success-icon", className: className, title: title })));
|
|
1503
|
+
const GreenCheckCircleIcon = ({ className, title, size }) => (jsx(Icon, Object.assign({ size: size, status: "success" }, { children: jsx(CheckCircleIcon, { "data-test": "success-icon", className: className, title: title }) })));
|
|
1531
1504
|
|
|
1532
|
-
const SuccessStatus = (props) => (
|
|
1505
|
+
const SuccessStatus = (props) => (jsx(GenericStatus, Object.assign({}, props, { Icon: GreenCheckCircleIcon, title: props.title || 'Healthy' })));
|
|
1533
1506
|
SuccessStatus.displayName = 'SuccessStatus';
|
|
1534
1507
|
|
|
1535
|
-
const Status = ({ status, title, iconOnly, noTooltip, className
|
|
1508
|
+
const Status = ({ status, title, iconOnly, noTooltip, className }) => {
|
|
1536
1509
|
const statusProps = { title: title || status, iconOnly, noTooltip, className };
|
|
1537
1510
|
switch (status) {
|
|
1538
1511
|
case 'In Progress':
|
|
1539
|
-
return
|
|
1512
|
+
return jsx(StatusIconAndText, Object.assign({}, statusProps, { icon: jsx(SyncAltIcon, {}) }));
|
|
1540
1513
|
case 'Complete':
|
|
1541
|
-
return
|
|
1514
|
+
return jsx(SuccessStatus, Object.assign({}, statusProps));
|
|
1542
1515
|
default:
|
|
1543
|
-
return
|
|
1516
|
+
return jsx(Fragment$1, { children: status || DASH });
|
|
1544
1517
|
}
|
|
1545
1518
|
};
|
|
1546
|
-
const StatusIcon = ({ status }) => (
|
|
1519
|
+
const StatusIcon = ({ status }) => jsx(Status, { status: status, iconOnly: true });
|
|
1547
1520
|
|
|
1548
1521
|
const QuickStartTileDescription = ({ description, prerequisites, }) => {
|
|
1549
|
-
const { getResource } =
|
|
1522
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1550
1523
|
const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
|
|
1551
|
-
const buttonRef =
|
|
1552
|
-
return (
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
React.createElement(Button, { variant: "link", isInline: true, "data-testid": "qs-card-prereqs", ref: buttonRef, onClick: (e) => {
|
|
1559
|
-
e.preventDefault();
|
|
1560
|
-
e.stopPropagation();
|
|
1561
|
-
}, "aria-label": getResource('Show prerequisites') },
|
|
1562
|
-
React.createElement(InfoCircleIcon, null)),
|
|
1563
|
-
React.createElement(Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), triggerRef: buttonRef, bodyContent: React.createElement("div", null,
|
|
1564
|
-
React.createElement("ul", { "aria-label": getResource('Prerequisites') }, prereqs.map((prerequisite, index) => (
|
|
1565
|
-
// eslint-disable-next-line react/no-array-index-key
|
|
1566
|
-
React.createElement("li", { key: index },
|
|
1567
|
-
React.createElement(QuickStartMarkdownView, { content: prerequisite })))))) })))));
|
|
1524
|
+
const buttonRef = useRef(null);
|
|
1525
|
+
return (jsxs(Fragment$1, { children: [jsx(QuickStartMarkdownView, { content: description }), (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (jsxs(Flex, Object.assign({ spaceItems: { default: 'spaceItemsSm' } }, { children: [jsxs("h5", { children: [getResource('Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), ' '] }), jsx(Button, Object.assign({ variant: "link", isInline: true, "data-testid": "qs-card-prereqs", ref: buttonRef, onClick: (e) => {
|
|
1526
|
+
e.preventDefault();
|
|
1527
|
+
e.stopPropagation();
|
|
1528
|
+
}, "aria-label": getResource('Show prerequisites') }, { children: jsx(InfoCircleIcon, {}) })), jsx(Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), triggerRef: buttonRef, bodyContent: jsx("div", { children: jsx("ul", Object.assign({ "aria-label": getResource('Prerequisites') }, { children: prereqs.map((prerequisite, index) => (
|
|
1529
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
1530
|
+
jsx("li", { children: jsx(QuickStartMarkdownView, { content: prerequisite }) }, index))) })) }) })] })))] }));
|
|
1568
1531
|
};
|
|
1569
1532
|
|
|
1570
1533
|
const QuickStartTileFooter = ({ quickStartId, status, totalTasks, onClickContinue, }) => {
|
|
1571
|
-
const { getResource } =
|
|
1572
|
-
const { activeQuickStartID, startQuickStart, restartQuickStart } =
|
|
1573
|
-
const start =
|
|
1534
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1535
|
+
const { activeQuickStartID, startQuickStart, restartQuickStart } = useContext(QuickStartContext);
|
|
1536
|
+
const start = useCallback(() => {
|
|
1574
1537
|
startQuickStart(quickStartId, totalTasks);
|
|
1575
1538
|
}, [quickStartId, startQuickStart, totalTasks]);
|
|
1576
|
-
const restart =
|
|
1539
|
+
const restart = useCallback(() => {
|
|
1577
1540
|
restartQuickStart(quickStartId, totalTasks);
|
|
1578
1541
|
}, [quickStartId, restartQuickStart, totalTasks]);
|
|
1579
|
-
return (
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
React.createElement(Button, { variant: "link", onClick: onClickContinue, isInline: true, "data-testid": "qs-card-inProgress-resume", id: `${quickStartId}-continue`, "aria-labelledby": `${quickStartId}-continue ${quickStartId}` }, getResource('Continue')))),
|
|
1584
|
-
status === QuickStartStatus.COMPLETE && (React.createElement(FlexItem, null,
|
|
1585
|
-
React.createElement(Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-complete-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart')))),
|
|
1586
|
-
status === QuickStartStatus.IN_PROGRESS && (React.createElement(FlexItem, null,
|
|
1587
|
-
React.createElement(Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-inProgress-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart'))))));
|
|
1588
|
-
};
|
|
1589
|
-
|
|
1590
|
-
const QuickStartTileFooterExternal = ({ link, quickStartId, }) => {
|
|
1542
|
+
return (jsxs(Flex, Object.assign({ justifyContent: { default: 'justifyContentSpaceBetween' } }, { children: [status === QuickStartStatus.NOT_STARTED && (jsx(FlexItem, { children: jsx(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 === QuickStartStatus.IN_PROGRESS && activeQuickStartID !== quickStartId && (jsx(FlexItem, { children: jsx(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 === QuickStartStatus.COMPLETE && (jsx(FlexItem, { children: jsx(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 === QuickStartStatus.IN_PROGRESS && (jsx(FlexItem, { children: jsx(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') })) }))] })));
|
|
1543
|
+
};
|
|
1544
|
+
|
|
1545
|
+
const QuickStartTileFooterExternal = ({ link, quickStartId }) => {
|
|
1591
1546
|
const { href, text } = link;
|
|
1592
|
-
return (
|
|
1593
|
-
React.createElement(FlexItem, null,
|
|
1594
|
-
React.createElement(Button, { component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: React.createElement(ExternalLinkAltIcon, null), iconPosition: "right", id: quickStartId, "aria-labelledby": `${quickStartId}-external ${quickStartId}` }, text || href))));
|
|
1547
|
+
return (jsx(Flex, Object.assign({ justifyContent: { default: 'justifyContentSpaceBetween' } }, { children: jsx(FlexItem, { children: jsx(Button, Object.assign({ component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: jsx(ExternalLinkAltIcon, {}), iconPosition: "right", id: quickStartId, "aria-labelledby": `${quickStartId}-external ${quickStartId}` }, { children: text || href })) }) })));
|
|
1595
1548
|
};
|
|
1596
1549
|
|
|
1597
|
-
const QuickStartTileHeader = ({ name, quickStartId, onSelect
|
|
1598
|
-
React.createElement(Button, { "data-test": "title", id: quickStartId, variant: "link", isInline: true, onClick: onSelect }, name)));
|
|
1550
|
+
const QuickStartTileHeader = ({ name, quickStartId, onSelect }) => (jsx(Flex, Object.assign({ flexWrap: { default: 'nowrap' } }, { children: jsx(Button, Object.assign({ "data-test": "title", id: quickStartId, variant: "link", isInline: true, onClick: onSelect }, { children: name })) })));
|
|
1599
1551
|
|
|
1600
1552
|
const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, action, }) => {
|
|
1601
1553
|
const { metadata: { name: id }, spec: { icon, tasks, displayName, description, durationMinutes, prerequisites, link, type }, } = quickStart;
|
|
1602
|
-
const { setActiveQuickStart, footer, getResource } =
|
|
1554
|
+
const { setActiveQuickStart, footer, getResource } = useContext(QuickStartContext);
|
|
1603
1555
|
const statusColorMap = {
|
|
1604
1556
|
[QuickStartStatus.COMPLETE]: 'green',
|
|
1605
1557
|
[QuickStartStatus.IN_PROGRESS]: 'purple',
|
|
@@ -1612,11 +1564,10 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, act
|
|
|
1612
1564
|
};
|
|
1613
1565
|
let quickStartIcon;
|
|
1614
1566
|
if (typeof icon === 'object') {
|
|
1615
|
-
quickStartIcon =
|
|
1567
|
+
quickStartIcon = jsx(Icon, Object.assign({ size: "2xl" }, { children: icon }));
|
|
1616
1568
|
}
|
|
1617
1569
|
else {
|
|
1618
|
-
quickStartIcon = (
|
|
1619
|
-
React.createElement(FallbackImg, { src: icon, alt: "", className: "pfext-catalog-item-icon__img", fallback: React.createElement(RocketIcon, null) })));
|
|
1570
|
+
quickStartIcon = (jsx(Icon, Object.assign({ size: "2xl" }, { children: jsx(FallbackImg, { src: icon, alt: "", className: "pfext-catalog-item-icon__img", fallback: jsx(RocketIcon, {}) }) })));
|
|
1620
1571
|
}
|
|
1621
1572
|
const onSelect = () => {
|
|
1622
1573
|
if (!link) {
|
|
@@ -1627,70 +1578,53 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, act
|
|
|
1627
1578
|
}
|
|
1628
1579
|
onClick();
|
|
1629
1580
|
};
|
|
1630
|
-
const footerComponent =
|
|
1581
|
+
const footerComponent = useMemo(() => {
|
|
1631
1582
|
if (footer && footer.show === false) {
|
|
1632
1583
|
return null;
|
|
1633
1584
|
}
|
|
1634
1585
|
if (link) {
|
|
1635
|
-
return
|
|
1586
|
+
return jsx(QuickStartTileFooterExternal, { link: link, quickStartId: id });
|
|
1636
1587
|
}
|
|
1637
|
-
return (
|
|
1588
|
+
return (jsx(QuickStartTileFooter, { quickStartId: id, status: status, totalTasks: tasks === null || tasks === void 0 ? void 0 : tasks.length, onClickContinue: onSelect }));
|
|
1638
1589
|
}, [footer, id, link, status, tasks === null || tasks === void 0 ? void 0 : tasks.length]);
|
|
1639
1590
|
const ActionIcon = (action === null || action === void 0 ? void 0 : action.icon) || OutlinedBookmarkIcon;
|
|
1640
|
-
const additionalAction = action ? (
|
|
1641
|
-
return (
|
|
1591
|
+
const additionalAction = action ? (jsx(Button, Object.assign({ "aria-label": action['aria-label'], icon: jsx(ActionIcon, {}), variant: "plain", onClick: action.onClick }, action.buttonProps))) : undefined;
|
|
1592
|
+
return (jsxs(Card, Object.assign({ id: `${id}-catalog-tile`, style: { height: '100%' }, "data-testid": `qs-card-${camelize(displayName)}`, className: "pfext-catalog-item" }, (isActive && {
|
|
1642
1593
|
isClickable: true,
|
|
1643
1594
|
isSelectable: true,
|
|
1644
1595
|
isSelected: true,
|
|
1645
1596
|
isClicked: true,
|
|
1646
|
-
})
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
})), quickStartIcon),
|
|
1650
|
-
React.createElement(CardTitle, null,
|
|
1651
|
-
React.createElement(QuickStartTileHeader, { name: displayName, onSelect: onSelect, quickStartId: id })),
|
|
1652
|
-
React.createElement(CardBody, null,
|
|
1653
|
-
React.createElement(Stack, { hasGutter: true },
|
|
1654
|
-
React.createElement(Flex, { spaceItems: { default: 'spaceItemsSm' } },
|
|
1655
|
-
type && React.createElement(Label, { color: type.color }, type.text),
|
|
1656
|
-
durationMinutes && (React.createElement(Label, { variant: "outline", "data-test": "duration", icon: React.createElement(OutlinedClockIcon, null) }, getResource('{{duration, number}} minutes', durationMinutes).replace('{{duration, number}}', durationMinutes))),
|
|
1657
|
-
status !== QuickStartStatus.NOT_STARTED && (React.createElement(Label, { variant: "outline", color: statusColorMap[status], icon: React.createElement(StatusIcon, { status: status }), "data-test": "status" }, statusLocaleMap[status]))),
|
|
1658
|
-
React.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }))),
|
|
1659
|
-
React.createElement(CardFooter, null, footerComponent)));
|
|
1597
|
+
}), { children: [jsx(CardHeader, Object.assign({}, (action && {
|
|
1598
|
+
actions: { actions: additionalAction },
|
|
1599
|
+
}), { children: quickStartIcon })), jsx(CardTitle, { children: jsx(QuickStartTileHeader, { name: displayName, onSelect: onSelect, quickStartId: id }) }), jsx(CardBody, { children: jsxs(Stack, Object.assign({ hasGutter: true }, { children: [jsxs(Flex, Object.assign({ spaceItems: { default: 'spaceItemsSm' } }, { children: [type && jsx(Label, Object.assign({ color: type.color }, { children: type.text })), durationMinutes && (jsx(Label, Object.assign({ variant: "outline", "data-test": "duration", icon: jsx(OutlinedClockIcon, {}) }, { children: getResource('{{duration, number}} minutes', durationMinutes).replace('{{duration, number}}', durationMinutes) }))), status !== QuickStartStatus.NOT_STARTED && (jsx(Label, Object.assign({ variant: "outline", color: statusColorMap[status], icon: jsx(StatusIcon, { status: status }), "data-test": "status" }, { children: statusLocaleMap[status] })))] })), jsx(QuickStartTileDescription, { description: description, prerequisites: prerequisites })] })) }), jsx(CardFooter, { children: footerComponent })] })));
|
|
1660
1600
|
};
|
|
1661
1601
|
|
|
1662
1602
|
const QuickStartCatalog = ({ quickStarts }) => {
|
|
1663
|
-
const { activeQuickStartID, allQuickStartStates } =
|
|
1664
|
-
return (
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
}))));
|
|
1603
|
+
const { activeQuickStartID, allQuickStartStates } = useContext(QuickStartContext);
|
|
1604
|
+
return (jsx("div", { children: jsx(Gallery, Object.assign({ hasGutter: true, className: "pfext-quick-start-catalog__gallery" }, { children: quickStarts.map((quickStart, index) => {
|
|
1605
|
+
const { metadata: { name: id }, } = quickStart;
|
|
1606
|
+
return (jsx(QuickStartTile, { quickStart: quickStart, isActive: id === activeQuickStartID, status: getQuickStartStatus(allQuickStartStates, id) }, index));
|
|
1607
|
+
}) })) }));
|
|
1669
1608
|
};
|
|
1670
1609
|
|
|
1671
1610
|
const QuickStartCatalogFilterSearch = (_a) => {
|
|
1672
1611
|
var { searchInputText, handleTextChange } = _a, props = __rest(_a, ["searchInputText", "handleTextChange"]);
|
|
1673
|
-
const { getResource } =
|
|
1674
|
-
return (
|
|
1675
|
-
React.createElement(SearchInput, Object.assign({ placeholder: getResource('Filter by keyword...'), value: searchInputText, onChange: (_ev, value) => handleTextChange(value), onClear: () => handleTextChange('') }, props))));
|
|
1612
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1613
|
+
return (jsx(ToolbarItem, { children: jsx(SearchInput, Object.assign({ placeholder: getResource('Filter by keyword...'), value: searchInputText, onChange: (_ev, value) => handleTextChange(value), onClear: () => handleTextChange('') }, props)) }));
|
|
1676
1614
|
};
|
|
1677
1615
|
const QuickStartCatalogFilterSelect = (_a) => {
|
|
1678
1616
|
var { isDropdownOpen, setIsDropdownOpen, onRowfilterSelect, selectedFilters, dropdownItems } = _a, props = __rest(_a, ["isDropdownOpen", "setIsDropdownOpen", "onRowfilterSelect", "selectedFilters", "dropdownItems"]);
|
|
1679
|
-
const { getResource } =
|
|
1680
|
-
const toggle = (toggleRef) => (
|
|
1681
|
-
|
|
1682
|
-
selectedFilters.length > 0 && React.createElement(Badge, { isRead: true }, selectedFilters.length)));
|
|
1683
|
-
return (React.createElement(ToolbarItem, null,
|
|
1684
|
-
React.createElement(Select, Object.assign({ "aria-label": getResource('Select filter'), isOpen: isDropdownOpen, selected: selectedFilters, onSelect: onRowfilterSelect, onOpenChange: (isOpen) => setIsDropdownOpen(isOpen), toggle: toggle }, props),
|
|
1685
|
-
React.createElement(SelectList, null, dropdownItems))));
|
|
1617
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1618
|
+
const toggle = (toggleRef) => (jsxs(MenuToggle, Object.assign({ isFullWidth: true, ref: toggleRef, onClick: () => setIsDropdownOpen(!isDropdownOpen), isExpanded: isDropdownOpen }, { children: [getResource('Status'), selectedFilters.length > 0 && jsx(Badge, Object.assign({ isRead: true }, { children: selectedFilters.length }))] })));
|
|
1619
|
+
return (jsx(ToolbarItem, { children: jsx(Select, Object.assign({ "aria-label": getResource('Select filter'), isOpen: isDropdownOpen, selected: selectedFilters, onSelect: onRowfilterSelect, onOpenChange: (isOpen) => setIsDropdownOpen(isOpen), toggle: toggle }, props, { children: jsx(SelectList, { children: dropdownItems }) })) }));
|
|
1686
1620
|
};
|
|
1687
1621
|
const QuickStartCatalogFilterCount = ({ quickStartsCount }) => {
|
|
1688
|
-
const { getResource } =
|
|
1689
|
-
return (
|
|
1622
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1623
|
+
return (jsx(ToolbarItem, Object.assign({ align: { default: 'alignEnd' } }, { children: getResource('{{count, number}} item', quickStartsCount).replace('{{count, number}}', quickStartsCount) })));
|
|
1690
1624
|
};
|
|
1691
1625
|
const QuickStartCatalogFilterSearchWrapper = ({ onSearchInputChange = () => { } }) => {
|
|
1692
|
-
const { useQueryParams, filter, setFilter } =
|
|
1693
|
-
|
|
1626
|
+
const { useQueryParams, filter, setFilter } = useContext(QuickStartContext);
|
|
1627
|
+
useEffect(() => {
|
|
1694
1628
|
// use this effect to clear the search when a `clear all` action is performed higher up
|
|
1695
1629
|
const unlisten = history.listen(({ location }) => {
|
|
1696
1630
|
const searchParams = new URLSearchParams(location.search);
|
|
@@ -1716,7 +1650,7 @@ const QuickStartCatalogFilterSearchWrapper = ({ onSearchInputChange = () => { }
|
|
|
1716
1650
|
}
|
|
1717
1651
|
onSearchInputChange(val);
|
|
1718
1652
|
};
|
|
1719
|
-
return (
|
|
1653
|
+
return (jsx(QuickStartCatalogFilterSearch, { searchInputText: filter === null || filter === void 0 ? void 0 : filter.keyword, handleTextChange: handleTextChange }));
|
|
1720
1654
|
};
|
|
1721
1655
|
// compare string/number arrays
|
|
1722
1656
|
const equalsIgnoreOrder = (a, b) => {
|
|
@@ -1734,8 +1668,8 @@ const equalsIgnoreOrder = (a, b) => {
|
|
|
1734
1668
|
return true;
|
|
1735
1669
|
};
|
|
1736
1670
|
const QuickStartCatalogFilterStatusWrapper = ({ onStatusChange = () => { } }) => {
|
|
1737
|
-
const { useQueryParams, filter, setFilter } =
|
|
1738
|
-
|
|
1671
|
+
const { useQueryParams, filter, setFilter } = useContext(QuickStartContext);
|
|
1672
|
+
useEffect(() => {
|
|
1739
1673
|
// use this effect to clear the status when a `clear all` action is performed higher up
|
|
1740
1674
|
const unlisten = history.listen(({ location }) => {
|
|
1741
1675
|
var _a;
|
|
@@ -1750,8 +1684,8 @@ const QuickStartCatalogFilterStatusWrapper = ({ onStatusChange = () => { } }) =>
|
|
|
1750
1684
|
unlisten();
|
|
1751
1685
|
};
|
|
1752
1686
|
});
|
|
1753
|
-
const [isDropdownOpen, setIsDropdownOpen] =
|
|
1754
|
-
const onRowfilterSelect =
|
|
1687
|
+
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
|
1688
|
+
const onRowfilterSelect = useCallback((_e, selectedValue) => {
|
|
1755
1689
|
setIsDropdownOpen(false);
|
|
1756
1690
|
const selection = Object.entries(filter.status.statusTypes).find(([_key, value]) => value === selectedValue)[0];
|
|
1757
1691
|
const selectedFiltersList = filter.status.statusFilters.includes(selection)
|
|
@@ -1768,33 +1702,24 @@ const QuickStartCatalogFilterStatusWrapper = ({ onStatusChange = () => { } }) =>
|
|
|
1768
1702
|
}
|
|
1769
1703
|
onStatusChange(selectedFiltersList);
|
|
1770
1704
|
}, [filter.status.statusFilters, onStatusChange, setFilter, useQueryParams]);
|
|
1771
|
-
const dropdownItems = Object.entries(filter.status.statusTypes).map(([key, value]) => (
|
|
1772
|
-
|
|
1773
|
-
return (React.createElement(QuickStartCatalogFilterSelect, { isDropdownOpen: isDropdownOpen, setIsDropdownOpen: setIsDropdownOpen, onRowfilterSelect: onRowfilterSelect, selectedFilters: filter.status.statusFilters, dropdownItems: dropdownItems }));
|
|
1705
|
+
const dropdownItems = Object.entries(filter.status.statusTypes).map(([key, value]) => (jsx(SelectOption, Object.assign({ "data-key": key, value: value, hasCheckbox: true, isSelected: filter.status.statusFilters.includes(key) }, { children: jsx(Fragment$1, { children: value }) }), key)));
|
|
1706
|
+
return (jsx(QuickStartCatalogFilterSelect, { isDropdownOpen: isDropdownOpen, setIsDropdownOpen: setIsDropdownOpen, onRowfilterSelect: onRowfilterSelect, selectedFilters: filter.status.statusFilters, dropdownItems: dropdownItems }));
|
|
1774
1707
|
};
|
|
1775
|
-
const QuickStartCatalogFilterCountWrapper = ({ quickStartsCount }) =>
|
|
1708
|
+
const QuickStartCatalogFilterCountWrapper = ({ quickStartsCount, }) => jsx(QuickStartCatalogFilterCount, { quickStartsCount: quickStartsCount });
|
|
1776
1709
|
|
|
1777
1710
|
const QuickStartCatalogFilter = (_a) => {
|
|
1778
1711
|
var { quickStartsCount, onSearchInputChange = () => { }, onStatusChange = () => { } } = _a, props = __rest(_a, ["quickStartsCount", "onSearchInputChange", "onStatusChange"]);
|
|
1779
|
-
return (
|
|
1780
|
-
React.createElement(ToolbarContent, null,
|
|
1781
|
-
React.createElement(QuickStartCatalogFilterSearchWrapper, { onSearchInputChange: onSearchInputChange }),
|
|
1782
|
-
React.createElement(QuickStartCatalogFilterStatusWrapper, { onStatusChange: onStatusChange }),
|
|
1783
|
-
React.createElement(QuickStartCatalogFilterCountWrapper, { quickStartsCount: quickStartsCount }))));
|
|
1712
|
+
return (jsx(Toolbar, Object.assign({}, props, { children: jsxs(ToolbarContent, { children: [jsx(QuickStartCatalogFilterSearchWrapper, { onSearchInputChange: onSearchInputChange }), jsx(QuickStartCatalogFilterStatusWrapper, { onStatusChange: onStatusChange }), jsx(QuickStartCatalogFilterCountWrapper, { quickStartsCount: quickStartsCount })] }) })));
|
|
1784
1713
|
};
|
|
1785
1714
|
|
|
1786
1715
|
const QuickStartCatalogEmptyState = ({ clearFilters }) => {
|
|
1787
|
-
const { getResource } =
|
|
1788
|
-
return (
|
|
1789
|
-
React.createElement(EmptyStateBody, null, getResource('No results match the filter criteria. Remove filters or clear all filters to show results.')),
|
|
1790
|
-
React.createElement(EmptyStateFooter, null,
|
|
1791
|
-
React.createElement(EmptyStateActions, null,
|
|
1792
|
-
React.createElement(Button, { variant: "link", onClick: clearFilters, "data-test": "clear-filter button" }, getResource('Clear all filters'))))));
|
|
1716
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1717
|
+
return (jsxs(EmptyState, Object.assign({ headingLevel: "h4", icon: SearchIcon, titleText: jsx(Fragment$1, { children: getResource('No results found') }) }, { children: [jsx(EmptyStateBody, { children: getResource('No results match the filter criteria. Remove filters or clear all filters to show results.') }), jsx(EmptyStateFooter, { children: jsx(EmptyStateActions, { children: jsx(Button, Object.assign({ variant: "link", onClick: clearFilters, "data-test": "clear-filter button" }, { children: getResource('Clear all filters') })) }) })] })));
|
|
1793
1718
|
};
|
|
1794
1719
|
const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) => q1.spec.displayName.localeCompare(q2.spec.displayName), title, hint, showTitle = true, }) => {
|
|
1795
|
-
const sortFncCallback =
|
|
1796
|
-
const { allQuickStarts = [], setAllQuickStarts, allQuickStartStates, getResource, filter, setFilter, loading, } =
|
|
1797
|
-
|
|
1720
|
+
const sortFncCallback = useCallback(sortFnc, [sortFnc]);
|
|
1721
|
+
const { allQuickStarts = [], setAllQuickStarts, allQuickStartStates, getResource, filter, setFilter, loading, } = useContext(QuickStartContext);
|
|
1722
|
+
useEffect(() => {
|
|
1798
1723
|
// passed through prop, not context
|
|
1799
1724
|
if (quickStarts && JSON.stringify(quickStarts) !== JSON.stringify(allQuickStarts)) {
|
|
1800
1725
|
setAllQuickStarts(quickStarts);
|
|
@@ -1803,8 +1728,8 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
|
|
|
1803
1728
|
const initialFilteredQuickStarts = showFilter
|
|
1804
1729
|
? filterQuickStarts(allQuickStarts, filter.keyword, filter.status.statusFilters, allQuickStartStates).sort(sortFncCallback)
|
|
1805
1730
|
: allQuickStarts;
|
|
1806
|
-
const [filteredQuickStarts, setFilteredQuickStarts] =
|
|
1807
|
-
|
|
1731
|
+
const [filteredQuickStarts, setFilteredQuickStarts] = useState(initialFilteredQuickStarts);
|
|
1732
|
+
useEffect(() => {
|
|
1808
1733
|
const filteredQs = showFilter
|
|
1809
1734
|
? filterQuickStarts(allQuickStarts, filter.keyword, filter.status.statusFilters, allQuickStartStates).sort(sortFncCallback)
|
|
1810
1735
|
: allQuickStarts;
|
|
@@ -1847,59 +1772,37 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
|
|
|
1847
1772
|
}
|
|
1848
1773
|
};
|
|
1849
1774
|
if (loading) {
|
|
1850
|
-
return
|
|
1775
|
+
return jsx(LoadingBox, {});
|
|
1851
1776
|
}
|
|
1852
1777
|
if (!allQuickStarts || allQuickStarts.length === 0) {
|
|
1853
|
-
return
|
|
1778
|
+
return jsx(EmptyBox, { label: getResource('Quick Starts') });
|
|
1854
1779
|
}
|
|
1855
|
-
return (
|
|
1856
|
-
(showTitle || showFilter) && (React.createElement(PageSection, { hasBodyWrapper: false },
|
|
1857
|
-
showTitle && (React.createElement(Content, { isEditorial: true },
|
|
1858
|
-
React.createElement(Title, { headingLevel: "h1", "data-test": "page-title" }, title || getResource('Quick Starts')),
|
|
1859
|
-
hint && React.createElement("div", null, hint))),
|
|
1860
|
-
showTitle && React.createElement(Divider, { component: "div" }),
|
|
1861
|
-
showFilter && (React.createElement(React.Fragment, null,
|
|
1862
|
-
React.createElement(QuickStartCatalogFilter, { quickStartsCount: filteredQuickStarts.length, onSearchInputChange: onSearchInputChange, onStatusChange: onStatusChange }))))),
|
|
1863
|
-
React.createElement(PageSection, { hasBodyWrapper: false }, filteredQuickStarts.length === 0 ? (React.createElement(QuickStartCatalogEmptyState, { clearFilters: clearFilters })) : (React.createElement(QuickStartCatalog, { quickStarts: filteredQuickStarts })))));
|
|
1780
|
+
return (jsxs(Fragment$1, { children: [(showTitle || showFilter) && (jsxs(PageSection, Object.assign({ hasBodyWrapper: false }, { children: [showTitle && (jsxs(Content, Object.assign({ isEditorial: true }, { children: [jsx(Title, Object.assign({ headingLevel: "h1", "data-test": "page-title" }, { children: title || getResource('Quick Starts') })), hint && jsx("div", { children: hint })] }))), showTitle && jsx(Divider, { component: "div" }), showFilter && (jsx(Fragment$1, { children: jsx(QuickStartCatalogFilter, { quickStartsCount: filteredQuickStarts.length, onSearchInputChange: onSearchInputChange, onStatusChange: onStatusChange }) }))] }))), jsx(PageSection, Object.assign({ hasBodyWrapper: false }, { children: filteredQuickStarts.length === 0 ? (jsx(QuickStartCatalogEmptyState, { clearFilters: clearFilters })) : (jsx(QuickStartCatalog, { quickStarts: filteredQuickStarts })) }))] }));
|
|
1864
1781
|
};
|
|
1865
1782
|
|
|
1866
|
-
const QuickStartCatalogHeader = ({ title, hint, }) => (
|
|
1867
|
-
React.createElement(Title, { headingLevel: "h1", "data-pf-content": "true" }, title),
|
|
1868
|
-
hint && React.createElement("div", null, hint)));
|
|
1783
|
+
const QuickStartCatalogHeader = ({ title, hint, }) => (jsxs("div", { children: [jsx(Title, Object.assign({ headingLevel: "h1", "data-pf-content": "true" }, { children: title })), hint && jsx("div", { children: hint })] }));
|
|
1869
1784
|
|
|
1870
|
-
const QuickStartCatalogSection = ({ children }) => (
|
|
1785
|
+
const QuickStartCatalogSection = ({ children }) => (jsx("div", { children: children }));
|
|
1871
1786
|
|
|
1872
|
-
const QuickStartCatalogToolbar = ({ children }) => (
|
|
1787
|
+
const QuickStartCatalogToolbar = ({ children }) => (jsx(Toolbar, { children: children }));
|
|
1873
1788
|
|
|
1874
|
-
const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel
|
|
1875
|
-
const { getResource } =
|
|
1876
|
-
return (
|
|
1877
|
-
React.createElement(FlexItem, { align: { default: 'alignRight' } },
|
|
1878
|
-
React.createElement(Button, { variant: "secondary", "data-test": "cancel button", onClick: onCancel }, getResource('Cancel'))),
|
|
1879
|
-
React.createElement(FlexItem, null,
|
|
1880
|
-
React.createElement(Button, { variant: "primary", "data-test": "leave button", onClick: onConfirm }, getResource('Leave')))), isFullScreen: true }, getResource('Your progress will be saved.')));
|
|
1789
|
+
const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel }) => {
|
|
1790
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1791
|
+
return (jsx(Modal, Object.assign({ isOpen: isOpen, variant: ModalVariant.small, showClose: false, "data-test": "leave-quickstart", title: getResource('Leave quick start?'), footer: jsxs(Flex, { children: [jsx(FlexItem, Object.assign({ align: { default: 'alignRight' } }, { children: jsx(Button, Object.assign({ variant: "secondary", "data-test": "cancel button", onClick: onCancel }, { children: getResource('Cancel') })) })), jsx(FlexItem, { children: jsx(Button, Object.assign({ variant: "primary", "data-test": "leave button", onClick: onConfirm }, { children: getResource('Leave') })) })] }), isFullScreen: true }, { children: getResource('Your progress will be saved.') })));
|
|
1881
1792
|
};
|
|
1882
1793
|
|
|
1883
1794
|
const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, isActiveTask, onTaskSelect, children, }) => {
|
|
1884
|
-
const titleRef =
|
|
1885
|
-
const { focusOnQuickStart } =
|
|
1886
|
-
|
|
1795
|
+
const titleRef = useRef(null);
|
|
1796
|
+
const { focusOnQuickStart } = useContext(QuickStartContext);
|
|
1797
|
+
useEffect(() => {
|
|
1887
1798
|
if (focusOnQuickStart && isActiveTask) {
|
|
1888
1799
|
// Focus the WizardNavItem button element that contains the title
|
|
1889
1800
|
titleRef.current.parentNode.focus();
|
|
1890
1801
|
}
|
|
1891
1802
|
}, [focusOnQuickStart, isActiveTask]);
|
|
1892
1803
|
const failedReview = taskStatus === QuickStartTaskStatus.FAILED;
|
|
1893
|
-
const tryAgain = failedReview && (
|
|
1894
|
-
|
|
1895
|
-
React.createElement("div", { className: "pfext-quick-start-task-header__tryagain" }, "Try the steps again.")));
|
|
1896
|
-
const content = (React.createElement("div", { ref: titleRef },
|
|
1897
|
-
React.createElement(Title, { headingLevel: "h3", size: size },
|
|
1898
|
-
React.createElement("span", { className: "pfext-quick-start-task-header__title" }, title),
|
|
1899
|
-
isActiveTask && subtitle && (React.createElement("span", null,
|
|
1900
|
-
' ',
|
|
1901
|
-
React.createElement("span", { "data-test-id": "quick-start-task-subtitle", className: "pfext-quick-start-task-header__subtitle" }, subtitle))),
|
|
1902
|
-
tryAgain)));
|
|
1804
|
+
const tryAgain = failedReview && (jsxs(Fragment$1, { children: [jsx("div", {}), jsx("div", Object.assign({ className: "pfext-quick-start-task-header__tryagain" }, { children: "Try the steps again." }))] }));
|
|
1805
|
+
const content = (jsx("div", Object.assign({ ref: titleRef }, { children: jsxs(Title, Object.assign({ headingLevel: "h3", size: size }, { children: [jsx("span", Object.assign({ className: "pfext-quick-start-task-header__title" }, { children: title })), isActiveTask && subtitle && (jsxs("span", { children: [' ', jsx("span", Object.assign({ "data-test-id": "quick-start-task-subtitle", className: "pfext-quick-start-task-header__subtitle" }, { children: subtitle }))] })), tryAgain] })) })));
|
|
1903
1806
|
let status = 'default';
|
|
1904
1807
|
if (taskStatus === QuickStartTaskStatus.FAILED) {
|
|
1905
1808
|
status = 'error';
|
|
@@ -1907,42 +1810,31 @@ const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, is
|
|
|
1907
1810
|
else if (taskStatus === QuickStartTaskStatus.SUCCESS) {
|
|
1908
1811
|
status = 'success';
|
|
1909
1812
|
}
|
|
1910
|
-
return (
|
|
1813
|
+
return (jsx(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 })));
|
|
1911
1814
|
};
|
|
1912
1815
|
|
|
1913
|
-
const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => (tasks === null || tasks === void 0 ? void 0 : tasks.length) > 0 ? (
|
|
1816
|
+
const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => (tasks === null || tasks === void 0 ? void 0 : tasks.length) > 0 ? (jsx("ul", Object.assign({ className: "pf-v6-c-wizard pf-v6-c-wizard__nav-list" }, { children: tasks.map((task, index) => (jsx(QuickStartTaskHeader, { title: task.title, taskIndex: index + 1, size: "md", taskStatus: allTaskStatuses[index], onTaskSelect: onTaskSelect }, task.title))) }))) : null;
|
|
1914
1817
|
|
|
1915
1818
|
const QuickStartConclusion = ({ tasks, conclusion, allTaskStatuses, nextQuickStarts, onQuickStartChange, onTaskSelect, }) => {
|
|
1916
1819
|
const hasFailedTask = allTaskStatuses.includes(QuickStartTaskStatus.FAILED);
|
|
1917
|
-
const { getResource } =
|
|
1918
|
-
return (
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
var _a;
|
|
1928
|
-
return (React.createElement(Button, { variant: "link", onClick: () => onQuickStartChange(nextQuickStart.metadata.name), isInline: true, icon: React.createElement(ArrowRightIcon, 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)));
|
|
1929
|
-
})));
|
|
1820
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1821
|
+
return (jsxs(Fragment$1, { children: [jsx(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect }), jsx(QuickStartMarkdownView, { content: hasFailedTask
|
|
1822
|
+
? getResource('One or more verifications did not pass during this quick start. Revisit the tasks or the help links, and then try again.')
|
|
1823
|
+
: conclusion }), !hasFailedTask &&
|
|
1824
|
+
nextQuickStarts &&
|
|
1825
|
+
nextQuickStarts.length > 0 &&
|
|
1826
|
+
nextQuickStarts.map((nextQuickStart, index) => {
|
|
1827
|
+
var _a;
|
|
1828
|
+
return (jsx(Button, Object.assign({ variant: "link", onClick: () => onQuickStartChange(nextQuickStart.metadata.name), isInline: true, icon: jsx(ArrowRightIcon, {}), 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));
|
|
1829
|
+
})] }));
|
|
1930
1830
|
};
|
|
1931
1831
|
|
|
1932
1832
|
const QuickStartIntroduction = ({ tasks, introduction, allTaskStatuses, prerequisites, onTaskSelect, }) => {
|
|
1933
|
-
const { getResource } =
|
|
1833
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1934
1834
|
const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
|
|
1935
|
-
const [isPrereqsExpanded, setIsPrereqsExpanded] =
|
|
1936
|
-
const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (
|
|
1937
|
-
|
|
1938
|
-
React.createElement(QuickStartMarkdownView, { content: pr })))))));
|
|
1939
|
-
return (React.createElement(Stack, { hasGutter: true },
|
|
1940
|
-
React.createElement(QuickStartMarkdownView, { content: introduction }),
|
|
1941
|
-
prereqList,
|
|
1942
|
-
React.createElement("p", null,
|
|
1943
|
-
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),
|
|
1944
|
-
":"),
|
|
1945
|
-
React.createElement(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect })));
|
|
1835
|
+
const [isPrereqsExpanded, setIsPrereqsExpanded] = useState(false);
|
|
1836
|
+
const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (jsx(ExpandableSection, Object.assign({ toggleText: getResource('View Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), onToggle: () => setIsPrereqsExpanded(!isPrereqsExpanded) }, { children: jsx(List, { children: prereqs.map((pr) => (jsx(ListItem, { children: jsx(QuickStartMarkdownView, { content: pr }) }, pr))) }) })));
|
|
1837
|
+
return (jsxs(Stack, Object.assign({ hasGutter: true }, { children: [jsx(QuickStartMarkdownView, { content: introduction }), prereqList, 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), ":"] }), jsx(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect })] })));
|
|
1946
1838
|
};
|
|
1947
1839
|
|
|
1948
1840
|
const getAlertVariant = (status) => {
|
|
@@ -1957,64 +1849,52 @@ const getAlertVariant = (status) => {
|
|
|
1957
1849
|
};
|
|
1958
1850
|
const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
|
|
1959
1851
|
const { instructions, failedTaskHelp: taskHelp } = review;
|
|
1960
|
-
const { getResource } =
|
|
1961
|
-
return (
|
|
1852
|
+
const { getResource } = useContext(QuickStartContext);
|
|
1853
|
+
return (jsxs(Alert, Object.assign({ variant: getAlertVariant(taskStatus), title: getResource('Check your work'), isInline: true, role: "alert", style: {
|
|
1962
1854
|
marginBottom: 'var(--pf-t--global--spacer--md)',
|
|
1963
|
-
} },
|
|
1964
|
-
React.createElement(QuickStartMarkdownView, { content: instructions }),
|
|
1965
|
-
React.createElement("span", { className: "pfext-quick-start-task-review__actions" },
|
|
1966
|
-
React.createElement(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 === QuickStartTaskStatus.SUCCESS, onChange: () => onTaskReview(QuickStartTaskStatus.SUCCESS) }),
|
|
1967
|
-
React.createElement(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 === QuickStartTaskStatus.FAILED, onChange: () => onTaskReview(QuickStartTaskStatus.FAILED) })),
|
|
1968
|
-
taskStatus === QuickStartTaskStatus.FAILED && taskHelp && (React.createElement(QuickStartMarkdownView, { content: taskHelp, exactHeight: true }))));
|
|
1855
|
+
} }, { children: [jsx(QuickStartMarkdownView, { content: instructions }), jsxs("span", Object.assign({ className: "pfext-quick-start-task-review__actions" }, { children: [jsx(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 === QuickStartTaskStatus.SUCCESS, onChange: () => onTaskReview(QuickStartTaskStatus.SUCCESS) }), jsx(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 === QuickStartTaskStatus.FAILED, onChange: () => onTaskReview(QuickStartTaskStatus.FAILED) })] })), taskStatus === QuickStartTaskStatus.FAILED && taskHelp && (jsx(QuickStartMarkdownView, { content: taskHelp, exactHeight: true }))] })));
|
|
1969
1856
|
};
|
|
1970
1857
|
|
|
1971
1858
|
const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onTaskSelect, }) => {
|
|
1972
|
-
const { getResource, alwaysShowTaskReview } =
|
|
1973
|
-
return (
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
}))));
|
|
1989
|
-
};
|
|
1990
|
-
|
|
1991
|
-
const QuickStartContent = React.forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
|
|
1859
|
+
const { getResource, alwaysShowTaskReview } = useContext(QuickStartContext);
|
|
1860
|
+
return (jsx("div", Object.assign({ className: "pf-v6-c-wizard pf-v6-c-wizard__nav-list", style: { padding: '0 0 0 0' } }, { children: jsx("ul", { children: tasks
|
|
1861
|
+
.filter((_, index) => allTaskStatuses[index] !== QuickStartTaskStatus.INIT)
|
|
1862
|
+
.map((task, index) => {
|
|
1863
|
+
const { title, description, review } = task;
|
|
1864
|
+
const isActiveTask = index === taskNumber;
|
|
1865
|
+
const taskStatus = allTaskStatuses[index];
|
|
1866
|
+
const shouldShowTaskReview = (!QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus) || alwaysShowTaskReview) &&
|
|
1867
|
+
review;
|
|
1868
|
+
return (jsx(Fragment, { children: jsx(QuickStartTaskHeader, Object.assign({ taskIndex: index + 1, title: title, size: "md", subtitle: getResource('{{index, number}} of {{tasks, number}}')
|
|
1869
|
+
.replace('{{index, number}}', index + 1)
|
|
1870
|
+
.replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }, { children: isActiveTask && (jsxs(Stack, Object.assign({ hasGutter: true }, { children: [jsx(QuickStartMarkdownView, { content: description }), shouldShowTaskReview && (jsx(QuickStartTaskReview, { review: review, taskStatus: taskStatus, onTaskReview: onTaskReview }))] }))) })) }, title));
|
|
1871
|
+
}) }) })));
|
|
1872
|
+
};
|
|
1873
|
+
|
|
1874
|
+
const QuickStartContent = forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
|
|
1992
1875
|
const { spec: { introduction, tasks, conclusion, prerequisites }, } = quickStart;
|
|
1993
1876
|
const totalTasks = tasks === null || tasks === void 0 ? void 0 : tasks.length;
|
|
1994
|
-
return (
|
|
1995
|
-
taskNumber === -1 && (React.createElement(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, prerequisites: prerequisites, onTaskSelect: onTaskSelect })),
|
|
1996
|
-
taskNumber > -1 && taskNumber < totalTasks && (React.createElement(QuickStartTasks, { tasks: tasks, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskReview: onTaskReview, onTaskSelect: onTaskSelect })),
|
|
1997
|
-
taskNumber === totalTasks && (React.createElement(QuickStartConclusion, { tasks: tasks, conclusion: conclusion, allTaskStatuses: allTaskStatuses, nextQuickStarts: nextQuickStarts, onQuickStartChange: onQuickStartChange, onTaskSelect: onTaskSelect }))));
|
|
1877
|
+
return (jsxs("div", Object.assign({ className: "pfext-quick-start-task", ref: ref }, { children: [taskNumber === -1 && (jsx(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, prerequisites: prerequisites, onTaskSelect: onTaskSelect })), taskNumber > -1 && taskNumber < totalTasks && (jsx(QuickStartTasks, { tasks: tasks, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskReview: onTaskReview, onTaskSelect: onTaskSelect })), taskNumber === totalTasks && (jsx(QuickStartConclusion, { tasks: tasks, conclusion: conclusion, allTaskStatuses: allTaskStatuses, nextQuickStarts: nextQuickStarts, onQuickStartChange: onQuickStartChange, onTaskSelect: onTaskSelect }))] })));
|
|
1998
1878
|
});
|
|
1999
1879
|
|
|
2000
1880
|
const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, quickStartId, className, }) => {
|
|
2001
|
-
const { restartQuickStart, getResource } =
|
|
2002
|
-
const PrimaryButtonText =
|
|
1881
|
+
const { restartQuickStart, getResource } = useContext(QuickStartContext);
|
|
1882
|
+
const PrimaryButtonText = useMemo(() => ({
|
|
2003
1883
|
START: getResource('Start'),
|
|
2004
1884
|
CONTINUE: getResource('Continue'),
|
|
2005
1885
|
NEXT: getResource('Next'),
|
|
2006
1886
|
CLOSE: getResource('Close'),
|
|
2007
1887
|
}), [getResource]);
|
|
2008
|
-
const SecondaryButtonText =
|
|
1888
|
+
const SecondaryButtonText = useMemo(() => ({
|
|
2009
1889
|
BACK: getResource('Back'),
|
|
2010
1890
|
RESTART: getResource('Restart'),
|
|
2011
1891
|
}), [getResource]);
|
|
2012
|
-
const onRestart =
|
|
1892
|
+
const onRestart = useCallback((e) => {
|
|
2013
1893
|
e.preventDefault();
|
|
2014
1894
|
e.stopPropagation();
|
|
2015
1895
|
restartQuickStart(quickStartId, totalTasks);
|
|
2016
1896
|
}, [quickStartId, restartQuickStart, totalTasks]);
|
|
2017
|
-
const getPrimaryButtonText =
|
|
1897
|
+
const getPrimaryButtonText = useMemo(() => {
|
|
2018
1898
|
if (status === QuickStartStatus.NOT_STARTED) {
|
|
2019
1899
|
return PrimaryButtonText.START;
|
|
2020
1900
|
}
|
|
@@ -2026,23 +1906,17 @@ const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, quic
|
|
|
2026
1906
|
}
|
|
2027
1907
|
return PrimaryButtonText.CONTINUE;
|
|
2028
1908
|
}, [taskNumber, totalTasks, PrimaryButtonText, status]);
|
|
2029
|
-
const getPrimaryButton =
|
|
2030
|
-
const getSecondaryButton =
|
|
2031
|
-
const getSideNoteAction =
|
|
2032
|
-
return (
|
|
2033
|
-
React.createElement(ActionList, null,
|
|
2034
|
-
React.createElement(ActionListGroup, null,
|
|
2035
|
-
React.createElement(ActionListItem, null, getPrimaryButton),
|
|
2036
|
-
React.createElement(ActionListItem, null, getSecondaryButton)),
|
|
2037
|
-
React.createElement(ActionListGroup, null,
|
|
2038
|
-
React.createElement(ActionListItem, null, getSideNoteAction)))));
|
|
1909
|
+
const getPrimaryButton = useMemo(() => (jsx(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]);
|
|
1910
|
+
const getSecondaryButton = useMemo(() => taskNumber === -1 && status !== QuickStartStatus.NOT_STARTED ? (jsx(Button, Object.assign({ variant: "secondary", onClick: onRestart, "data-testid": "qs-drawer-restart" }, { children: SecondaryButtonText.RESTART }))) : (taskNumber > -1 && (jsx(Button, Object.assign({ variant: "secondary", onClick: onBack, "data-testid": "qs-drawer-back" }, { children: SecondaryButtonText.BACK })))), [onRestart, onBack, SecondaryButtonText, status, taskNumber]);
|
|
1911
|
+
const getSideNoteAction = useMemo(() => taskNumber !== -1 && (jsx(Button, Object.assign({ variant: "link", onClick: onRestart, "data-testid": "qs-drawer-side-note-action" }, { children: SecondaryButtonText.RESTART }))), [taskNumber, onRestart, SecondaryButtonText.RESTART]);
|
|
1912
|
+
return (jsx("div", Object.assign({ className: css('pfext-quick-start-footer', className) }, { children: jsxs(ActionList, { children: [jsxs(ActionListGroup, { children: [jsx(ActionListItem, { children: getPrimaryButton }), jsx(ActionListItem, { children: getSecondaryButton })] }), jsx(ActionListGroup, { children: jsx(ActionListItem, { children: getSideNoteAction }) })] }) })));
|
|
2039
1913
|
};
|
|
2040
1914
|
|
|
2041
1915
|
const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerClass, }) => {
|
|
2042
1916
|
const { metadata: { name }, spec: { tasks = [] }, } = quickStart;
|
|
2043
1917
|
const totalTasks = tasks === null || tasks === void 0 ? void 0 : tasks.length;
|
|
2044
|
-
const { activeQuickStartID, allQuickStartStates, setAllQuickStartStates, activeQuickStartState, setActiveQuickStart, setQuickStartTaskNumber, setQuickStartTaskStatus, nextStep, previousStep, } =
|
|
2045
|
-
|
|
1918
|
+
const { activeQuickStartID, allQuickStartStates, setAllQuickStartStates, activeQuickStartState, setActiveQuickStart, setQuickStartTaskNumber, setQuickStartTaskStatus, nextStep, previousStep, } = useContext(QuickStartContext);
|
|
1919
|
+
useEffect(() => {
|
|
2046
1920
|
// If activeQuickStartID was changed through prop from QuickStartContainer, need to init the state if it does not exist yet
|
|
2047
1921
|
if (activeQuickStartID && !allQuickStartStates[activeQuickStartID]) {
|
|
2048
1922
|
setAllQuickStartStates(Object.assign(Object.assign({}, allQuickStartStates), { [activeQuickStartID]: getDefaultQuickStartState() }));
|
|
@@ -2051,9 +1925,9 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
|
|
|
2051
1925
|
const status = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.status;
|
|
2052
1926
|
const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
|
|
2053
1927
|
const allTaskStatuses = tasks.map((task, index) => activeQuickStartState[`taskStatus${index}`]);
|
|
2054
|
-
const handleQuickStartChange =
|
|
2055
|
-
const handleTaskStatusChange =
|
|
2056
|
-
const getQuickStartActiveTask =
|
|
1928
|
+
const handleQuickStartChange = useCallback((quickStartId) => setActiveQuickStart(quickStartId), [setActiveQuickStart]);
|
|
1929
|
+
const handleTaskStatusChange = useCallback((newTaskStatus) => setQuickStartTaskStatus(newTaskStatus), [setQuickStartTaskStatus]);
|
|
1930
|
+
const getQuickStartActiveTask = useCallback(() => {
|
|
2057
1931
|
let activeTaskNumber = 0;
|
|
2058
1932
|
while (activeTaskNumber !== totalTasks &&
|
|
2059
1933
|
activeQuickStartState[`taskStatus${activeTaskNumber}`] === QuickStartTaskStatus.SUCCESS) {
|
|
@@ -2061,11 +1935,11 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
|
|
|
2061
1935
|
}
|
|
2062
1936
|
return activeTaskNumber;
|
|
2063
1937
|
}, [totalTasks, activeQuickStartState]);
|
|
2064
|
-
const handleQuickStartContinue =
|
|
1938
|
+
const handleQuickStartContinue = useCallback(() => {
|
|
2065
1939
|
const activeTaskNumber = getQuickStartActiveTask();
|
|
2066
1940
|
setQuickStartTaskNumber(name, activeTaskNumber);
|
|
2067
1941
|
}, [getQuickStartActiveTask, setQuickStartTaskNumber, name]);
|
|
2068
|
-
const handleNext =
|
|
1942
|
+
const handleNext = useCallback(() => {
|
|
2069
1943
|
if (status === QuickStartStatus.COMPLETE && taskNumber === totalTasks) {
|
|
2070
1944
|
return handleQuickStartChange('');
|
|
2071
1945
|
}
|
|
@@ -2074,13 +1948,11 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
|
|
|
2074
1948
|
}
|
|
2075
1949
|
return nextStep(totalTasks);
|
|
2076
1950
|
}, [handleQuickStartChange, nextStep, status, taskNumber, totalTasks, handleQuickStartContinue]);
|
|
2077
|
-
const handleBack =
|
|
2078
|
-
const handleTaskSelect =
|
|
1951
|
+
const handleBack = useCallback(() => previousStep(), [previousStep]);
|
|
1952
|
+
const handleTaskSelect = useCallback((selectedTaskNumber) => {
|
|
2079
1953
|
setQuickStartTaskNumber(name, selectedTaskNumber);
|
|
2080
1954
|
}, [name, setQuickStartTaskNumber]);
|
|
2081
|
-
return (
|
|
2082
|
-
React.createElement(QuickStartContent, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskSelect: handleTaskSelect, onTaskReview: handleTaskStatusChange, onQuickStartChange: handleQuickStartChange, ref: contentRef }),
|
|
2083
|
-
React.createElement(QuickStartFooter, { status: status, taskNumber: taskNumber, totalTasks: totalTasks, onNext: handleNext, onBack: handleBack, className: footerClass, quickStartId: quickStart.metadata.name })));
|
|
1955
|
+
return (jsxs(Fragment$1, { children: [jsx(QuickStartContent, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskSelect: handleTaskSelect, onTaskReview: handleTaskStatusChange, onQuickStartChange: handleQuickStartChange, ref: contentRef }), jsx(QuickStartFooter, { status: status, taskNumber: taskNumber, totalTasks: totalTasks, onNext: handleNext, onBack: handleBack, className: footerClass, quickStartId: quickStart.metadata.name })] }));
|
|
2084
1956
|
};
|
|
2085
1957
|
|
|
2086
1958
|
const getElement = (appendTo) => {
|
|
@@ -2090,7 +1962,7 @@ const getElement = (appendTo) => {
|
|
|
2090
1962
|
return appendTo;
|
|
2091
1963
|
};
|
|
2092
1964
|
const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
|
|
2093
|
-
|
|
1965
|
+
useEffect(() => {
|
|
2094
1966
|
if (node) {
|
|
2095
1967
|
node.scrollTo({ top: 0, behavior: 'smooth' });
|
|
2096
1968
|
}
|
|
@@ -2098,9 +1970,9 @@ const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
|
|
|
2098
1970
|
};
|
|
2099
1971
|
const QuickStartPanelContent = (_a) => {
|
|
2100
1972
|
var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true, footerClass } = _a, props = __rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose", "footerClass"]);
|
|
2101
|
-
const titleRef =
|
|
2102
|
-
const { getResource, activeQuickStartState, focusOnQuickStart } =
|
|
2103
|
-
const [contentRef, setContentRef] =
|
|
1973
|
+
const titleRef = useRef(null);
|
|
1974
|
+
const { getResource, activeQuickStartState, focusOnQuickStart } = useContext(QuickStartContext);
|
|
1975
|
+
const [contentRef, setContentRef] = useState();
|
|
2104
1976
|
const quickStart = quickStarts.find((qs) => qs.metadata.name === activeQuickStartID);
|
|
2105
1977
|
const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
|
|
2106
1978
|
useScrollTopOnTaskNumberChange(contentRef, taskNumber);
|
|
@@ -2116,27 +1988,16 @@ const QuickStartPanelContent = (_a) => {
|
|
|
2116
1988
|
}
|
|
2117
1989
|
return Number.parseInt(taskNumber) + 1;
|
|
2118
1990
|
};
|
|
2119
|
-
|
|
1991
|
+
useEffect(() => {
|
|
2120
1992
|
if (focusOnQuickStart && quickStart) {
|
|
2121
1993
|
titleRef.current.focus();
|
|
2122
1994
|
}
|
|
2123
1995
|
}, [focusOnQuickStart, quickStart]);
|
|
2124
|
-
const content = quickStart ? (
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
React.createElement("span", null, quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.displayName),
|
|
2130
|
-
' '),
|
|
2131
|
-
React.createElement("span", null, (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2132
|
-
? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2133
|
-
.replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
2134
|
-
.replace('{{type}}', getResource('Type'))
|
|
2135
|
-
: getResource('Type'))),
|
|
2136
|
-
showClose && (React.createElement(DrawerActions, null,
|
|
2137
|
-
React.createElement(DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))))),
|
|
2138
|
-
React.createElement(DrawerPanelBody, { className: "pfext-quick-start-panel-content__body", "data-test": "content" },
|
|
2139
|
-
React.createElement(QuickStartController, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, footerClass: footerClass, contentRef: setContentRef })))) : null;
|
|
1996
|
+
const content = quickStart ? (jsxs(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: [jsx("div", Object.assign({ className: "pfext-quick-start-panel-content" }, { children: jsxs(DrawerHead, { children: [jsxs("div", Object.assign({ tabIndex: -1, ref: titleRef }, { children: [jsxs(Title, Object.assign({ headingLevel: "h2", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, { children: [jsx("span", { children: quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.displayName }), ' '] })), jsx("span", { children: (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
1997
|
+
? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
1998
|
+
.replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
|
|
1999
|
+
.replace('{{type}}', getResource('Type'))
|
|
2000
|
+
: getResource('Type') })] })), showClose && (jsx(DrawerActions, { children: jsx(DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }) }))] }) })), jsx(DrawerPanelBody, Object.assign({ className: "pfext-quick-start-panel-content__body", "data-test": "content" }, { children: jsx(QuickStartController, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, footerClass: footerClass, contentRef: setContentRef }) }))] }))) : null;
|
|
2140
2001
|
if (appendTo) {
|
|
2141
2002
|
return ReactDOM.createPortal(content, getElement(appendTo));
|
|
2142
2003
|
}
|
|
@@ -2145,7 +2006,7 @@ const QuickStartPanelContent = (_a) => {
|
|
|
2145
2006
|
|
|
2146
2007
|
const QuickStartDrawerContent = (_a) => {
|
|
2147
2008
|
var { quickStarts = [], appendTo, fullWidth, handleDrawerClose } = _a, props = __rest(_a, ["quickStarts", "appendTo", "fullWidth", "handleDrawerClose"]);
|
|
2148
|
-
const { activeQuickStartID, allQuickStarts = [], activeQuickStartState, } =
|
|
2009
|
+
const { activeQuickStartID, allQuickStarts = [], activeQuickStartState, } = useContext(QuickStartContext);
|
|
2149
2010
|
const combinedQuickStarts = allQuickStarts.concat(quickStarts);
|
|
2150
2011
|
const handleClose = () => {
|
|
2151
2012
|
handleDrawerClose && handleDrawerClose(activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.status);
|
|
@@ -2157,14 +2018,14 @@ const QuickStartDrawerContent = (_a) => {
|
|
|
2157
2018
|
},
|
|
2158
2019
|
}
|
|
2159
2020
|
: {};
|
|
2160
|
-
return (
|
|
2021
|
+
return (jsx(QuickStartPanelContent, Object.assign({ quickStarts: combinedQuickStarts, handleClose: handleClose, activeQuickStartID: activeQuickStartID, appendTo: appendTo, isResizable: !fullWidth }, fullWidthPanelStyle, props)));
|
|
2161
2022
|
};
|
|
2162
2023
|
|
|
2163
2024
|
const QuickStartDrawer = (_a) => {
|
|
2164
2025
|
var { quickStarts = [], children, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress } = _a, props = __rest(_a, ["quickStarts", "children", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress"]);
|
|
2165
|
-
const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], allQuickStartStates, setAllQuickStartStates, } =
|
|
2026
|
+
const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], allQuickStartStates, setAllQuickStartStates, } = useContext(QuickStartContext);
|
|
2166
2027
|
const combinedQuickStarts = allQuickStarts.concat(quickStarts);
|
|
2167
|
-
|
|
2028
|
+
useEffect(() => {
|
|
2168
2029
|
const params = new URLSearchParams(window.location.search);
|
|
2169
2030
|
// if there is a quick start param, but the quick start is not active, set it
|
|
2170
2031
|
// this can happen if a new browser session is opened or an incognito window for example
|
|
@@ -2177,13 +2038,13 @@ const QuickStartDrawer = (_a) => {
|
|
|
2177
2038
|
}
|
|
2178
2039
|
}
|
|
2179
2040
|
}, [activeQuickStartID, combinedQuickStarts, setActiveQuickStart]);
|
|
2180
|
-
|
|
2041
|
+
useEffect(() => {
|
|
2181
2042
|
// If activeQuickStartID was changed through prop from QuickStartContainer, need to init the state if it does not exist yet
|
|
2182
2043
|
if (activeQuickStartID && !allQuickStartStates[activeQuickStartID]) {
|
|
2183
2044
|
setAllQuickStartStates(Object.assign(Object.assign({}, allQuickStartStates), { [activeQuickStartID]: getDefaultQuickStartState() }));
|
|
2184
2045
|
}
|
|
2185
2046
|
}, [activeQuickStartID, allQuickStartStates, setAllQuickStartStates]);
|
|
2186
|
-
const [modalOpen, setModalOpen] =
|
|
2047
|
+
const [modalOpen, setModalOpen] = useState(false);
|
|
2187
2048
|
const onClose = () => setActiveQuickStart('');
|
|
2188
2049
|
const handleClose = (activeQuickStartStatus) => {
|
|
2189
2050
|
if (activeQuickStartStatus === QuickStartStatus.IN_PROGRESS) {
|
|
@@ -2213,11 +2074,7 @@ const QuickStartDrawer = (_a) => {
|
|
|
2213
2074
|
},
|
|
2214
2075
|
}
|
|
2215
2076
|
: {};
|
|
2216
|
-
return (
|
|
2217
|
-
React.createElement(Drawer, Object.assign({ isExpanded: !!activeQuickStartID, isInline: true }, props),
|
|
2218
|
-
React.createElement(DrawerContent, Object.assign({ panelContent: React.createElement(QuickStartDrawerContent, { quickStarts: combinedQuickStarts, handleDrawerClose: handleClose, appendTo: appendTo, fullWidth: fullWidth }) }, fullWidthBodyStyle),
|
|
2219
|
-
React.createElement(DrawerContentBody, null, children))),
|
|
2220
|
-
React.createElement(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })));
|
|
2077
|
+
return (jsxs(Fragment$1, { children: [jsx(Drawer, Object.assign({ isExpanded: !!activeQuickStartID, isInline: true }, props, { children: jsx(DrawerContent, Object.assign({ panelContent: jsx(QuickStartDrawerContent, { quickStarts: combinedQuickStarts, handleDrawerClose: handleClose, appendTo: appendTo, fullWidth: fullWidth }) }, fullWidthBodyStyle, { children: jsx(DrawerContentBody, { children: children }) })) })), jsx(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })] }));
|
|
2221
2078
|
};
|
|
2222
2079
|
|
|
2223
2080
|
const QuickStartContainer = (_a) => {
|
|
@@ -2232,13 +2089,13 @@ const QuickStartContainer = (_a) => {
|
|
|
2232
2089
|
useQueryParams,
|
|
2233
2090
|
markdown,
|
|
2234
2091
|
alwaysShowTaskReview }, contextProps));
|
|
2235
|
-
|
|
2092
|
+
useEffect(() => {
|
|
2236
2093
|
if (quickStarts &&
|
|
2237
2094
|
JSON.stringify(quickStarts) !== JSON.stringify(valuesForQuickstartContext.allQuickStarts)) {
|
|
2238
2095
|
valuesForQuickstartContext.setAllQuickStarts(quickStarts);
|
|
2239
2096
|
}
|
|
2240
2097
|
}, [quickStarts, valuesForQuickstartContext]);
|
|
2241
|
-
|
|
2098
|
+
useEffect(() => {
|
|
2242
2099
|
if (loading !== valuesForQuickstartContext.loading) {
|
|
2243
2100
|
valuesForQuickstartContext.setLoading(loading);
|
|
2244
2101
|
}
|
|
@@ -2247,7 +2104,7 @@ const QuickStartContainer = (_a) => {
|
|
|
2247
2104
|
fullWidth,
|
|
2248
2105
|
onCloseInProgress,
|
|
2249
2106
|
onCloseNotInProgress }, props);
|
|
2250
|
-
return (
|
|
2107
|
+
return (jsx(QuickStartContext.Provider, Object.assign({ value: valuesForQuickstartContext }, { children: isManagedDrawer ? (jsx(QuickStartDrawer, Object.assign({}, drawerProps, { children: children }))) : (children) })));
|
|
2251
2108
|
};
|
|
2252
2109
|
|
|
2253
2110
|
const HelpTopicContextDefaults = {
|
|
@@ -2259,14 +2116,14 @@ const HelpTopicContextDefaults = {
|
|
|
2259
2116
|
setFilteredHelpTopics: () => { },
|
|
2260
2117
|
loading: false,
|
|
2261
2118
|
};
|
|
2262
|
-
const HelpTopicContext =
|
|
2119
|
+
const HelpTopicContext = createContext(HelpTopicContextDefaults);
|
|
2263
2120
|
const useValuesForHelpTopicContext = (value = {}) => {
|
|
2264
2121
|
const combinedValue = Object.assign(Object.assign({}, HelpTopicContextDefaults), value);
|
|
2265
|
-
const [loading, setLoading] =
|
|
2122
|
+
const [loading, setLoading] = useState(combinedValue.loading);
|
|
2266
2123
|
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
2267
|
-
const [helpTopics, setHelpTopics] =
|
|
2268
|
-
const [activeHelpTopic, setActiveHelpTopic] =
|
|
2269
|
-
const setActiveHelpTopicByName =
|
|
2124
|
+
const [helpTopics, setHelpTopics] = useState(combinedValue.helpTopics || []);
|
|
2125
|
+
const [activeHelpTopic, setActiveHelpTopic] = useState(combinedValue.activeHelpTopic || null);
|
|
2126
|
+
const setActiveHelpTopicByName = useCallback((helpTopicName) => {
|
|
2270
2127
|
const topic = helpTopics.find((t) => t.name === helpTopicName);
|
|
2271
2128
|
if (!helpTopicName) {
|
|
2272
2129
|
setActiveHelpTopic(null);
|
|
@@ -2274,7 +2131,7 @@ const useValuesForHelpTopicContext = (value = {}) => {
|
|
|
2274
2131
|
}
|
|
2275
2132
|
setActiveHelpTopic(topic);
|
|
2276
2133
|
}, [helpTopics]);
|
|
2277
|
-
const [filteredHelpTopics, setFilteredHelpTopics] =
|
|
2134
|
+
const [filteredHelpTopics, setFilteredHelpTopics] = useState(combinedValue.filteredHelpTopics || []);
|
|
2278
2135
|
return {
|
|
2279
2136
|
helpTopics,
|
|
2280
2137
|
setHelpTopics,
|
|
@@ -2290,8 +2147,8 @@ const useValuesForHelpTopicContext = (value = {}) => {
|
|
|
2290
2147
|
const HelpTopicPanelContent = (_a) => {
|
|
2291
2148
|
var _b, _c;
|
|
2292
2149
|
var { activeHelpTopic = null, filteredHelpTopics = [], isResizable = true, onClose } = _a, props = __rest(_a, ["activeHelpTopic", "filteredHelpTopics", "isResizable", "onClose"]);
|
|
2293
|
-
const { setActiveHelpTopicByName } =
|
|
2294
|
-
const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] =
|
|
2150
|
+
const { setActiveHelpTopicByName } = useContext(HelpTopicContext);
|
|
2151
|
+
const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = useState(false);
|
|
2295
2152
|
const toggleHelpTopicMenu = () => {
|
|
2296
2153
|
setIsHelpTopicMenuOpen(!isHelpTopicMenuOpen);
|
|
2297
2154
|
};
|
|
@@ -2301,24 +2158,10 @@ const HelpTopicPanelContent = (_a) => {
|
|
|
2301
2158
|
toggleHelpTopicMenu();
|
|
2302
2159
|
};
|
|
2303
2160
|
const helpTopicOptions = filteredHelpTopics.length > 1 &&
|
|
2304
|
-
filteredHelpTopics.map((topic) => (
|
|
2305
|
-
const paddingContainer = (children) =>
|
|
2306
|
-
const panelBodyItems = (
|
|
2307
|
-
|
|
2308
|
-
!!((_b = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _b === void 0 ? void 0 : _b.length) && React.createElement(Divider, null),
|
|
2309
|
-
paddingContainer(React.createElement(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.createElement(StackItem, { key: index },
|
|
2310
|
-
React.createElement(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.createElement(ExternalLinkAltIcon, null) : null, iconPosition: "right", style: { fontSize: 'inherit' } }, text || href))))))));
|
|
2311
|
-
const content = (React.createElement(DrawerPanelContent, Object.assign({ isResizable: isResizable }, props),
|
|
2312
|
-
React.createElement("div", null,
|
|
2313
|
-
React.createElement(DrawerHead, null,
|
|
2314
|
-
React.createElement("div", null,
|
|
2315
|
-
helpTopicOptions && (React.createElement(Select, { isPlain: true, id: "help-topics-select", selected: activeHelpTopic, isOpen: isHelpTopicMenuOpen, onSelect: onSelectHelpTopic, onOpenChange: (isOpen) => setIsHelpTopicMenuOpen(isOpen), toggle: (toggleRef) => (React.createElement(MenuToggle, { isFullWidth: true, ref: toggleRef, icon: React.createElement(BarsIcon, null), onClick: toggleHelpTopicMenu, isExpanded: isHelpTopicMenuOpen }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)) },
|
|
2316
|
-
React.createElement(SelectList, null, helpTopicOptions))),
|
|
2317
|
-
React.createElement(Title, { headingLevel: "h1", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)),
|
|
2318
|
-
React.createElement(DrawerActions, null,
|
|
2319
|
-
React.createElement(DrawerCloseButton, { onClick: onClose, "data-testid": "qs-drawer-close" }))),
|
|
2320
|
-
React.createElement(Divider, null),
|
|
2321
|
-
React.createElement(DrawerPanelBody, { "data-test": "content" }, panelBodyItems))));
|
|
2161
|
+
filteredHelpTopics.map((topic) => (jsx(SelectOption, Object.assign({ value: topic.name }, { children: topic.title }), topic.name)));
|
|
2162
|
+
const paddingContainer = (children) => jsx("div", Object.assign({ style: { padding: '24px' } }, { children: children }));
|
|
2163
|
+
const panelBodyItems = (jsxs(Fragment$1, { children: [paddingContainer(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) && jsx(Divider, {}), paddingContainer(jsx(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) => (jsx(StackItem, { children: jsx(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 ? jsx(ExternalLinkAltIcon, {}) : null, iconPosition: "right", style: { fontSize: 'inherit' } }, { children: text || href })) }, index))) })))] }));
|
|
2164
|
+
const content = (jsx(DrawerPanelContent, Object.assign({ isResizable: isResizable }, props, { children: jsxs("div", { children: [jsxs(DrawerHead, { children: [jsxs("div", { children: [helpTopicOptions && (jsx(Select, Object.assign({ isPlain: true, id: "help-topics-select", selected: activeHelpTopic, isOpen: isHelpTopicMenuOpen, onSelect: onSelectHelpTopic, onOpenChange: (isOpen) => setIsHelpTopicMenuOpen(isOpen), toggle: (toggleRef) => (jsx(MenuToggle, Object.assign({ isFullWidth: true, ref: toggleRef, icon: jsx(BarsIcon, {}), onClick: toggleHelpTopicMenu, isExpanded: isHelpTopicMenuOpen }, { children: activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title }))) }, { children: jsx(SelectList, { children: helpTopicOptions }) }))), jsx(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 }))] }), jsx(DrawerActions, { children: jsx(DrawerCloseButton, { onClick: onClose, "data-testid": "qs-drawer-close" }) })] }), jsx(Divider, {}), jsx(DrawerPanelBody, Object.assign({ "data-test": "content" }, { children: panelBodyItems }))] }) })));
|
|
2322
2165
|
return content;
|
|
2323
2166
|
};
|
|
2324
2167
|
|
|
@@ -2327,30 +2170,27 @@ const HelpTopicContainer = (_a) => {
|
|
|
2327
2170
|
const valuesForHelpTopicContext = useValuesForHelpTopicContext(Object.assign({ helpTopics,
|
|
2328
2171
|
language, resourceBundle: Object.assign({}, resourceBundle), loading,
|
|
2329
2172
|
markdown }, contextProps));
|
|
2330
|
-
|
|
2173
|
+
useEffect(() => {
|
|
2331
2174
|
if (loading !== valuesForHelpTopicContext.loading) {
|
|
2332
2175
|
valuesForHelpTopicContext.setLoading(loading);
|
|
2333
2176
|
}
|
|
2334
2177
|
}, [loading, valuesForHelpTopicContext]);
|
|
2335
|
-
|
|
2178
|
+
useEffect(() => {
|
|
2336
2179
|
if (helpTopics &&
|
|
2337
2180
|
JSON.stringify(helpTopics) !== JSON.stringify(valuesForHelpTopicContext.helpTopics)) {
|
|
2338
2181
|
valuesForHelpTopicContext.setHelpTopics(helpTopics);
|
|
2339
2182
|
}
|
|
2340
2183
|
}, [helpTopics, valuesForHelpTopicContext]);
|
|
2341
|
-
return (
|
|
2342
|
-
React.createElement(HelpTopicDrawer, Object.assign({}, props), children)));
|
|
2184
|
+
return (jsx(HelpTopicContext.Provider, Object.assign({ value: valuesForHelpTopicContext }, { children: jsx(HelpTopicDrawer, Object.assign({}, props, { children: children })) })));
|
|
2343
2185
|
};
|
|
2344
2186
|
const HelpTopicDrawer = (_a) => {
|
|
2345
2187
|
var { children } = _a, props = __rest(_a, ["children"]);
|
|
2346
|
-
const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } =
|
|
2188
|
+
const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } = useContext(HelpTopicContext);
|
|
2347
2189
|
const onClose = () => {
|
|
2348
2190
|
setActiveHelpTopicByName('');
|
|
2349
2191
|
};
|
|
2350
|
-
const panelContent = (
|
|
2351
|
-
return (
|
|
2352
|
-
React.createElement(Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props), children ? (React.createElement(DrawerContent, { panelContent: panelContent },
|
|
2353
|
-
React.createElement(DrawerContentBody, null, children))) : (React.createElement("div", { className: "pf-v6-c-drawer__main" }, panelContent)))));
|
|
2192
|
+
const panelContent = (jsx(HelpTopicPanelContent, { activeHelpTopic: activeHelpTopic, filteredHelpTopics: filteredHelpTopics, onClose: onClose }));
|
|
2193
|
+
return (jsx(Fragment$1, { children: jsx(Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props, { children: children ? (jsx(DrawerContent, Object.assign({ panelContent: panelContent }, { children: jsx(DrawerContentBody, { children: children }) }))) : (jsx("div", Object.assign({ className: "pf-v6-c-drawer__main" }, { children: panelContent }))) })) }));
|
|
2354
2194
|
};
|
|
2355
2195
|
|
|
2356
2196
|
const useLocalStorage = (key, initialValue) => {
|