From f79bebceebec406ceedc8361556a7923a450ffe1 Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 23 Nov 2023 17:41:07 +0530 Subject: [PATCH] feat: add subsection component refactor: update publish modal to handle subsections and units refactor: rename current section state and handlers refactor: generalize edit title for section, subsection and unit feat: generalize delete modal feat: generalize publish modal refactor: use currentSection and currentSubsection to improve delete item feat: generalize duplication functionality feat: generalize add new item for sections and subsections test: fix subsection tests fix: lint issues and test arguments test: fix card header, delete and publish modal tests fix: invalid use of delete subsection query for unit refactor: use current section for highlights modal feat: add auto scroll to subsection and improve scroll behaviour fix: jsdoc types --- src/course-outline/CourseOutline.jsx | 32 +++- src/course-outline/CourseOutline.scss | 1 + src/course-outline/CourseOutline.test.jsx | 145 ++++++++++++++---- .../__mocks__/courseSubsection.js | 101 ++++++++++++ src/course-outline/__mocks__/index.js | 1 + src/course-outline/card-header/CardHeader.jsx | 40 ++--- .../card-header/CardHeader.scss | 8 +- .../card-header/CardHeader.test.jsx | 17 +- .../configure-modal/ConfigureModal.jsx | 4 +- src/course-outline/constants.js | 9 +- src/course-outline/data/api.js | 44 +++--- src/course-outline/data/selectors.js | 2 + src/course-outline/data/slice.js | 58 ++++++- src/course-outline/data/thunk.js | 141 ++++++++++++++--- .../delete-modal/DeleteModal.jsx | 11 +- .../delete-modal/DeleteModal.test.jsx | 59 ++++++- src/course-outline/delete-modal/messages.js | 4 +- .../highlights-modal/HighlightsModal.test.jsx | 6 +- src/course-outline/hooks.jsx | 69 +++++++-- .../publish-modal/PublishModal.jsx | 34 ++-- .../publish-modal/PublishModal.test.jsx | 15 +- src/course-outline/publish-modal/messages.js | 2 +- .../section-card/SectionCard.jsx | 49 +++--- .../section-card/SectionCard.scss | 12 ++ .../section-card/SectionCard.test.jsx | 1 + .../subsection-card/SubsectionCard.jsx | 145 ++++++++++++++++++ .../subsection-card/SubsectionCard.scss | 20 +++ .../subsection-card/SubsectionCard.test.jsx | 81 ++++++++++ .../subsection-card/messages.js | 10 ++ src/course-outline/utils.jsx | 36 +++-- 30 files changed, 943 insertions(+), 214 deletions(-) create mode 100644 src/course-outline/__mocks__/courseSubsection.js create mode 100644 src/course-outline/subsection-card/SubsectionCard.jsx create mode 100644 src/course-outline/subsection-card/SubsectionCard.scss create mode 100644 src/course-outline/subsection-card/SubsectionCard.test.jsx create mode 100644 src/course-outline/subsection-card/messages.js diff --git a/src/course-outline/CourseOutline.jsx b/src/course-outline/CourseOutline.jsx index ccdd7fce0..eabe68076 100644 --- a/src/course-outline/CourseOutline.jsx +++ b/src/course-outline/CourseOutline.jsx @@ -27,6 +27,7 @@ import OutlineSideBar from './outline-sidebar/OutlineSidebar'; import StatusBar from './status-bar/StatusBar'; import EnableHighlightsModal from './enable-highlights-modal/EnableHighlightsModal'; import SectionCard from './section-card/SectionCard'; +import SubsectionCard from './subsection-card/SubsectionCard'; import HighlightsModal from './highlights-modal/HighlightsModal'; import EmptyPlaceholder from './empty-placeholder/EmptyPlaceholder'; import PublishModal from './publish-modal/PublishModal'; @@ -71,12 +72,14 @@ const CourseOutline = ({ courseId }) => { handleInternetConnectionFailed, handleOpenHighlightsModal, handleHighlightsFormSubmit, - handlePublishSectionSubmit, handleConfigureSectionSubmit, - handleEditSectionSubmit, - handleDeleteSectionSubmit, + handlePublishItemSubmit, + handleEditSubmit, + handleDeleteItemSubmit, handleDuplicateSectionSubmit, + handleDuplicateSubsectionSubmit, handleNewSectionSubmit, + handleNewSubsectionSubmit, } = useCourseOutline({ courseId }); useEffect(() => { @@ -158,11 +161,26 @@ const CourseOutline = ({ courseId }) => { onOpenPublishModal={openPublishModal} onOpenConfigureModal={openConfigureModal} onOpenDeleteModal={openDeleteModal} - onEditSectionSubmit={handleEditSectionSubmit} + onEditSectionSubmit={handleEditSubmit} onDuplicateSubmit={handleDuplicateSectionSubmit} isSectionsExpanded={isSectionsExpanded} + onNewSubsectionSubmit={handleNewSubsectionSubmit} ref={listRef} - /> + > + {section.childInfo.children.map((subsection) => ( + + ))} + ))}