Skip to content

Commit 0c3cad3

Browse files
committed
refactor: Extract SymmaryCard
1 parent ec157ca commit 0c3cad3

2 files changed

Lines changed: 55 additions & 42 deletions

File tree

src/library-authoring/course-import/ReviewImportDetails.tsx

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { FormattedMessage } from '@edx/frontend-platform/i18n';
2-
import { Card, Icon, Stack } from '@openedx/paragon';
2+
import { Card, Stack } from '@openedx/paragon';
33
import { LoadingSpinner } from '@src/generic/Loading';
4-
import { getItemIcon } from '@src/generic/block-type-utils';
5-
import { Widgets } from '@openedx/paragon/icons';
64
import { useCourseDetails } from '@src/course-outline/data/apiHooks';
5+
76
import messages from './messages';
7+
import { SummaryCard } from './SummaryCard';
88

99
export const ReviewImportDetails = ({ courseId }: { courseId?: string }) => {
1010
const { data, isPending } = useCourseDetails(courseId);
@@ -31,45 +31,7 @@ export const ReviewImportDetails = ({ courseId }: { courseId?: string }) => {
3131
)}
3232
</Card>
3333
<h4><FormattedMessage {...messages.importCourseAnalysisSummary} /></h4>
34-
<Card>
35-
<Card.Section>
36-
<Stack direction="horizontal">
37-
<Stack className="align-items-center" gap={2}>
38-
<FormattedMessage {...messages.importCourseTotalBlocks} />
39-
<LoadingSpinner />
40-
</Stack>
41-
<div className="border-light-400" style={{ borderLeft: '2px solid', height: '50px' }} />
42-
<Stack className="align-items-center" gap={2}>
43-
<FormattedMessage {...messages.importCourseSections} />
44-
<Stack className="justify-content-center" direction="horizontal" gap={3}>
45-
<Icon src={getItemIcon('section')} />
46-
<LoadingSpinner />
47-
</Stack>
48-
</Stack>
49-
<Stack className="align-items-center" gap={2}>
50-
<FormattedMessage {...messages.importCourseSubsections} />
51-
<Stack className="justify-content-center" direction="horizontal" gap={3}>
52-
<Icon src={getItemIcon('subsection')} />
53-
<LoadingSpinner />
54-
</Stack>
55-
</Stack>
56-
<Stack className="align-items-center" gap={2}>
57-
<FormattedMessage {...messages.importCourseUnits} />
58-
<Stack className="justify-content-center" direction="horizontal" gap={3}>
59-
<Icon src={getItemIcon('unit')} />
60-
<LoadingSpinner />
61-
</Stack>
62-
</Stack>
63-
<Stack className="align-items-center" gap={2}>
64-
<FormattedMessage {...messages.importCourseComponents} />
65-
<Stack className="justify-content-center" direction="horizontal" gap={3}>
66-
<Icon src={Widgets} />
67-
<LoadingSpinner />
68-
</Stack>
69-
</Stack>
70-
</Stack>
71-
</Card.Section>
72-
</Card>
34+
<SummaryCard />
7335
<h4><FormattedMessage {...messages.importCourseDetailsTitle} /></h4>
7436
<Card className="p-6">
7537
<Stack className="align-items-center" gap={3}>
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { FormattedMessage } from '@edx/frontend-platform/i18n';
2+
import { Card, Icon, Stack } from '@openedx/paragon';
3+
import { Widgets } from '@openedx/paragon/icons';
4+
5+
import { LoadingSpinner } from '@src/generic/Loading';
6+
import { getItemIcon } from '@src/generic/block-type-utils';
7+
8+
import messages from './messages';
9+
10+
// TODO: The SummaryCard is always in loading state
11+
export const SummaryCard = () => (
12+
<Card>
13+
<Card.Section>
14+
<Stack direction="horizontal">
15+
<Stack className="align-items-center" gap={2}>
16+
<FormattedMessage {...messages.importCourseTotalBlocks} />
17+
<LoadingSpinner />
18+
</Stack>
19+
<div className="border-light-400" style={{ borderLeft: '2px solid', height: '50px' }} />
20+
<Stack className="align-items-center" gap={2}>
21+
<FormattedMessage {...messages.importCourseSections} />
22+
<Stack className="justify-content-center" direction="horizontal" gap={3}>
23+
<Icon src={getItemIcon('section')} />
24+
<LoadingSpinner />
25+
</Stack>
26+
</Stack>
27+
<Stack className="align-items-center" gap={2}>
28+
<FormattedMessage {...messages.importCourseSubsections} />
29+
<Stack className="justify-content-center" direction="horizontal" gap={3}>
30+
<Icon src={getItemIcon('subsection')} />
31+
<LoadingSpinner />
32+
</Stack>
33+
</Stack>
34+
<Stack className="align-items-center" gap={2}>
35+
<FormattedMessage {...messages.importCourseUnits} />
36+
<Stack className="justify-content-center" direction="horizontal" gap={3}>
37+
<Icon src={getItemIcon('unit')} />
38+
<LoadingSpinner />
39+
</Stack>
40+
</Stack>
41+
<Stack className="align-items-center" gap={2}>
42+
<FormattedMessage {...messages.importCourseComponents} />
43+
<Stack className="justify-content-center" direction="horizontal" gap={3}>
44+
<Icon src={Widgets} />
45+
<LoadingSpinner />
46+
</Stack>
47+
</Stack>
48+
</Stack>
49+
</Card.Section>
50+
</Card>
51+
);

0 commit comments

Comments
 (0)