Skip to content

Commit 46889c2

Browse files
authored
feat(AU-2375): Update breadcrumbs and outline navigation bar UI (openedx#1582)
* feat: extend CourseOutlineSidebarTriggerSlot props * feat: Remove courseId from CourseOutlineSidebarTriggerPlugin props * feat: update useContextId to use courseware data along with coursehome * feat: extend useCourseOutlineSidebar values with sequenceStatus
1 parent 3cbbb02 commit 46889c2

File tree

6 files changed

+36
-3
lines changed

6 files changed

+36
-3
lines changed

src/courseware/course/sequence/Sequence.jsx

+7-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const Sequence = ({
4343
originalUserIsStaff,
4444
} = useModel('courseHomeMeta', courseId);
4545
const sequence = useModel('sequences', sequenceId);
46+
const section = useModel('sections', sequence ? sequence.sectionId : null);
4647
const unit = useModel('units', unitId);
4748
const sequenceStatus = useSelector(state => state.courseware.sequenceStatus);
4849
const sequenceMightBeUnit = useSelector(state => state.courseware.sequenceMightBeUnit);
@@ -161,7 +162,12 @@ const Sequence = ({
161162
const defaultContent = (
162163
<>
163164
<div className="sequence-container d-inline-flex flex-row w-100">
164-
<CourseOutlineSidebarTriggerSlot />
165+
<CourseOutlineSidebarTriggerSlot
166+
sectionId={section ? section.id : null}
167+
sequenceId={sequenceId}
168+
isStaff={isStaff}
169+
unitId={unitId}
170+
/>
165171
<CourseOutlineSidebarSlot />
166172
<div className="sequence w-100">
167173
{!isEnabledOutlineSidebar && (

src/courseware/course/sidebar/sidebars/course-outline/hooks.jsx

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
getCourseOutlineStatus,
1515
getSequenceId,
1616
getCourseOutline,
17+
getSequenceStatus,
1718
} from '@src/courseware/data/selectors';
1819
import { ID } from './constants';
1920

@@ -24,6 +25,7 @@ export const useCourseOutlineSidebar = () => {
2425
const { enableNavigationSidebar: isEnabledSidebar } = useSelector(getCoursewareOutlineSidebarSettings);
2526
const courseOutlineShouldUpdate = useSelector(getCourseOutlineShouldUpdate);
2627
const courseOutlineStatus = useSelector(getCourseOutlineStatus);
28+
const sequenceStatus = useSelector(getSequenceStatus);
2729
const activeSequenceId = useSelector(getSequenceId);
2830
const { sections = {}, sequences = {}, units = {} } = useSelector(getCourseOutline);
2931

@@ -113,5 +115,6 @@ export const useCourseOutlineSidebar = () => {
113115
sequences,
114116
units,
115117
handleUnitClick,
118+
sequenceStatus,
116119
};
117120
};

src/courseware/data/selectors.js

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export const getCourseOutline = state => state.courseware.courseOutline;
1616

1717
export const getCourseOutlineStatus = state => state.courseware.courseOutlineStatus;
1818

19+
export const getSequenceStatus = state => state.courseware.sequenceStatus;
20+
1921
export const getCoursewareOutlineSidebarSettings = state => state.courseware.coursewareOutlineSidebarSettings;
2022

2123
export const getCourseOutlineShouldUpdate = state => state.courseware.courseOutlineShouldUpdate;

src/data/hooks.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ import { useSelector } from 'react-redux';
22
import { RootState } from '../store';
33

44
// eslint-disable-next-line import/prefer-default-export
5-
export const useContextId = () => useSelector<RootState>(state => state.courseHome.courseId);
5+
export const useContextId = () => useSelector<RootState>(
6+
state => state.courseware.courseId ?? state.courseHome.courseId,
7+
);

src/plugin-slots/CourseOutlineSidebarTriggerSlot/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# Course Outline Sidebar Trigger Slot
22

33
### Slot ID: `course_outline_sidebar_trigger_slot`
4+
### Props:
5+
* `sectionId`
6+
* `sequenceId`
7+
* `unitId`
8+
* `isStaff`
49

510
## Description
611

src/plugin-slots/CourseOutlineSidebarTriggerSlot/index.tsx

+16-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,27 @@ import { PluginSlot } from '@openedx/frontend-plugin-framework';
44

55
import CourseOutlineTrigger from '../../courseware/course/sidebar/sidebars/course-outline/CourseOutlineTrigger';
66

7-
export const CourseOutlineSidebarTriggerSlot : React.FC = () => (
7+
interface Props {
8+
sectionId?: string;
9+
sequenceId?: string;
10+
unitId?: string;
11+
isStaff?: boolean;
12+
}
13+
14+
export const CourseOutlineSidebarTriggerSlot : React.FC<Props> = ({
15+
sectionId, sequenceId, unitId, isStaff,
16+
}) => (
817
<PluginSlot
918
id="course_outline_sidebar_trigger_slot"
1019
slotOptions={{
1120
mergeProps: true,
1221
}}
22+
pluginProps={{
23+
sectionId,
24+
sequenceId,
25+
unitId,
26+
isStaff,
27+
}}
1328
>
1429
<CourseOutlineTrigger isMobileView={false} />
1530
</PluginSlot>

0 commit comments

Comments
 (0)