Skip to content

Commit f285efc

Browse files
committed
feat: hide preview tab in sidebar in unit page
1 parent 1b5570d commit f285efc

3 files changed

Lines changed: 41 additions & 11 deletions

File tree

src/library-authoring/common/context/SidebarContext.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export type SidebarContextData = {
6565
setSidebarTab: (tab: SidebarInfoTab) => void;
6666
defaultTab: ComponentInfoTab;
6767
setDefaultTab: (tab: ComponentInfoTab) => void;
68+
disabledTabs: ComponentInfoTab[];
69+
setDisabledTabs: (tabs: ComponentInfoTab[]) => void;
6870
};
6971

7072
/**
@@ -93,6 +95,7 @@ export const SidebarProvider = ({
9395
);
9496

9597
const [defaultTab, setDefaultTab] = useState<ComponentInfoTab>(COMPONENT_INFO_TABS.Preview);
98+
const [disabledTabs, setDisabledTabs] = useState<ComponentInfoTab[]>([]);
9699

97100
const [sidebarTab, setSidebarTab] = useStateWithUrlSearchParam<SidebarInfoTab>(
98101
defaultTab,
@@ -161,6 +164,8 @@ export const SidebarProvider = ({
161164
setSidebarTab,
162165
defaultTab,
163166
setDefaultTab,
167+
disabledTabs,
168+
setDisabledTabs,
164169
};
165170

166171
return contextValue;
@@ -179,6 +184,8 @@ export const SidebarProvider = ({
179184
setSidebarTab,
180185
defaultTab,
181186
setDefaultTab,
187+
disabledTabs,
188+
setDisabledTabs,
182189
]);
183190

184191
return (
@@ -207,6 +214,8 @@ export function useSidebarContext(): SidebarContextData {
207214
sidebarComponentInfo: undefined,
208215
defaultTab: COMPONENT_INFO_TABS.Preview,
209216
setDefaultTab: () => {},
217+
disabledTabs: [],
218+
setDisabledTabs: () => {},
210219
};
211220
}
212221
return ctx;

src/library-authoring/component-info/ComponentInfo.tsx

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { getBlockType } from '../../generic/key-utils';
3131
import { useLibraryBlockMetadata, usePublishComponent } from '../data/apiHooks';
3232
import { ToastContext } from '../../generic/toast-context';
3333
import PublishConfirmationModal from '../components/PublishConfirmationModal';
34+
import { title } from '../../schedule-and-details/__mocks__/courseDetails';
3435

3536
const AddComponentWidget = () => {
3637
const intl = useIntl();
@@ -109,6 +110,7 @@ const ComponentInfo = () => {
109110
sidebarComponentInfo,
110111
sidebarAction,
111112
defaultTab,
113+
disabledTabs,
112114
} = useSidebarContext();
113115
const [
114116
isPublishConfirmationOpen,
@@ -155,6 +157,18 @@ const ComponentInfo = () => {
155157
});
156158
}, [publishComponent, showToast, intl]);
157159

160+
const renderTab = React.useCallback((tab: ComponentInfoTab, component: React.ReactNode, title: string) => {
161+
if (disabledTabs.includes(tab)) {
162+
// For some reason, returning anything other than empty list breaks the tab style
163+
return [];
164+
}
165+
return (
166+
<Tab eventKey={tab} title={title}>
167+
{component}
168+
</Tab>
169+
);
170+
}, [disabledTabs, defaultTab]);
171+
158172
return (
159173
<>
160174
<Stack>
@@ -186,15 +200,9 @@ const ComponentInfo = () => {
186200
activeKey={tab}
187201
onSelect={setSidebarTab}
188202
>
189-
<Tab eventKey={COMPONENT_INFO_TABS.Preview} title={intl.formatMessage(messages.previewTabTitle)}>
190-
<ComponentPreview />
191-
</Tab>
192-
<Tab eventKey={COMPONENT_INFO_TABS.Manage} title={intl.formatMessage(messages.manageTabTitle)}>
193-
<ComponentManagement />
194-
</Tab>
195-
<Tab eventKey={COMPONENT_INFO_TABS.Details} title={intl.formatMessage(messages.detailsTabTitle)}>
196-
<ComponentDetails />
197-
</Tab>
203+
{renderTab(COMPONENT_INFO_TABS.Preview, <ComponentPreview />, intl.formatMessage(messages.previewTabTitle))}
204+
{renderTab(COMPONENT_INFO_TABS.Manage, <ComponentManagement />, intl.formatMessage(messages.manageTabTitle))}
205+
{renderTab(COMPONENT_INFO_TABS.Details, <ComponentDetails />, intl.formatMessage(messages.detailsTabTitle))}
198206
</Tabs>
199207
</Stack>
200208
<PublishConfirmationModal

src/library-authoring/units/LibraryUnitPage.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,21 @@ export const LibraryUnitPage = () => {
173173
unitId,
174174
componentId,
175175
} = useLibraryContext();
176-
const { sidebarComponentInfo, openInfoSidebar, setDefaultTab } = useSidebarContext();
177-
setDefaultTab(COMPONENT_INFO_TABS.Manage);
176+
const {
177+
sidebarComponentInfo,
178+
openInfoSidebar,
179+
setDefaultTab,
180+
setDisabledTabs,
181+
} = useSidebarContext();
182+
183+
useEffect(() => {
184+
setDefaultTab(COMPONENT_INFO_TABS.Manage);
185+
setDisabledTabs([COMPONENT_INFO_TABS.Preview]);
186+
return () => {
187+
setDefaultTab(COMPONENT_INFO_TABS.Preview);
188+
setDisabledTabs([])
189+
};
190+
}, [setDefaultTab, setDisabledTabs]);
178191

179192
useEffect(() => {
180193
openInfoSidebar(componentId);

0 commit comments

Comments
 (0)