@cuemath/leap 3.1.2 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/homework/hw-card-list/api/get-homeworks.js +1 -1
- package/dist/features/homework/hw-card-list/api/get-homeworks.js.map +1 -1
- package/dist/features/homework/hw-card-list/hw-card-list-utils.js +8 -0
- package/dist/features/homework/hw-card-list/hw-card-list-utils.js.map +1 -0
- package/dist/features/homework/hw-card-list/hw-card-list-view.js +144 -112
- package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +1 -1
- package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +199 -262
- package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
- package/dist/features/journey/hooks/use-home-page-journey/use-home-page-journey.js +15 -15
- package/dist/features/journey/hooks/use-home-page-journey/use-home-page-journey.js.map +1 -1
- package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js +48 -47
- package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/api/get-past-milestone-count.js +18 -0
- package/dist/features/milestone/milestone-list-container/api/get-past-milestone-count.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +100 -121
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js +15 -14
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +52 -51
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/index.d.ts +38 -13
- package/dist/index.js +146 -143
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-home-page-journey.js","sources":["../../../../../src/features/journey/hooks/use-home-page-journey/use-home-page-journey.tsx"],"sourcesContent":["import type { INodeDataProps } from '../../../chapters-v2/comps/node-card/node-card-types';\nimport type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\nimport type { TCourseStream } from '../../../milestone/create/milestone-create-types';\nimport type { IArrowTooltipProps } from '../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { ICoachmarkProps } from '../../use-journey/journey-context-types';\nimport type { IHomepageStartJourneyProps } from './homepage-journey-types';\n\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport ChapterItem from '../../../chapters/chapters-list/chapter-item/chapter-item';\nimport HomeworkCard from '../../../homework/homework-card';\nimport HwCardListView from '../../../homework/hw-card-list/hw-card-list-view';\nimport MilestoneListContainer from '../../../milestone/milestone-list-container/milestone-list-container';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport { JOURNEY_ID_STUDENT } from '../../journey-id/journey-id-student';\nimport { IndicatorType } from '../../use-journey/constants';\nimport { useJourney } from '../../use-journey/use-journey';\nimport { HOMEWORK_DETAILS } from './home-page-homeworks-mock';\nimport { RECENT_CHAPTERS } from './recent-chapters-mock';\nimport { ChaptersWrapper, ELementWrapper } from './styles';\nimport TooltipItem from './tooltip-item';\n\nexport const useHomePageJourney = () => {\n const journeyId = JOURNEY_ID_STUDENT.HOMEPAGE_JOURNEY;\n\n const homepageRef = useRef<HTMLDivElement>(null);\n const homeworkRef = useRef<HTMLDivElement>(null);\n const recentChaptersRef = useRef<HTMLDivElement>(null);\n const timerRefs = useRef<ReturnType<typeof setTimeout>[]>([]);\n const { nextCoachmark, setJourney, endJourney } = useJourney();\n\n const emptyFunction = useCallback(() => null, []);\n\n const handleEndJourney = useCallback(() => {\n endJourney(journeyId);\n document.body.style.overflow = 'unset';\n }, [endJourney, journeyId]);\n\n const handleNextCoachmark = useCallback(() => {\n nextCoachmark(journeyId, false, 0, true);\n }, [nextCoachmark, journeyId]);\n\n const startJourney = useCallback(\n ({ studentId, stream, userType }: IHomepageStartJourneyProps) => {\n const { title, subtext } = HOMEWORK_DETAILS[0] as INodeDataProps;\n const isStudent = userType === 'STUDENT';\n\n if (!homepageRef?.current || !homeworkRef?.current) {\n return;\n }\n\n const homepageSteps: ICoachmarkProps[] = [\n {\n originalElementToHighlightRef: homepageRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: (\n <FlexView\n $flexGapX={2.5}\n $marginBottomX={8}\n $background=\"WHITE\"\n $widthX={47}\n $gutterX={1}\n >\n <HwCardListView\n userType={userType}\n studentId={studentId}\n isHwProcessing={false}\n hwDetails={HOMEWORK_DETAILS as INodeDataProps[]}\n onTestStart={emptyFunction}\n onNodeAttempt={emptyFunction}\n onTestPreview={emptyFunction}\n onNodeView={emptyFunction}\n onTestReview={emptyFunction}\n onNodeReview={emptyFunction}\n onNodeUnassign={emptyFunction}\n />\n <FlexView $flexRowGapX={1} ref={recentChaptersRef}>\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n Recent Chapters ({RECENT_CHAPTERS?.length})\n </Text>\n <ChaptersWrapper>\n {RECENT_CHAPTERS.map((chapter, idx) => (\n <ChapterItem\n key={chapter.id}\n chapter={chapter as unknown as IChapterDataProps}\n onChapterClick={emptyFunction}\n itemIndex={idx}\n />\n ))}\n </ChaptersWrapper>\n </FlexView>\n <MilestoneListContainer\n milestoneType=\"ACTIVE\"\n activeMilestoneId={''}\n activeTabId={''}\n canCreatePlan={false}\n courseStream={stream as TCourseStream}\n isClassOngoing={false}\n isStudentPresent={false}\n parentName={''}\n studentId={studentId}\n studentName={''}\n teacherName={''}\n userType={userType}\n //* Callbacks\n onAddChapter={emptyFunction}\n onAddOutcome={emptyFunction}\n onChapterClick={emptyFunction}\n onCreatePlan={emptyFunction}\n onDelete={emptyFunction}\n onDraftPublish={emptyFunction}\n onEdit={emptyFunction}\n onExpandPastMilestones={emptyFunction}\n onNodeView={emptyFunction}\n onNodeReview={emptyFunction}\n onWidgetTabSelection={emptyFunction}\n //* Resource callbacks\n onAssignResources={emptyFunction}\n onNodeReset={emptyFunction}\n onNodeUnassign={emptyFunction}\n //* Tests callbacks\n onCreateMilestoneTest={emptyFunction}\n onTestPreview={emptyFunction}\n onTestReview={emptyFunction}\n />\n </FlexView>\n ),\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: 0,\n tooltipYCoOrdinates: 0,\n backgroundColor: 'BLUE_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n arrowSize: 12,\n width: 264,\n tooltipItem: (\n <TooltipItem\n text={`Welcome to the all new ${isStudent ? 'learning' : 'tutoring'} homepage.`}\n buttonLabel=\"Next\"\n onButtonClick={handleNextCoachmark}\n />\n ),\n } as IArrowTooltipProps,\n },\n {\n originalElementToHighlightRef: homeworkRef,\n elementToHighlight: (\n <ELementWrapper>\n <HwCardListView\n userType={userType}\n studentId={studentId}\n isHwProcessing={false}\n hwDetails={HOMEWORK_DETAILS as INodeDataProps[]}\n onTestStart={emptyFunction}\n onNodeAttempt={emptyFunction}\n onTestPreview={emptyFunction}\n onNodeView={emptyFunction}\n onTestReview={emptyFunction}\n onNodeReview={emptyFunction}\n onNodeUnassign={emptyFunction}\n />\n </ELementWrapper>\n ),\n type: IndicatorType.TOOLTIP,\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: -197,\n tooltipYCoOrdinates: -12,\n arrowXCoOrdinates: -110,\n backgroundColor: 'GREEN_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n width: 264,\n arrowSize: 12,\n tooltipItem: (\n <TooltipItem\n text={`Homework is now easy to access and easy to ${\n isStudent ? 'complete' : 'review'\n }!`}\n buttonLabel=\"Next\"\n onButtonClick={handleNextCoachmark}\n />\n ),\n } as IArrowTooltipProps,\n isActive: false,\n },\n {\n originalElementToHighlightRef: homeworkRef,\n elementToHighlight: (\n <ELementWrapper>\n <HomeworkCard\n isInQueue={false}\n userType={userType}\n header={title}\n subHeader={subtext || ''}\n nodeData={HOMEWORK_DETAILS[0] as INodeDataProps}\n renderAs=\"homework\"\n studentId={studentId}\n shouldOpenOnRight={false}\n />\n </ELementWrapper>\n ),\n type: IndicatorType.TOOLTIP,\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: -35,\n tooltipYCoOrdinates: -7,\n backgroundColor: 'PURPLE_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n arrowXCoOrdinates: -97,\n arrowSize: 12,\n width: 264,\n tooltipItem: (\n <TooltipItem\n text=\"Track homework status and their due dates.\"\n buttonLabel=\"Next\"\n onButtonClick={handleNextCoachmark}\n />\n ),\n } as IArrowTooltipProps,\n isActive: false,\n },\n {\n originalElementToHighlightRef: homepageRef,\n elementToHighlight: (\n <ELementWrapper>\n <FlexView $flexRowGapX={1}>\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n Recent Chapters ({RECENT_CHAPTERS?.length})\n </Text>\n <ChaptersWrapper>\n {RECENT_CHAPTERS.map((chapter, idx) => (\n <ChapterItem\n key={chapter.id}\n chapter={chapter as unknown as IChapterDataProps}\n onChapterClick={emptyFunction}\n itemIndex={idx}\n />\n ))}\n </ChaptersWrapper>\n </FlexView>\n </ELementWrapper>\n ),\n type: IndicatorType.TOOLTIP,\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: -200,\n tooltipYCoOrdinates: -10,\n backgroundColor: 'YELLOW_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n arrowXCoOrdinates: -97,\n arrowSize: 12,\n width: 264,\n tooltipItem: (\n <TooltipItem\n text=\"Access all your recent chapters in one place.\"\n buttonLabel=\"Got it\"\n onButtonClick={handleEndJourney}\n />\n ),\n } as IArrowTooltipProps,\n isActive: false,\n },\n ];\n\n setJourney(journeyId, homepageSteps);\n\n const delayBeforeStart = setTimeout(() => {\n clearTimeout(delayBeforeStart);\n if (userType === 'STUDENT') {\n window.scrollTo(0, 0);\n } else {\n document.getElementById('tab-content-container')?.scrollTo(0, 0);\n }\n document.body.style.overflow = 'hidden';\n handleNextCoachmark();\n }, 200);\n\n timerRefs.current.push(delayBeforeStart); // Store to cleanup later\n },\n [handleEndJourney, emptyFunction, handleNextCoachmark, journeyId, setJourney],\n );\n\n const data = useMemo(\n () => ({\n homepageRef,\n homeworkRef,\n startJourney,\n }),\n [startJourney],\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n timerRefs.current.forEach(timer => clearTimeout(timer));\n timerRefs.current = [];\n };\n }, []);\n\n return data;\n};\n"],"names":["useHomePageJourney","journeyId","JOURNEY_ID_STUDENT","homepageRef","useRef","homeworkRef","recentChaptersRef","timerRefs","nextCoachmark","setJourney","endJourney","useJourney","emptyFunction","useCallback","handleEndJourney","handleNextCoachmark","startJourney","studentId","stream","userType","title","subtext","HOMEWORK_DETAILS","isStudent","homepageSteps","IndicatorType","jsxs","FlexView","jsx","HwCardListView","Text","_a","RECENT_CHAPTERS","ChaptersWrapper","chapter","idx","ChapterItem","MilestoneListContainer","TooltipItem","ELementWrapper","HomeworkCard","_b","delayBeforeStart","data","useMemo","useEffect","timer"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"use-home-page-journey.js","sources":["../../../../../src/features/journey/hooks/use-home-page-journey/use-home-page-journey.tsx"],"sourcesContent":["import type { INodeDataProps } from '../../../chapters-v2/comps/node-card/node-card-types';\nimport type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\nimport type { TCourseStream } from '../../../milestone/create/milestone-create-types';\nimport type { IArrowTooltipProps } from '../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { ICoachmarkProps } from '../../use-journey/journey-context-types';\nimport type { IHomepageStartJourneyProps } from './homepage-journey-types';\n\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport ChapterItem from '../../../chapters/chapters-list/chapter-item/chapter-item';\nimport HomeworkCard from '../../../homework/homework-card';\nimport HwCardListView from '../../../homework/hw-card-list/hw-card-list-view';\nimport MilestoneListContainer from '../../../milestone/milestone-list-container/milestone-list-container';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport { JOURNEY_ID_STUDENT } from '../../journey-id/journey-id-student';\nimport { IndicatorType } from '../../use-journey/constants';\nimport { useJourney } from '../../use-journey/use-journey';\nimport { HOMEWORK_DETAILS } from './home-page-homeworks-mock';\nimport { RECENT_CHAPTERS } from './recent-chapters-mock';\nimport { ChaptersWrapper, ELementWrapper } from './styles';\nimport TooltipItem from './tooltip-item';\n\nexport const useHomePageJourney = () => {\n const journeyId = JOURNEY_ID_STUDENT.HOMEPAGE_JOURNEY;\n\n const homepageRef = useRef<HTMLDivElement>(null);\n const homeworkRef = useRef<HTMLDivElement>(null);\n const recentChaptersRef = useRef<HTMLDivElement>(null);\n const timerRefs = useRef<ReturnType<typeof setTimeout>[]>([]);\n const { nextCoachmark, setJourney, endJourney } = useJourney();\n\n const emptyFunction = useCallback(() => null, []);\n\n const handleEndJourney = useCallback(() => {\n endJourney(journeyId);\n document.body.style.overflow = 'unset';\n }, [endJourney, journeyId]);\n\n const handleNextCoachmark = useCallback(() => {\n nextCoachmark(journeyId, false, 0, true);\n }, [nextCoachmark, journeyId]);\n\n const startJourney = useCallback(\n ({ studentId, stream, userType }: IHomepageStartJourneyProps) => {\n const { title = '', subtext = '' } = HOMEWORK_DETAILS.assigned_homeworks[0] || {};\n const isStudent = userType === 'STUDENT';\n\n if (!homepageRef?.current || !homeworkRef?.current) {\n return;\n }\n\n const homepageSteps: ICoachmarkProps[] = [\n {\n originalElementToHighlightRef: homepageRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: (\n <FlexView\n $flexGapX={2.5}\n $marginBottomX={8}\n $background=\"WHITE\"\n $widthX={47}\n $gutterX={1}\n >\n <HwCardListView\n userType={userType}\n studentId={studentId}\n isHwProcessing={false}\n hwDetails={HOMEWORK_DETAILS}\n onTestStart={emptyFunction}\n onNodeAttempt={emptyFunction}\n onTestPreview={emptyFunction}\n onNodeView={emptyFunction}\n onTestReview={emptyFunction}\n onNodeReview={emptyFunction}\n onNodeUnassign={emptyFunction}\n />\n <FlexView $flexRowGapX={1} ref={recentChaptersRef}>\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n Recent Chapters ({RECENT_CHAPTERS?.length})\n </Text>\n <ChaptersWrapper>\n {RECENT_CHAPTERS.map((chapter, idx) => (\n <ChapterItem\n key={chapter.id}\n chapter={chapter as unknown as IChapterDataProps}\n onChapterClick={emptyFunction}\n itemIndex={idx}\n />\n ))}\n </ChaptersWrapper>\n </FlexView>\n <MilestoneListContainer\n milestoneType=\"ACTIVE\"\n activeMilestoneId={''}\n activeTabId={''}\n canCreatePlan={false}\n courseStream={stream as TCourseStream}\n isClassOngoing={false}\n isStudentPresent={false}\n parentName={''}\n studentId={studentId}\n studentName={''}\n teacherName={''}\n userType={userType}\n //* Callbacks\n onAddChapter={emptyFunction}\n onAddOutcome={emptyFunction}\n onChapterClick={emptyFunction}\n onCreatePlan={emptyFunction}\n onDelete={emptyFunction}\n onDraftPublish={emptyFunction}\n onEdit={emptyFunction}\n onExpandPastMilestones={emptyFunction}\n onNodeView={emptyFunction}\n onNodeReview={emptyFunction}\n onWidgetTabSelection={emptyFunction}\n //* Resource callbacks\n onAssignResources={emptyFunction}\n onNodeReset={emptyFunction}\n onNodeUnassign={emptyFunction}\n //* Tests callbacks\n onCreateMilestoneTest={emptyFunction}\n onTestPreview={emptyFunction}\n onTestReview={emptyFunction}\n />\n </FlexView>\n ),\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: 0,\n tooltipYCoOrdinates: 0,\n backgroundColor: 'BLUE_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n arrowSize: 12,\n width: 264,\n tooltipItem: (\n <TooltipItem\n text={`Welcome to the all new ${isStudent ? 'learning' : 'tutoring'} homepage.`}\n buttonLabel=\"Next\"\n onButtonClick={handleNextCoachmark}\n />\n ),\n } as IArrowTooltipProps,\n },\n {\n originalElementToHighlightRef: homeworkRef,\n elementToHighlight: (\n <ELementWrapper>\n <HwCardListView\n userType={userType}\n studentId={studentId}\n isHwProcessing={false}\n hwDetails={HOMEWORK_DETAILS}\n onTestStart={emptyFunction}\n onNodeAttempt={emptyFunction}\n onTestPreview={emptyFunction}\n onNodeView={emptyFunction}\n onTestReview={emptyFunction}\n onNodeReview={emptyFunction}\n onNodeUnassign={emptyFunction}\n />\n </ELementWrapper>\n ),\n type: IndicatorType.TOOLTIP,\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: -197,\n tooltipYCoOrdinates: -12,\n arrowXCoOrdinates: -110,\n backgroundColor: 'GREEN_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n width: 264,\n arrowSize: 12,\n tooltipItem: (\n <TooltipItem\n text={`Homework is now easy to access and easy to ${\n isStudent ? 'complete' : 'review'\n }!`}\n buttonLabel=\"Next\"\n onButtonClick={handleNextCoachmark}\n />\n ),\n } as IArrowTooltipProps,\n isActive: false,\n },\n {\n originalElementToHighlightRef: homeworkRef,\n elementToHighlight: (\n <ELementWrapper>\n <HomeworkCard\n isInQueue={false}\n userType={userType}\n header={title}\n subHeader={subtext || ''}\n nodeData={HOMEWORK_DETAILS.assigned_homeworks[0] as INodeDataProps}\n renderAs=\"homework\"\n studentId={studentId}\n shouldOpenOnRight={false}\n />\n </ELementWrapper>\n ),\n type: IndicatorType.TOOLTIP,\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: -35,\n tooltipYCoOrdinates: -7,\n backgroundColor: 'PURPLE_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n arrowXCoOrdinates: -97,\n arrowSize: 12,\n width: 264,\n tooltipItem: (\n <TooltipItem\n text=\"Track homework status and their due dates.\"\n buttonLabel=\"Next\"\n onButtonClick={handleNextCoachmark}\n />\n ),\n } as IArrowTooltipProps,\n isActive: false,\n },\n {\n originalElementToHighlightRef: homepageRef,\n elementToHighlight: (\n <ELementWrapper>\n <FlexView $flexRowGapX={1}>\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n Recent Chapters ({RECENT_CHAPTERS?.length})\n </Text>\n <ChaptersWrapper>\n {RECENT_CHAPTERS.map((chapter, idx) => (\n <ChapterItem\n key={chapter.id}\n chapter={chapter as unknown as IChapterDataProps}\n onChapterClick={emptyFunction}\n itemIndex={idx}\n />\n ))}\n </ChaptersWrapper>\n </FlexView>\n </ELementWrapper>\n ),\n type: IndicatorType.TOOLTIP,\n indicator: {\n position: 'top',\n tooltipXCoOrdinates: -200,\n tooltipYCoOrdinates: -10,\n backgroundColor: 'YELLOW_4',\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n arrowXCoOrdinates: -97,\n arrowSize: 12,\n width: 264,\n tooltipItem: (\n <TooltipItem\n text=\"Access all your recent chapters in one place.\"\n buttonLabel=\"Got it\"\n onButtonClick={handleEndJourney}\n />\n ),\n } as IArrowTooltipProps,\n isActive: false,\n },\n ];\n\n setJourney(journeyId, homepageSteps);\n\n const delayBeforeStart = setTimeout(() => {\n clearTimeout(delayBeforeStart);\n if (userType === 'STUDENT') {\n window.scrollTo(0, 0);\n } else {\n document.getElementById('tab-content-container')?.scrollTo(0, 0);\n }\n document.body.style.overflow = 'hidden';\n handleNextCoachmark();\n }, 200);\n\n timerRefs.current.push(delayBeforeStart); // Store to cleanup later\n },\n [handleEndJourney, emptyFunction, handleNextCoachmark, journeyId, setJourney],\n );\n\n const data = useMemo(\n () => ({\n homepageRef,\n homeworkRef,\n startJourney,\n }),\n [startJourney],\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n timerRefs.current.forEach(timer => clearTimeout(timer));\n timerRefs.current = [];\n };\n }, []);\n\n return data;\n};\n"],"names":["useHomePageJourney","journeyId","JOURNEY_ID_STUDENT","homepageRef","useRef","homeworkRef","recentChaptersRef","timerRefs","nextCoachmark","setJourney","endJourney","useJourney","emptyFunction","useCallback","handleEndJourney","handleNextCoachmark","startJourney","studentId","stream","userType","title","subtext","HOMEWORK_DETAILS","isStudent","homepageSteps","IndicatorType","jsxs","FlexView","jsx","HwCardListView","Text","_a","RECENT_CHAPTERS","ChaptersWrapper","chapter","idx","ChapterItem","MilestoneListContainer","TooltipItem","ELementWrapper","HomeworkCard","_b","delayBeforeStart","data","useMemo","useEffect","timer"],"mappings":"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"}
|
@@ -1,77 +1,78 @@
|
|
1
|
-
import { jsxs as $, jsx as
|
2
|
-
import { memo as q, useState as s, useMemo as
|
1
|
+
import { jsxs as $, jsx as v } from "react/jsx-runtime";
|
2
|
+
import { memo as q, useState as s, useMemo as p, useCallback as n } from "react";
|
3
3
|
import { EVENTS as z } from "../../../../communication/pub-sub/constants.js";
|
4
4
|
import { useInClassActionDispatcher as B } from "../../../../communication/pub-sub/hooks.js";
|
5
5
|
import G from "../../../../ui/context/context.js";
|
6
6
|
import J from "../../../../ui/context/use-tracking-context.js";
|
7
7
|
import { ONE_YEAR_TIMESTAMP_IN_SECONDS as K } from "../../../constants.js";
|
8
8
|
import { invalidateMilestonesData as Q } from "../../../milestone-list-container/api/get-milestones.js";
|
9
|
-
import X from "
|
10
|
-
import
|
11
|
-
import ee from "./
|
12
|
-
import
|
13
|
-
|
9
|
+
import { invalidatePastMilestoneCount as X } from "../../../milestone-list-container/api/get-past-milestone-count.js";
|
10
|
+
import Z from "../delete-milestone/confirm-delete.js";
|
11
|
+
import { useMilestonePatch as ee } from "./api/patch-milestone.js";
|
12
|
+
import te from "./edit-milestone.js";
|
13
|
+
import { parse as oe } from "../../../../../node_modules/date-fns/parse.js";
|
14
|
+
const y = {
|
14
15
|
DELETE_CONFIRM: "delete_confirm",
|
15
16
|
EDIT: "edit"
|
16
|
-
},
|
17
|
+
}, se = q(
|
17
18
|
({
|
18
|
-
milestoneName:
|
19
|
+
milestoneName: N,
|
19
20
|
milestoneId: e,
|
20
|
-
milestoneDueDate:
|
21
|
-
studentId:
|
22
|
-
isMilestoneChaptersListEditable:
|
23
|
-
isMilestoneDateEditable:
|
21
|
+
milestoneDueDate: u,
|
22
|
+
studentId: i,
|
23
|
+
isMilestoneChaptersListEditable: x,
|
24
|
+
isMilestoneDateEditable: F,
|
24
25
|
isClassOngoing: E,
|
25
|
-
onDelete:
|
26
|
+
onDelete: I,
|
26
27
|
analyticsProps: M,
|
27
28
|
canDelete: O,
|
28
29
|
milestoneState: w,
|
29
30
|
studentClassroomId: A,
|
30
31
|
courseStream: _
|
31
32
|
}) => {
|
32
|
-
const [D, L] = s("edit"), [t, R] = s(
|
33
|
+
const [D, L] = s("edit"), [t, R] = s(u), [r, h] = s(!1), [c, C] = s(!1), [l, m] = s(""), o = p(
|
33
34
|
() => Math.floor((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0) / 1e3),
|
34
35
|
[]
|
35
|
-
), a =
|
36
|
+
), a = p(
|
36
37
|
() => o + K,
|
37
38
|
[o]
|
38
|
-
), { dispatchInClassAction: T } = B({ studentClassroomId: A }), V = t !==
|
39
|
-
|
40
|
-
}, [
|
41
|
-
(
|
42
|
-
if (
|
39
|
+
), { dispatchInClassAction: T } = B({ studentClassroomId: A }), V = t !== u, g = n(() => {
|
40
|
+
r && h(!1), c && C(!1);
|
41
|
+
}, [r, c]), k = n(
|
42
|
+
(d) => {
|
43
|
+
if (d) {
|
43
44
|
C(!0);
|
44
45
|
return;
|
45
46
|
}
|
46
47
|
Q({
|
47
48
|
milestone_state_group: "LIVE",
|
48
49
|
course_stream: _,
|
49
|
-
student_id:
|
50
|
-
}), h(!0), T({
|
50
|
+
student_id: i
|
51
|
+
}), X(i), h(!0), T({
|
51
52
|
eventName: z.MILESTONE_EDITED,
|
52
53
|
eventPayload: {
|
53
54
|
milestoneId: e
|
54
55
|
}
|
55
56
|
});
|
56
57
|
},
|
57
|
-
[T, e,
|
58
|
-
), { patch:
|
58
|
+
[T, e, i, _]
|
59
|
+
), { patch: P, isProcessing: b } = ee({
|
59
60
|
onComplete: k
|
60
61
|
}), j = n(
|
61
|
-
(
|
62
|
+
(d) => {
|
62
63
|
g();
|
63
|
-
const
|
64
|
-
if (!
|
65
|
-
const
|
66
|
-
|
64
|
+
const S = d.target.value;
|
65
|
+
if (!S) return;
|
66
|
+
const f = oe(S, "yyyy-MM-dd", /* @__PURE__ */ new Date()).getTime() / 1e3;
|
67
|
+
l && f >= o && f < a && m(""), R(f);
|
67
68
|
},
|
68
|
-
[
|
69
|
+
[l, g, a, o]
|
69
70
|
), U = n(() => {
|
70
71
|
if (t < o || t > a) {
|
71
|
-
t < o ?
|
72
|
+
t < o ? m("Please enter a future date") : m("Please select a date within the next year");
|
72
73
|
return;
|
73
74
|
}
|
74
|
-
|
75
|
+
P(e, {
|
75
76
|
milestone_date_ts: t
|
76
77
|
});
|
77
78
|
}, [
|
@@ -79,40 +80,40 @@ const P = {
|
|
79
80
|
t,
|
80
81
|
a,
|
81
82
|
o,
|
82
|
-
|
83
|
+
P
|
83
84
|
]), Y = () => {
|
84
|
-
L(
|
85
|
-
}, H =
|
85
|
+
L(y.DELETE_CONFIRM);
|
86
|
+
}, H = p(() => ({
|
86
87
|
...M,
|
87
88
|
milestone_id: e,
|
88
89
|
temporary_milestone_id: e,
|
89
90
|
is_student_class_ongoing: E
|
90
91
|
}), [M, E, e]), W = J(H);
|
91
92
|
return /* @__PURE__ */ $(G.Provider, { value: W, children: [
|
92
|
-
D ===
|
93
|
-
D === "edit" && /* @__PURE__ */
|
94
|
-
|
93
|
+
D === y.DELETE_CONFIRM && /* @__PURE__ */ v(Z, { milestoneId: e, onDelete: I }),
|
94
|
+
D === "edit" && /* @__PURE__ */ v(
|
95
|
+
te,
|
95
96
|
{
|
96
|
-
inputMilestoneName:
|
97
|
-
areDateUpdatesDisabled: !
|
97
|
+
inputMilestoneName: N,
|
98
|
+
areDateUpdatesDisabled: !F,
|
98
99
|
handleDateChange: j,
|
99
100
|
inputMilestoneDate: t,
|
100
101
|
anyFieldChanged: V,
|
101
102
|
isProcessing: b,
|
102
|
-
isDataPatched:
|
103
|
-
isMilestoneChaptersListEditable:
|
103
|
+
isDataPatched: r,
|
104
|
+
isMilestoneChaptersListEditable: x,
|
104
105
|
onSave: U,
|
105
|
-
isPatchingFailed:
|
106
|
+
isPatchingFailed: c,
|
106
107
|
onDeleteOptionClick: Y,
|
107
|
-
errorMessage:
|
108
|
+
errorMessage: l,
|
108
109
|
canDelete: O,
|
109
110
|
milestoneState: w
|
110
111
|
}
|
111
112
|
)
|
112
113
|
] });
|
113
114
|
}
|
114
|
-
),
|
115
|
+
), _e = se;
|
115
116
|
export {
|
116
|
-
|
117
|
+
_e as default
|
117
118
|
};
|
118
119
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/features/milestone/edit/comps/edit-milestone-modal/index.tsx"],"sourcesContent":["import type { IEditMilestoneModalProps } from './edit-milestone-modal-types';\nimport type { ChangeEvent } from 'react';\n\nimport { parse } from 'date-fns';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\n\nimport { EVENTS } from '../../../../communication/pub-sub/constants';\nimport { useInClassActionDispatcher } from '../../../../communication/pub-sub/hooks';\nimport UIContext from '../../../../ui/context/context';\nimport useTrackingContext from '../../../../ui/context/use-tracking-context';\nimport { ONE_YEAR_TIMESTAMP_IN_SECONDS } from '../../../constants';\nimport { invalidateMilestonesData } from '../../../milestone-list-container/api/get-milestones';\nimport ConfirmDelete from '../delete-milestone/confirm-delete';\nimport { useMilestonePatch } from './api/patch-milestone';\nimport EditMilestone from './edit-milestone';\n\nconst VIEWS = {\n DELETE_CONFIRM: 'delete_confirm',\n EDIT: 'edit',\n};\n\n// https://github.com/cuemath/package-leap/issues/409\nconst EditDeleteMilestone: React.FC<IEditMilestoneModalProps> = memo(\n ({\n milestoneName,\n milestoneId,\n milestoneDueDate,\n studentId,\n isMilestoneChaptersListEditable,\n isMilestoneDateEditable,\n isClassOngoing,\n onDelete,\n analyticsProps,\n canDelete,\n milestoneState,\n studentClassroomId,\n courseStream,\n }) => {\n const [view, setView] = useState<(typeof VIEWS)[keyof typeof VIEWS]>('edit');\n\n const [inputMilestoneDate, setMilestoneDate] = useState(milestoneDueDate);\n const [isDataPatched, setIsDataPatched] = useState(false);\n const [isPatchingFailed, setIsPatchingFailed] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const todayTimestampSeconds = useMemo(\n () => Math.floor(new Date().setHours(0, 0, 0, 0) / 1000),\n [],\n );\n const oneYearFutureTimestampSeconds = useMemo(\n () => todayTimestampSeconds + ONE_YEAR_TIMESTAMP_IN_SECONDS,\n [todayTimestampSeconds],\n );\n\n const { dispatchInClassAction } = useInClassActionDispatcher({ studentClassroomId });\n\n const anyFieldChanged = inputMilestoneDate !== milestoneDueDate;\n\n const handleClearState = useCallback(() => {\n if (isDataPatched) {\n setIsDataPatched(false);\n }\n\n if (isPatchingFailed) {\n setIsPatchingFailed(false);\n }\n }, [isDataPatched, isPatchingFailed]);\n\n const handleOnComplete = useCallback(\n (errorMsg: string | null) => {\n if (errorMsg) {\n setIsPatchingFailed(true);\n\n return;\n }\n\n invalidateMilestonesData({\n milestone_state_group: 'LIVE',\n course_stream: courseStream,\n student_id: studentId,\n });\n setIsDataPatched(true);\n dispatchInClassAction({\n eventName: EVENTS.MILESTONE_EDITED,\n eventPayload: {\n milestoneId,\n },\n });\n },\n [dispatchInClassAction, milestoneId, studentId, courseStream],\n );\n\n const { patch: updateMilestone, isProcessing } = useMilestonePatch({\n onComplete: handleOnComplete,\n });\n\n const handleDateChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n handleClearState();\n const value = e.target.value;\n\n if (!value) return;\n\n const timestampInSeconds = parse(value, 'yyyy-MM-dd', new Date()).getTime() / 1000;\n\n if (\n errorMessage &&\n timestampInSeconds >= todayTimestampSeconds &&\n timestampInSeconds < oneYearFutureTimestampSeconds\n ) {\n setErrorMessage('');\n }\n\n setMilestoneDate(timestampInSeconds);\n },\n [errorMessage, handleClearState, oneYearFutureTimestampSeconds, todayTimestampSeconds],\n );\n\n const onSave = useCallback(() => {\n if (\n inputMilestoneDate < todayTimestampSeconds ||\n inputMilestoneDate > oneYearFutureTimestampSeconds\n ) {\n if (inputMilestoneDate < todayTimestampSeconds) {\n setErrorMessage('Please enter a future date');\n } else {\n setErrorMessage('Please select a date within the next year');\n }\n\n return;\n }\n\n updateMilestone(milestoneId, {\n milestone_date_ts: inputMilestoneDate,\n });\n }, [\n milestoneId,\n inputMilestoneDate,\n oneYearFutureTimestampSeconds,\n todayTimestampSeconds,\n updateMilestone,\n ]);\n\n const onDeleteOptionClick = () => {\n setView(VIEWS.DELETE_CONFIRM);\n };\n\n const commonAnalytics = useMemo(() => {\n return {\n ...analyticsProps,\n milestone_id: milestoneId,\n temporary_milestone_id: milestoneId,\n is_student_class_ongoing: isClassOngoing,\n };\n }, [analyticsProps, isClassOngoing, milestoneId]);\n\n const analyticsContext = useTrackingContext(commonAnalytics);\n\n return (\n <UIContext.Provider value={analyticsContext}>\n {view === VIEWS.DELETE_CONFIRM && (\n <ConfirmDelete milestoneId={milestoneId} onDelete={onDelete} />\n )}\n\n {view === 'edit' && (\n <EditMilestone\n inputMilestoneName={milestoneName}\n areDateUpdatesDisabled={!isMilestoneDateEditable}\n handleDateChange={handleDateChange}\n inputMilestoneDate={inputMilestoneDate}\n anyFieldChanged={anyFieldChanged}\n isProcessing={isProcessing}\n isDataPatched={isDataPatched}\n isMilestoneChaptersListEditable={isMilestoneChaptersListEditable}\n onSave={onSave}\n isPatchingFailed={isPatchingFailed}\n onDeleteOptionClick={onDeleteOptionClick}\n errorMessage={errorMessage}\n canDelete={canDelete}\n milestoneState={milestoneState}\n />\n )}\n </UIContext.Provider>\n );\n },\n);\n\nexport default EditDeleteMilestone;\n"],"names":["VIEWS","EditDeleteMilestone","memo","milestoneName","milestoneId","milestoneDueDate","studentId","isMilestoneChaptersListEditable","isMilestoneDateEditable","isClassOngoing","onDelete","analyticsProps","canDelete","milestoneState","studentClassroomId","courseStream","view","setView","useState","inputMilestoneDate","setMilestoneDate","isDataPatched","setIsDataPatched","isPatchingFailed","setIsPatchingFailed","errorMessage","setErrorMessage","todayTimestampSeconds","useMemo","oneYearFutureTimestampSeconds","ONE_YEAR_TIMESTAMP_IN_SECONDS","dispatchInClassAction","useInClassActionDispatcher","anyFieldChanged","handleClearState","useCallback","handleOnComplete","errorMsg","invalidateMilestonesData","EVENTS","updateMilestone","isProcessing","useMilestonePatch","handleDateChange","e","value","timestampInSeconds","parse","onSave","onDeleteOptionClick","commonAnalytics","analyticsContext","useTrackingContext","jsxs","UIContext","jsx","ConfirmDelete","EditMilestone","EditDeleteMilestone$1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/features/milestone/edit/comps/edit-milestone-modal/index.tsx"],"sourcesContent":["import type { IEditMilestoneModalProps } from './edit-milestone-modal-types';\nimport type { ChangeEvent } from 'react';\n\nimport { parse } from 'date-fns';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\n\nimport { EVENTS } from '../../../../communication/pub-sub/constants';\nimport { useInClassActionDispatcher } from '../../../../communication/pub-sub/hooks';\nimport UIContext from '../../../../ui/context/context';\nimport useTrackingContext from '../../../../ui/context/use-tracking-context';\nimport { ONE_YEAR_TIMESTAMP_IN_SECONDS } from '../../../constants';\nimport { invalidateMilestonesData } from '../../../milestone-list-container/api/get-milestones';\nimport { invalidatePastMilestoneCount } from '../../../milestone-list-container/api/get-past-milestone-count';\nimport ConfirmDelete from '../delete-milestone/confirm-delete';\nimport { useMilestonePatch } from './api/patch-milestone';\nimport EditMilestone from './edit-milestone';\n\nconst VIEWS = {\n DELETE_CONFIRM: 'delete_confirm',\n EDIT: 'edit',\n};\n\n// https://github.com/cuemath/package-leap/issues/409\nconst EditDeleteMilestone: React.FC<IEditMilestoneModalProps> = memo(\n ({\n milestoneName,\n milestoneId,\n milestoneDueDate,\n studentId,\n isMilestoneChaptersListEditable,\n isMilestoneDateEditable,\n isClassOngoing,\n onDelete,\n analyticsProps,\n canDelete,\n milestoneState,\n studentClassroomId,\n courseStream,\n }) => {\n const [view, setView] = useState<(typeof VIEWS)[keyof typeof VIEWS]>('edit');\n\n const [inputMilestoneDate, setMilestoneDate] = useState(milestoneDueDate);\n const [isDataPatched, setIsDataPatched] = useState(false);\n const [isPatchingFailed, setIsPatchingFailed] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const todayTimestampSeconds = useMemo(\n () => Math.floor(new Date().setHours(0, 0, 0, 0) / 1000),\n [],\n );\n const oneYearFutureTimestampSeconds = useMemo(\n () => todayTimestampSeconds + ONE_YEAR_TIMESTAMP_IN_SECONDS,\n [todayTimestampSeconds],\n );\n\n const { dispatchInClassAction } = useInClassActionDispatcher({ studentClassroomId });\n\n const anyFieldChanged = inputMilestoneDate !== milestoneDueDate;\n\n const handleClearState = useCallback(() => {\n if (isDataPatched) {\n setIsDataPatched(false);\n }\n\n if (isPatchingFailed) {\n setIsPatchingFailed(false);\n }\n }, [isDataPatched, isPatchingFailed]);\n\n const handleOnComplete = useCallback(\n (errorMsg: string | null) => {\n if (errorMsg) {\n setIsPatchingFailed(true);\n\n return;\n }\n\n invalidateMilestonesData({\n milestone_state_group: 'LIVE',\n course_stream: courseStream,\n student_id: studentId,\n });\n invalidatePastMilestoneCount(studentId);\n setIsDataPatched(true);\n dispatchInClassAction({\n eventName: EVENTS.MILESTONE_EDITED,\n eventPayload: {\n milestoneId,\n },\n });\n },\n [dispatchInClassAction, milestoneId, studentId, courseStream],\n );\n\n const { patch: updateMilestone, isProcessing } = useMilestonePatch({\n onComplete: handleOnComplete,\n });\n\n const handleDateChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n handleClearState();\n const value = e.target.value;\n\n if (!value) return;\n\n const timestampInSeconds = parse(value, 'yyyy-MM-dd', new Date()).getTime() / 1000;\n\n if (\n errorMessage &&\n timestampInSeconds >= todayTimestampSeconds &&\n timestampInSeconds < oneYearFutureTimestampSeconds\n ) {\n setErrorMessage('');\n }\n\n setMilestoneDate(timestampInSeconds);\n },\n [errorMessage, handleClearState, oneYearFutureTimestampSeconds, todayTimestampSeconds],\n );\n\n const onSave = useCallback(() => {\n if (\n inputMilestoneDate < todayTimestampSeconds ||\n inputMilestoneDate > oneYearFutureTimestampSeconds\n ) {\n if (inputMilestoneDate < todayTimestampSeconds) {\n setErrorMessage('Please enter a future date');\n } else {\n setErrorMessage('Please select a date within the next year');\n }\n\n return;\n }\n\n updateMilestone(milestoneId, {\n milestone_date_ts: inputMilestoneDate,\n });\n }, [\n milestoneId,\n inputMilestoneDate,\n oneYearFutureTimestampSeconds,\n todayTimestampSeconds,\n updateMilestone,\n ]);\n\n const onDeleteOptionClick = () => {\n setView(VIEWS.DELETE_CONFIRM);\n };\n\n const commonAnalytics = useMemo(() => {\n return {\n ...analyticsProps,\n milestone_id: milestoneId,\n temporary_milestone_id: milestoneId,\n is_student_class_ongoing: isClassOngoing,\n };\n }, [analyticsProps, isClassOngoing, milestoneId]);\n\n const analyticsContext = useTrackingContext(commonAnalytics);\n\n return (\n <UIContext.Provider value={analyticsContext}>\n {view === VIEWS.DELETE_CONFIRM && (\n <ConfirmDelete milestoneId={milestoneId} onDelete={onDelete} />\n )}\n\n {view === 'edit' && (\n <EditMilestone\n inputMilestoneName={milestoneName}\n areDateUpdatesDisabled={!isMilestoneDateEditable}\n handleDateChange={handleDateChange}\n inputMilestoneDate={inputMilestoneDate}\n anyFieldChanged={anyFieldChanged}\n isProcessing={isProcessing}\n isDataPatched={isDataPatched}\n isMilestoneChaptersListEditable={isMilestoneChaptersListEditable}\n onSave={onSave}\n isPatchingFailed={isPatchingFailed}\n onDeleteOptionClick={onDeleteOptionClick}\n errorMessage={errorMessage}\n canDelete={canDelete}\n milestoneState={milestoneState}\n />\n )}\n </UIContext.Provider>\n );\n },\n);\n\nexport default EditDeleteMilestone;\n"],"names":["VIEWS","EditDeleteMilestone","memo","milestoneName","milestoneId","milestoneDueDate","studentId","isMilestoneChaptersListEditable","isMilestoneDateEditable","isClassOngoing","onDelete","analyticsProps","canDelete","milestoneState","studentClassroomId","courseStream","view","setView","useState","inputMilestoneDate","setMilestoneDate","isDataPatched","setIsDataPatched","isPatchingFailed","setIsPatchingFailed","errorMessage","setErrorMessage","todayTimestampSeconds","useMemo","oneYearFutureTimestampSeconds","ONE_YEAR_TIMESTAMP_IN_SECONDS","dispatchInClassAction","useInClassActionDispatcher","anyFieldChanged","handleClearState","useCallback","handleOnComplete","errorMsg","invalidateMilestonesData","invalidatePastMilestoneCount","EVENTS","updateMilestone","isProcessing","useMilestonePatch","handleDateChange","e","value","timestampInSeconds","parse","onSave","onDeleteOptionClick","commonAnalytics","analyticsContext","useTrackingContext","jsxs","UIContext","jsx","ConfirmDelete","EditMilestone","EditDeleteMilestone$1"],"mappings":"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"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { createGetAPI as r } from "@cuemath/rest-api";
|
2
|
+
import { BASE_URL_V3 as i } from "../../../../constants/api.js";
|
3
|
+
import { stringify as n } from "../../../../helpers/query-string.js";
|
4
|
+
const { useGet: l, invalidate: _ } = r({
|
5
|
+
getURL: (t, u, e) => {
|
6
|
+
const { milestone_state_group: s, course_stream: o } = e;
|
7
|
+
return `${i}/user-milestones/users/${t}/course-streams/${o}/count?${n(
|
8
|
+
{
|
9
|
+
milestone_state_group: s
|
10
|
+
}
|
11
|
+
)}`;
|
12
|
+
}
|
13
|
+
});
|
14
|
+
export {
|
15
|
+
_ as invalidatePastMilestoneCount,
|
16
|
+
l as useGetPastMilestoneCount
|
17
|
+
};
|
18
|
+
//# sourceMappingURL=get-past-milestone-count.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-past-milestone-count.js","sources":["../../../../../src/features/milestone/milestone-list-container/api/get-past-milestone-count.ts"],"sourcesContent":["import type { TCourseStream } from '../../create/milestone-create-types';\n\nimport { createGetAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V3 } from '../../../../constants/api';\nimport { stringify } from '../../../../helpers/query-string';\n\ntype TQuery = {\n milestone_state_group: 'ALL' | 'DRAFT' | 'STUDENT_ALL' | 'LIVE' | 'STUDENT_LIVE' | 'INACTIVE';\n course_stream: TCourseStream;\n};\n\nconst { useGet: useGetPastMilestoneCount, invalidate: invalidatePastMilestoneCount } = createGetAPI<\n {\n user_milestones_count: number;\n },\n void,\n TQuery\n>({\n getURL: (studentId, _, query) => {\n const { milestone_state_group, course_stream } = query;\n\n return `${BASE_URL_V3}/user-milestones/users/${studentId}/course-streams/${course_stream}/count?${stringify(\n {\n milestone_state_group,\n },\n )}`;\n },\n});\n\nexport { useGetPastMilestoneCount, invalidatePastMilestoneCount };\n"],"names":["useGetPastMilestoneCount","invalidatePastMilestoneCount","createGetAPI","studentId","_","query","milestone_state_group","course_stream","BASE_URL_V3","stringify"],"mappings":";;;AAYA,MAAM,EAAE,QAAQA,GAA0B,YAAYC,EAAA,IAAiCC,EAMrF;AAAA,EACA,QAAQ,CAACC,GAAWC,GAAGC,MAAU;AACzB,UAAA,EAAE,uBAAAC,GAAuB,eAAAC,EAAkB,IAAAF;AAEjD,WAAO,GAAGG,CAAW,0BAA0BL,CAAS,mBAAmBI,CAAa,UAAUE;AAAA,MAChG;AAAA,QACE,uBAAAH;AAAA,MACF;AAAA,IACD,CAAA;AAAA,EACH;AACF,CAAC;"}
|
@@ -1,157 +1,136 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import
|
10
|
-
import
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const [a, N] = ie(!1), {
|
1
|
+
import { jsxs as r, Fragment as K, jsx as o } from "react/jsx-runtime";
|
2
|
+
import Q, { memo as Y, useCallback as p } from "react";
|
3
|
+
import Z from "../../../hooks/use-lazy-ref.js";
|
4
|
+
import h from "../../../ui/buttons/text-button/text-button.js";
|
5
|
+
import d from "../../../ui/layout/flex-view.js";
|
6
|
+
import ee from "../../../ui/separator/separator.js";
|
7
|
+
import te from "../../../ui/text/text.js";
|
8
|
+
import oe from "./milestone-widget/milestone-widget.js";
|
9
|
+
import ne from "./no-active-milestone/no-active-milestone.js";
|
10
|
+
import ie from "../../../../node_modules/uuid/dist/esm-browser/v4.js";
|
11
|
+
const ue = Y(
|
12
|
+
({ milestones: e, studentId: u, milestoneType: s, ...A }) => {
|
13
|
+
const {
|
15
14
|
canCreatePlan: m,
|
16
|
-
isClassOngoing:
|
17
|
-
isFiltersAdded:
|
18
|
-
isStudentPresent:
|
19
|
-
onAddChapter:
|
20
|
-
onAddOutcome:
|
21
|
-
onChapterClick:
|
22
|
-
onCreatePlan:
|
23
|
-
onDelete:
|
15
|
+
isClassOngoing: g,
|
16
|
+
isFiltersAdded: C,
|
17
|
+
isStudentPresent: M,
|
18
|
+
onAddChapter: T,
|
19
|
+
onAddOutcome: n,
|
20
|
+
onChapterClick: N,
|
21
|
+
onCreatePlan: i,
|
22
|
+
onDelete: v,
|
24
23
|
onDraftPublish: R,
|
25
|
-
onEdit:
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
onTestStart: O,
|
24
|
+
onEdit: w,
|
25
|
+
onCreateMilestoneTest: x,
|
26
|
+
onNodeAttempt: b,
|
27
|
+
onNodeView: D,
|
28
|
+
onNodeReview: $,
|
29
|
+
onNodeReattempt: P,
|
30
|
+
onNodeReset: F,
|
31
|
+
onNodeUnassign: I,
|
32
|
+
onAssignResources: k,
|
33
|
+
onTestPreview: E,
|
34
|
+
onTestReview: S,
|
35
|
+
onTestStart: V,
|
38
36
|
activeMilestoneId: _,
|
39
|
-
activeTabId:
|
37
|
+
activeTabId: j,
|
40
38
|
onWidgetTabSelection: z,
|
41
|
-
studentName:
|
42
|
-
teacherName:
|
43
|
-
parentName:
|
44
|
-
userType:
|
45
|
-
courseStream:
|
46
|
-
onNodeAssignAsHomework:
|
47
|
-
} =
|
48
|
-
|
49
|
-
}, [
|
50
|
-
|
51
|
-
},
|
52
|
-
i == null || i();
|
53
|
-
}, [i]);
|
39
|
+
studentName: c,
|
40
|
+
teacherName: B,
|
41
|
+
parentName: G,
|
42
|
+
userType: a,
|
43
|
+
courseStream: y,
|
44
|
+
onNodeAssignAsHomework: H
|
45
|
+
} = A, l = s === "ACTIVE", L = s === "DRAFT", f = Z(ie), O = p(() => {
|
46
|
+
i == null || i(f);
|
47
|
+
}, [i, f]), W = p(() => {
|
48
|
+
n == null || n();
|
49
|
+
}, [n]);
|
54
50
|
if (!e) return null;
|
55
|
-
const
|
56
|
-
(
|
57
|
-
),
|
58
|
-
(
|
51
|
+
const X = e.some(
|
52
|
+
(t) => t.milestone_state === "ACTIVE"
|
53
|
+
), U = e.some(
|
54
|
+
(t) => t.milestone_state === "DRAFT"
|
59
55
|
);
|
60
|
-
return /* @__PURE__ */
|
61
|
-
l && !
|
62
|
-
|
56
|
+
return /* @__PURE__ */ r(K, { children: [
|
57
|
+
l && !X && /* @__PURE__ */ o(d, { $marginBottom: 40, children: /* @__PURE__ */ o(
|
58
|
+
ne,
|
63
59
|
{
|
64
60
|
canCreatePlan: m,
|
65
|
-
isDraftMilestonePresent:
|
66
|
-
isFiltersAdded:
|
67
|
-
onCreatePlan:
|
68
|
-
studentName:
|
69
|
-
userType:
|
61
|
+
isDraftMilestonePresent: U,
|
62
|
+
isFiltersAdded: C,
|
63
|
+
onCreatePlan: i,
|
64
|
+
studentName: c,
|
65
|
+
userType: a
|
70
66
|
}
|
71
67
|
) }),
|
72
|
-
l && /* @__PURE__ */
|
73
|
-
/* @__PURE__ */
|
68
|
+
l && /* @__PURE__ */ r(d, { $flexDirection: "row", $justifyContent: "space-between", $marginBottom: 16, children: [
|
69
|
+
/* @__PURE__ */ r(te, { $renderAs: "ac4", children: [
|
74
70
|
"Goals (",
|
75
71
|
e.length,
|
76
72
|
")"
|
77
73
|
] }),
|
78
|
-
|
79
|
-
/* @__PURE__ */
|
80
|
-
|
74
|
+
a === "TEACHER" && /* @__PURE__ */ r(d, { $flexDirection: "row", $flexGapX: 1, children: [
|
75
|
+
/* @__PURE__ */ o(
|
76
|
+
h,
|
81
77
|
{
|
82
78
|
label: "Create Goal",
|
83
79
|
size: "small",
|
84
|
-
onClick:
|
80
|
+
onClick: O,
|
85
81
|
disabled: !m
|
86
82
|
}
|
87
83
|
),
|
88
|
-
/* @__PURE__ */
|
84
|
+
/* @__PURE__ */ o(h, { label: "Add Milestone", size: "small", onClick: W })
|
89
85
|
] })
|
90
86
|
] }),
|
91
|
-
|
92
|
-
|
93
|
-
{
|
94
|
-
|
95
|
-
|
96
|
-
$justifyContent: "space-between",
|
97
|
-
$marginBottomX: 1,
|
98
|
-
children: [
|
99
|
-
/* @__PURE__ */ t(C, { $renderAs: "ac4", children: [
|
100
|
-
"PAST LEARNING PLANS & OUTCOMES (",
|
101
|
-
e.length,
|
102
|
-
")"
|
103
|
-
] }),
|
104
|
-
/* @__PURE__ */ n(le, { onClick: J, $expanded: a })
|
105
|
-
]
|
106
|
-
}
|
107
|
-
),
|
108
|
-
(A || l || a) && e.map((o, Z) => {
|
109
|
-
const { id: ee } = o;
|
110
|
-
return /* @__PURE__ */ t(ne.Fragment, { children: [
|
111
|
-
/* @__PURE__ */ n(
|
112
|
-
ae,
|
87
|
+
e.map((t, q) => {
|
88
|
+
const { id: J } = t;
|
89
|
+
return /* @__PURE__ */ r(Q.Fragment, { children: [
|
90
|
+
/* @__PURE__ */ o(
|
91
|
+
oe,
|
113
92
|
{
|
114
|
-
milestone:
|
115
|
-
studentId:
|
116
|
-
studentName:
|
117
|
-
parentName:
|
118
|
-
teacherName:
|
119
|
-
userType:
|
120
|
-
onAddOutcome:
|
121
|
-
onChapterClick:
|
122
|
-
isMilestoneActive: l ||
|
93
|
+
milestone: t,
|
94
|
+
studentId: u,
|
95
|
+
studentName: c,
|
96
|
+
parentName: G,
|
97
|
+
teacherName: B,
|
98
|
+
userType: a,
|
99
|
+
onAddOutcome: n,
|
100
|
+
onChapterClick: N,
|
101
|
+
isMilestoneActive: l || L,
|
123
102
|
milestoneType: s,
|
124
|
-
onEdit:
|
125
|
-
onCreateMilestoneTest:
|
126
|
-
onAddChapter:
|
127
|
-
onDelete:
|
103
|
+
onEdit: w,
|
104
|
+
onCreateMilestoneTest: x,
|
105
|
+
onAddChapter: T,
|
106
|
+
onDelete: v,
|
128
107
|
onDraftPublish: R,
|
129
|
-
isClassOngoing:
|
130
|
-
isStudentPresent:
|
131
|
-
onAssignResources:
|
132
|
-
onNodeAttempt:
|
133
|
-
onNodeView:
|
134
|
-
onNodeReview:
|
135
|
-
onNodeReattempt:
|
136
|
-
onNodeReset:
|
137
|
-
onNodeUnassign:
|
138
|
-
onNodeAssignAsHomework:
|
139
|
-
onTestPreview:
|
140
|
-
onTestReview:
|
141
|
-
onTestStart:
|
142
|
-
courseStream:
|
108
|
+
isClassOngoing: g,
|
109
|
+
isStudentPresent: M,
|
110
|
+
onAssignResources: k,
|
111
|
+
onNodeAttempt: b,
|
112
|
+
onNodeView: D,
|
113
|
+
onNodeReview: $,
|
114
|
+
onNodeReattempt: P,
|
115
|
+
onNodeReset: F,
|
116
|
+
onNodeUnassign: I,
|
117
|
+
onNodeAssignAsHomework: H,
|
118
|
+
onTestPreview: E,
|
119
|
+
onTestReview: S,
|
120
|
+
onTestStart: V,
|
121
|
+
courseStream: y,
|
143
122
|
activeMilestoneId: _,
|
144
|
-
activeTabId:
|
123
|
+
activeTabId: j,
|
145
124
|
onWidgetTabSelection: z
|
146
125
|
}
|
147
126
|
),
|
148
|
-
|
149
|
-
] }, `milestone=${
|
127
|
+
q !== e.length - 1 && /* @__PURE__ */ o(ee, { heightX: 2 })
|
128
|
+
] }, `milestone=${J}`);
|
150
129
|
})
|
151
130
|
] });
|
152
131
|
}
|
153
132
|
);
|
154
133
|
export {
|
155
|
-
|
134
|
+
ue as default
|
156
135
|
};
|
157
136
|
//# sourceMappingURL=milestone-list.js.map
|