Skip to content

Commit e1c78dd

Browse files
fix: fixed limited content visibility due to oversized sidebar (#692)
* fix: fixed limited content visibility due to oversized sidebar * refactor: changed names of constants --------- Co-authored-by: Awais Ansari <[email protected]>
1 parent f282da5 commit e1c78dd

File tree

10 files changed

+40
-31
lines changed

10 files changed

+40
-31
lines changed

Diff for: src/discussions/content-unavailable/ContentUnavailable.jsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import { useIntl } from '@edx/frontend-platform/i18n';
1010

1111
import ContentUnavailableIcon from '../../assets/ContentUnavailable';
1212
import selectCourseTabs from '../../components/NavigationBar/data/selectors';
13-
import { useIsOnDesktop, useIsOnXLDesktop } from '../data/hooks';
13+
import { useIsOnTablet, useIsOnXLDesktop } from '../data/hooks';
1414
import messages from '../messages';
1515

1616
const ContentUnavailable = ({ subTitleMessage }) => {
1717
const intl = useIntl();
18-
const isOnDesktop = useIsOnDesktop();
18+
const isOnTabletorDesktop = useIsOnTablet();
1919
const isOnXLDesktop = useIsOnXLDesktop();
2020
const { courseId } = useSelector(selectCourseTabs);
2121

@@ -26,8 +26,8 @@ const ContentUnavailable = ({ subTitleMessage }) => {
2626
return (
2727
<div className="min-content-height justify-content-center align-items-center d-flex w-100 flex-column bg-white">
2828
<div className={classNames('d-flex flex-column align-items-center', {
29-
'content-unavailable-desktop': isOnDesktop || isOnXLDesktop,
30-
'py-0 px-3': !isOnDesktop && !isOnXLDesktop,
29+
'content-unavailable-desktop': isOnTabletorDesktop || isOnXLDesktop,
30+
'py-0 px-3': !isOnTabletorDesktop && !isOnXLDesktop,
3131
})}
3232
>
3333
<ContentUnavailableIcon />

Diff for: src/discussions/data/hooks.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,17 @@ export function useRedirectToThread(courseId, enableInContextSidebar) {
131131

132132
export function useIsOnDesktop() {
133133
const windowSize = useWindowSize();
134-
return windowSize.width >= breakpoints.medium.minWidth;
134+
return windowSize.width >= breakpoints.medium.maxWidth;
135+
}
136+
137+
export function useIsOnTablet() {
138+
const windowSize = useWindowSize();
139+
return windowSize.width >= breakpoints.small.maxWidth;
135140
}
136141

137142
export function useIsOnXLDesktop() {
138143
const windowSize = useWindowSize();
139-
return windowSize.width >= breakpoints.extraLarge.minWidth;
144+
return windowSize.width >= breakpoints.extraLarge.maxWidth;
140145
}
141146

142147
/**

Diff for: src/discussions/discussions-home/DiscussionSidebar.jsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import {
1313
import Spinner from '../../components/Spinner';
1414
import { RequestStatus, Routes as ROUTES } from '../../data/constants';
1515
import DiscussionContext from '../common/context';
16-
import { useContainerSize, useIsOnDesktop, useIsOnXLDesktop } from '../data/hooks';
16+
import {
17+
useContainerSize, useIsOnDesktop, useIsOnTablet, useIsOnXLDesktop,
18+
} from '../data/hooks';
1719
import { selectConfigLoadingStatus, selectEnableInContext } from '../data/selectors';
1820

1921
const TopicPostsView = lazy(() => import('../in-context-topics/TopicPostsView'));
@@ -26,6 +28,7 @@ const LegacyTopicsView = lazy(() => import('../topics/TopicsView'));
2628
const DiscussionSidebar = ({ displaySidebar, postActionBarRef }) => {
2729
const isOnDesktop = useIsOnDesktop();
2830
const isOnXLDesktop = useIsOnXLDesktop();
31+
const isOnTablet = useIsOnTablet();
2932
const { enableInContextSidebar } = useContext(DiscussionContext);
3033
const enableInContext = useSelector(selectEnableInContext);
3134
const configStatus = useSelector(selectConfigLoadingStatus);
@@ -50,7 +53,8 @@ const DiscussionSidebar = ({ displaySidebar, postActionBarRef }) => {
5053
'd-none': !displaySidebar,
5154
'd-flex overflow-auto box-shadow-centered-1': displaySidebar,
5255
'w-100': !isOnDesktop,
53-
'w-25 sidebar-desktop-width': isOnDesktop && !isOnXLDesktop,
56+
'sidebar-desktop-width': isOnDesktop && !isOnXLDesktop,
57+
'sidebar-tablet-width': isOnTablet && !isOnDesktop,
5458
'w-25 sidebar-XL-width': isOnXLDesktop,
5559
'min-content-height': !enableInContextSidebar,
5660
})}

Diff for: src/discussions/discussions-home/DiscussionsHome.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { ALL_ROUTES, DiscussionProvider, Routes as ROUTES } from '../../data/con
1616
import DiscussionContext from '../common/context';
1717
import ContentUnavailable from '../content-unavailable/ContentUnavailable';
1818
import {
19-
useCourseBlockData, useCourseDiscussionData, useIsOnDesktop, useRedirectToThread, useSidebarVisible,
19+
useCourseBlockData, useCourseDiscussionData, useIsOnTablet, useRedirectToThread, useSidebarVisible,
2020
} from '../data/hooks';
2121
import { selectDiscussionProvider, selectEnableInContext, selectIsUserLearner } from '../data/selectors';
2222
import { EmptyLearners, EmptyTopics } from '../empty-posts';
@@ -51,7 +51,7 @@ const DiscussionsHome = () => {
5151
const page = pageParams?.page || null;
5252
const matchPattern = ALL_ROUTES.find((route) => matchPath({ path: route }, location.pathname));
5353
const { params } = useMatch(matchPattern);
54-
const isOnDesktop = useIsOnDesktop();
54+
const isOnTabletorDesktop = useIsOnTablet();
5555
let displaySidebar = useSidebarVisible();
5656
const enableInContextSidebar = Boolean(new URLSearchParams(location.search).get('inContextSidebar') !== null);
5757
const {
@@ -66,7 +66,7 @@ const DiscussionsHome = () => {
6666
If the window is larger than a particular size, show the sidebar for navigating between posts/topics.
6767
However, for smaller screens or embeds, only show the sidebar if the content area isn't displayed. */
6868
const displayContentArea = (postId || postEditorVisible || (learnerUsername && postId));
69-
if (displayContentArea) { displaySidebar = isOnDesktop; }
69+
if (displayContentArea) { displaySidebar = isOnTabletorDesktop; }
7070

7171
const discussionContextValue = useMemo(() => ({
7272
page,

Diff for: src/discussions/empty-posts/EmptyLearners.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import React from 'react';
22

33
import { useIntl } from '@edx/frontend-platform/i18n';
44

5-
import { useIsOnDesktop } from '../data/hooks';
5+
import { useIsOnTablet } from '../data/hooks';
66
import messages from '../messages';
77
import EmptyPage from './EmptyPage';
88

99
const EmptyLearners = () => {
1010
const intl = useIntl();
11-
const isOnDesktop = useIsOnDesktop();
11+
const isOnTabletorDesktop = useIsOnTablet();
1212

13-
if (!isOnDesktop) {
13+
if (!isOnTabletorDesktop) {
1414
return null;
1515
}
1616

Diff for: src/discussions/empty-posts/EmptyPosts.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useDispatch, useSelector } from 'react-redux';
55

66
import { useIntl } from '@edx/frontend-platform/i18n';
77

8-
import { useIsOnDesktop } from '../data/hooks';
8+
import { useIsOnTablet } from '../data/hooks';
99
import { selectAreThreadsFiltered, selectPostThreadCount } from '../data/selectors';
1010
import messages from '../messages';
1111
import { showPostEditor } from '../posts/data';
@@ -15,7 +15,7 @@ import EmptyPage from './EmptyPage';
1515
const EmptyPosts = ({ subTitleMessage }) => {
1616
const intl = useIntl();
1717
const dispatch = useDispatch();
18-
const isOnDesktop = useIsOnDesktop();
18+
const isOnTabletorDesktop = useIsOnTablet();
1919
const isFiltered = useSelector(selectAreThreadsFiltered);
2020
const totalThreads = useSelector(selectPostThreadCount);
2121

@@ -31,7 +31,7 @@ const EmptyPosts = ({ subTitleMessage }) => {
3131

3232
const isEmpty = [0, null].includes(totalThreads) && !isFiltered;
3333

34-
if (!(isOnDesktop || isEmpty)) {
34+
if (!(isOnTabletorDesktop || isEmpty)) {
3535
return null;
3636
} if (isEmpty) {
3737
subTitle = subTitleMessage;

Diff for: src/discussions/empty-posts/EmptyTopics.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useParams } from 'react-router-dom';
55

66
import { useIntl } from '@edx/frontend-platform/i18n';
77

8-
import { useIsOnDesktop, useTotalTopicThreadCount } from '../data/hooks';
8+
import { useIsOnTablet, useTotalTopicThreadCount } from '../data/hooks';
99
import { selectTopicThreadCount } from '../data/selectors';
1010
import messages from '../messages';
1111
import { showPostEditor } from '../posts/data';
@@ -16,7 +16,7 @@ const EmptyTopics = () => {
1616
const intl = useIntl();
1717
const { topicId } = useParams();
1818
const dispatch = useDispatch();
19-
const isOnDesktop = useIsOnDesktop();
19+
const isOnTabletorDesktop = useIsOnTablet();
2020
const hasGlobalThreads = useTotalTopicThreadCount() > 0;
2121
const topicThreadCount = useSelector(selectTopicThreadCount(topicId));
2222

@@ -30,7 +30,7 @@ const EmptyTopics = () => {
3030
let action;
3131
let actionText;
3232

33-
if (!isOnDesktop) {
33+
if (!isOnTabletorDesktop) {
3434
return null;
3535
}
3636

Diff for: src/discussions/in-context-topics/components/EmptyTopics.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { useParams } from 'react-router-dom';
66
import { useIntl } from '@edx/frontend-platform/i18n';
77

88
import DiscussionContext from '../../common/context';
9-
import { useIsOnDesktop } from '../../data/hooks';
9+
import { useIsOnTablet } from '../../data/hooks';
1010
import { selectPostThreadCount } from '../../data/selectors';
1111
import EmptyPage from '../../empty-posts/EmptyPage';
1212
import messages from '../../messages';
@@ -17,7 +17,7 @@ const EmptyTopics = () => {
1717
const intl = useIntl();
1818
const { category, topicId } = useParams();
1919
const dispatch = useDispatch();
20-
const isOnDesktop = useIsOnDesktop();
20+
const isOnTabletorDesktop = useIsOnTablet();
2121
const { enableInContextSidebar } = useContext(DiscussionContext);
2222
const courseWareThreadsCount = useSelector(selectCourseWareThreadsCount(category));
2323
const topicThreadsCount = useSelector(selectPostThreadCount);
@@ -34,7 +34,7 @@ const EmptyTopics = () => {
3434
let action;
3535
let actionText;
3636

37-
if (!isOnDesktop) {
37+
if (!isOnTabletorDesktop) {
3838
return null;
3939
}
4040

Diff for: src/discussions/post-comments/PostCommentsView.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import Spinner from '../../components/Spinner';
1212
import { PostsPages } from '../../data/constants';
1313
import useDispatchWithState from '../../data/hooks';
1414
import DiscussionContext from '../common/context';
15-
import { useIsOnDesktop } from '../data/hooks';
15+
import { useIsOnTablet } from '../data/hooks';
1616
import { EmptyPage } from '../empty-posts';
1717
import { Post } from '../posts';
1818
import { fetchThread } from '../posts/data/thunks';
@@ -29,7 +29,7 @@ const PostCommentsView = () => {
2929
const intl = useIntl();
3030
const navigate = useNavigate();
3131
const location = useLocation();
32-
const isOnDesktop = useIsOnDesktop();
32+
const isOnTabletorDesktop = useIsOnTablet();
3333
const [addingResponse, setAddingResponse] = useState(false);
3434
const [isLoading, submitDispatch] = useDispatchWithState();
3535
const {
@@ -84,7 +84,7 @@ const PostCommentsView = () => {
8484

8585
return (
8686
<PostCommentsContext.Provider value={postCommentsContextValue}>
87-
{!isOnDesktop && (
87+
{!isOnTabletorDesktop && (
8888
enableInContextSidebar ? (
8989
<>
9090
<div className="px-4 py-1.5 bg-white">

Diff for: src/index.scss

+5-5
Original file line numberDiff line numberDiff line change
@@ -229,15 +229,15 @@ header {
229229
}
230230

231231
.sidebar-desktop-width {
232-
min-width: 29rem !important;
232+
max-width: 28rem !important;
233+
}
233234

234-
@include media-breakpoint-down(lg) {
235-
min-width: 25rem !important;
236-
}
235+
.sidebar-tablet-width {
236+
max-width: 20rem !important;
237237
}
238238

239239
.sidebar-XL-width {
240-
min-width: 29rem !important;
240+
min-width: 35rem !important;
241241
}
242242

243243
.filter-menu:focus-visible {

0 commit comments

Comments
 (0)