Skip to content

Commit a6093ec

Browse files
authored
Merge pull request RedHatInsights#320 from apinkert/update-qs
Rework quickstarts implementation in the help panel
2 parents d38310c + 876c2be commit a6093ec

5 files changed

Lines changed: 746 additions & 323 deletions

File tree

src/components/HelpPanel/HelpPanelContent.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import HelpPanelCustomTabs, {
1515
import { HelpPanelTabContent } from './HelpPanelLink';
1616
import messages from '../../Messages';
1717
import './HelpPanelCustomTabs.scss';
18+
import '@patternfly/quickstarts/dist/quickstarts.min.css';
1819

1920
const HelpPanelContent = ({
2021
toggleDrawer,

src/components/HelpPanel/HelpPanelCustomTabs.tsx

Lines changed: 7 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,12 @@ import React, {
99
} from 'react';
1010

1111
import HelpPanelTabContainer from './HelpPanelTabs/HelpPanelTabContainer';
12-
import QuickStartsPanel from './HelpPanelTabs/QuickStartsPanel';
1312
import { TabType } from './HelpPanelTabs/helpPanelTabsMapper';
1413
import { getOpenQuickstartInHelpPanelStore } from '../../store/openQuickstartInHelpPanelStore';
1514
import { useGetState } from '@scalprum/react-core';
1615
import { useFlag, useFlags } from '@unleash/proxy-client-react';
1716
import { SearchIcon } from '@patternfly/react-icons';
1817
import { AiChatbotIcon } from '../common/AiChatbotIcon';
19-
import {
20-
QuickStartCloseModal,
21-
QuickStartStatus,
22-
} from '@patternfly/quickstarts';
23-
import type { AllQuickStartStates } from '@patternfly/quickstarts';
24-
import useChrome from '@redhat-cloud-services/frontend-components/useChrome';
25-
import fetchQuickstarts from '../../utils/fetchQuickstarts';
26-
import type { ExtendedQuickstart } from '../../utils/fetchQuickstarts';
2718
import { HelpPanelTabContent } from './HelpPanelLink';
2819
import type { OpenQuickstartInHelpPanelState } from '../../store/openQuickstartInHelpPanelStore';
2920

@@ -101,7 +92,6 @@ const filterTabsByFeatureFlags = (
10192

10293
const HelpPanelCustomTabs = React.forwardRef<HelpPanelCustomTabsRef>(
10394
(_, ref) => {
104-
const chrome = useChrome();
10595
const vaFlag = useFlag('platform.chrome.help-panel_chatbot');
10696
const vaEnvFlag = useFlag('platform.va.environment.enabled');
10797
const flags = useFlags();
@@ -123,69 +113,6 @@ const HelpPanelCustomTabs = React.forwardRef<HelpPanelCustomTabsRef>(
123113
defaultTab?.id || 'learn'
124114
);
125115

126-
// Quickstart state (for when quickstarts are opened as overlays)
127-
const [helpPanelQuickStarts, setHelpPanelQuickStarts] = useState<
128-
ExtendedQuickstart[]
129-
>([]);
130-
const [helpPanelQuickStartsLoading, setHelpPanelQuickStartsLoading] =
131-
useState(true);
132-
const [allQuickStartStates, setAllQuickStartStates] =
133-
useState<AllQuickStartStates>({});
134-
const [activeQuickstartId, setActiveQuickstartId] = useState<string | null>(
135-
null
136-
);
137-
const [closeModalOpen, setCloseModalOpen] = useState(false);
138-
139-
const closeQuickstart = useCallback(() => {
140-
setActiveQuickstartId(null);
141-
}, []);
142-
143-
const handleQuickstartDrawerClose = useCallback(
144-
(activeQuickStartStatus: string | number) => {
145-
if (activeQuickStartStatus === QuickStartStatus.IN_PROGRESS) {
146-
setCloseModalOpen(true);
147-
} else {
148-
closeQuickstart();
149-
}
150-
},
151-
[closeQuickstart]
152-
);
153-
154-
// Load quickstarts for the panel
155-
useEffect(() => {
156-
let cancelled = false;
157-
setHelpPanelQuickStartsLoading(true);
158-
if (!chrome?.auth?.getUser) {
159-
setHelpPanelQuickStartsLoading(false);
160-
return () => {
161-
cancelled = true;
162-
};
163-
}
164-
chrome.auth
165-
.getUser()
166-
.then((user) => {
167-
if (!user || cancelled) {
168-
if (!cancelled) setHelpPanelQuickStartsLoading(false);
169-
return;
170-
}
171-
return fetchQuickstarts(chrome.auth.getUser, {}).then((data) => {
172-
if (!cancelled) {
173-
setHelpPanelQuickStarts(data);
174-
setHelpPanelQuickStartsLoading(false);
175-
}
176-
});
177-
})
178-
.catch((err) => {
179-
if (!cancelled) {
180-
setHelpPanelQuickStartsLoading(false);
181-
console.error('Help Panel: failed to load quickstarts', err);
182-
}
183-
});
184-
return () => {
185-
cancelled = true;
186-
};
187-
}, [chrome?.auth]);
188-
189116
// Placeholder for setNewActionTitle - no longer used but kept for TabContainer API compatibility
190117
const setNewActionTitle = useCallback((title: string) => {
191118
// No-op: tabs are now static, titles don't change
@@ -227,13 +154,15 @@ const HelpPanelCustomTabs = React.forwardRef<HelpPanelCustomTabsRef>(
227154
useEffect(() => {
228155
const { pendingOpen } = openQuickstartState;
229156
if (!pendingOpen) return;
230-
const { quickstartId } = pendingOpen;
231157

232-
// Open quickstart as an overlay (not as a separate tab)
233-
setActiveQuickstartId(quickstartId);
158+
// Switch to Learn tab (quickstart will be opened in drill-down mode by LearnPanel)
159+
const learnTab = tabs.find((tab) => tab.tabType === TabType.learn);
160+
if (learnTab) {
161+
setActiveTabId(learnTab.id);
162+
}
234163

235-
openQuickstartStore.updateState('CONSUMED_OPEN');
236-
}, [openQuickstartState.pendingOpen, openQuickstartStore]);
164+
// Note: we do NOT consume the event here - LearnPanel will consume it after opening the quickstart
165+
}, [openQuickstartState.pendingOpen, tabs]);
237166

238167
// Update active tab when tabs change (due to feature flags)
239168
useEffect(() => {
@@ -286,30 +215,6 @@ const HelpPanelCustomTabs = React.forwardRef<HelpPanelCustomTabsRef>(
286215
})}
287216
</Tabs>
288217
</div>
289-
{/* Quickstart overlay - rendered on top of tabs when a quickstart is opened */}
290-
{activeQuickstartId && (
291-
<div className="lr-c-help-panel-quickstart-overlay">
292-
<QuickStartsPanel
293-
activeQuickStartID={activeQuickstartId}
294-
quickStarts={helpPanelQuickStarts}
295-
loading={helpPanelQuickStartsLoading}
296-
allQuickStartStates={allQuickStartStates}
297-
setAllQuickStartStates={setAllQuickStartStates}
298-
onClose={handleQuickstartDrawerClose}
299-
onCloseNotInProgress={closeQuickstart}
300-
/>
301-
</div>
302-
)}
303-
<QuickStartCloseModal
304-
isOpen={closeModalOpen}
305-
onConfirm={() => {
306-
closeQuickstart();
307-
setCloseModalOpen(false);
308-
}}
309-
onCancel={() => {
310-
setCloseModalOpen(false);
311-
}}
312-
/>
313218
</>
314219
);
315220
}

0 commit comments

Comments
 (0)