Skip to content

Commit 799e57f

Browse files
fix: fixed width issues of old and new sidebar (openedx#1374)
Co-authored-by: Awais Ansari <[email protected]>
1 parent cf3a91d commit 799e57f

File tree

5 files changed

+51
-24
lines changed

5 files changed

+51
-24
lines changed

src/courseware/course/new-sidebar/sidebars/discussions-notifications/DiscussionsNotificationsSidebar.jsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@ const DiscussionsNotificationsSidebar = () => {
1414
const { hideNotificationbar } = useContext(SidebarContext);
1515

1616
return (
17-
<div className="sticky-top vh-100">
18-
<SidebarBase
19-
ariaLabel={intl.formatMessage(messages.discussionNotificationTray)}
20-
sidebarId={ID}
21-
className="d-flex flex-column flex-fill"
22-
showTitleBar={false}
23-
showBorder={false}
24-
>
17+
<SidebarBase
18+
ariaLabel={intl.formatMessage(messages.discussionNotificationTray)}
19+
sidebarId={ID}
20+
className="d-flex flex-column flex-fill"
21+
showTitleBar={false}
22+
showBorder={false}
23+
>
24+
<div className="sticky-top vh-100">
2525
<NotificationTray />
2626
{!hideNotificationbar && <div className="my-1.5" />}
2727
<DiscussionsSidebar />
28-
</SidebarBase>
29-
</div>
28+
</div>
29+
</SidebarBase>
3030
);
3131
};
3232

src/courseware/course/sequence/sequence-navigation/SequenceNavigationTabs.jsx

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import classNames from 'classnames';
55
import UnitButton from './UnitButton';
66
import SequenceNavigationDropdown from './SequenceNavigationDropdown';
77
import useIndexOfLastVisibleChild from '../../../../generic/tabs/useIndexOfLastVisibleChild';
8-
import { useIsOnXLDesktop, useIsSidebarOpen } from './hooks';
8+
import {
9+
useIsOnXLDesktop, useIsOnMediumDesktop, useIsOnLargeDesktop, useIsSidebarOpen,
10+
} from './hooks';
911

1012
const SequenceNavigationTabs = ({
1113
unitIds, unitId, showCompletion, onNavigate,
@@ -15,21 +17,28 @@ const SequenceNavigationTabs = ({
1517
indexOfLastVisibleChild,
1618
containerRef,
1719
invisibleStyle,
18-
] = useIndexOfLastVisibleChild();
20+
] = useIndexOfLastVisibleChild(isSidebarOpen);
1921
const isOnXLDesktop = useIsOnXLDesktop();
20-
const shouldDisplayDropdown = indexOfLastVisibleChild === -1;
22+
const isOnLargeDesktop = useIsOnLargeDesktop();
23+
const isOnMediumDesktop = useIsOnMediumDesktop();
24+
const shouldDisplayDropdown = indexOfLastVisibleChild === -1 || indexOfLastVisibleChild < unitIds.length - 1;
2125

2226
return (
23-
<div style={{ flexBasis: '100%', minWidth: 0 }}>
27+
<div
28+
style={{ flexBasis: '100%', minWidth: 0 }}
29+
className={classNames({
30+
'navigation-tab-width-xl': isOnXLDesktop && isSidebarOpen,
31+
'navigation-tab-width-large': isOnLargeDesktop && isSidebarOpen,
32+
'navigation-tab-width-medium': isOnMediumDesktop && isSidebarOpen,
33+
})}
34+
>
2435
<div
25-
ref={containerRef}
26-
className={classNames('sequence-navigation-tabs-container', {
27-
'navigation-tab-width': isOnXLDesktop && isSidebarOpen,
28-
})}
36+
className="sequence-navigation-tabs-container"
2937
>
3038
<div
3139
className="sequence-navigation-tabs d-flex flex-grow-1"
3240
style={shouldDisplayDropdown ? invisibleStyle : null}
41+
ref={containerRef}
3342
>
3443
{unitIds.map(buttonUnitId => (
3544
<UnitButton

src/courseware/course/sequence/sequence-navigation/hooks.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,19 @@ export function useSequenceNavigationMetadata(currentSequenceId, currentUnitId)
7373
};
7474
}
7575

76+
export function useIsOnMediumDesktop() {
77+
const windowSize = useWindowSize();
78+
return windowSize.width >= breakpoints.medium.minWidth && windowSize.width < breakpoints.extraLarge.minWidth;
79+
}
80+
81+
export function useIsOnLargeDesktop() {
82+
const windowSize = useWindowSize();
83+
return windowSize.width >= breakpoints.extraLarge.minWidth && windowSize.width < breakpoints.extraLarge.maxWidth;
84+
}
85+
7686
export function useIsOnXLDesktop() {
7787
const windowSize = useWindowSize();
78-
return windowSize.width >= breakpoints.extraLarge.minWidth;
88+
return windowSize.width >= breakpoints.extraLarge.maxWidth;
7989
}
8090

8191
export function useIsSidebarOpen(unitId) {
@@ -84,6 +94,6 @@ export function useIsSidebarOpen(unitId) {
8494
const { currentSidebar } = useContext(isNewDiscussionSidebarViewEnabled ? NewSidebarContext : SidebarContext);
8595
const topic = useModel('discussionTopics', unitId);
8696

87-
return (currentSidebar === WIDGETS.NOTIFICATIONS) || (
97+
return (currentSidebar === WIDGETS.NOTIFICATIONS) || (currentSidebar === 'DISCUSSIONS_NOTIFICATIONS') || (
8898
currentSidebar === WIDGETS.DISCUSSIONS && !!(topic?.id || topic?.enabledInContext));
8999
}

src/generic/tabs/useIndexOfLastVisibleChild.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const invisibleStyle = {
3030
* included when determining which children will fit or not. Usage of this ref
3131
* is optional.
3232
*/
33-
export default function useIndexOfLastVisibleChild() {
33+
export default function useIndexOfLastVisibleChild(isSidebarOpen) {
3434
const containerElementRef = useRef(null);
3535
const overflowElementRef = useRef(null);
3636
const containingRectRef = useRef({});
@@ -72,7 +72,7 @@ export default function useIndexOfLastVisibleChild() {
7272

7373
setIndexOfLastVisibleChild(nextIndexOfLastVisibleChild);
7474
// eslint-disable-next-line react-hooks/exhaustive-deps
75-
}, [windowSize, containerElementRef.current]);
75+
}, [windowSize, containerElementRef.current, isSidebarOpen]);
7676

7777
return [indexOfLastVisibleChild, containerElementRef, invisibleStyle, overflowElementRef];
7878
}

src/index.scss

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,16 @@
173173
}
174174
}
175175

176-
.navigation-tab-width {
177-
max-width: 46rem;
176+
.navigation-tab-width-xl {
177+
max-width: 47rem;
178+
}
179+
180+
.navigation-tab-width-large {
181+
max-width: 28rem;
182+
}
183+
184+
.navigation-tab-width-medium{
185+
max-width: 23.5rem;
178186
}
179187

180188
.sequence-navigation-dropdown {

0 commit comments

Comments
 (0)