catchup-library-web 2.5.16 → 2.5.18
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/index.js +257 -219
- package/dist/index.mjs +257 -219
- package/package.json +1 -1
- package/src/components/activities/GroupingActivityContent.tsx +7 -3
- package/src/components/activities/MatchingActivityContent.tsx +7 -3
- package/src/components/activities/OrderingActivityContent.tsx +7 -3
- package/src/components/activities/material-contents/DropdownActivityMaterialContent.tsx +5 -3
- package/src/components/activities/material-contents/FillInTheBlanksActivityMaterialContent.tsx +5 -3
- package/src/components/activities/material-contents/GroupingActivityMaterialContent.tsx +5 -3
- package/src/components/activities/material-contents/MCMAActivityMaterialContent.tsx +8 -6
- package/src/components/activities/material-contents/MCSAActivityMaterialContent.tsx +8 -6
- package/src/components/activities/material-contents/MatchingActivityMaterialContent.tsx +3 -1
- package/src/components/activities/material-contents/OpenEndedActivityMaterialContent.tsx +5 -5
- package/src/components/activities/material-contents/OrderingActivityMaterialContent.tsx +3 -1
- package/src/components/activities/material-contents/TrueFalseActivityMaterialContent.tsx +6 -4
package/package.json
CHANGED
|
@@ -26,7 +26,7 @@ const GroupingActivityContent = ({
|
|
|
26
26
|
answerMap: any,
|
|
27
27
|
key: any,
|
|
28
28
|
value: string | null,
|
|
29
|
-
index: number | null
|
|
29
|
+
index: number | null,
|
|
30
30
|
) => {
|
|
31
31
|
if (isPreview) return;
|
|
32
32
|
if (value) {
|
|
@@ -39,7 +39,9 @@ const GroupingActivityContent = ({
|
|
|
39
39
|
|
|
40
40
|
return (
|
|
41
41
|
<div className="flex flex-row flex-wrap h-full">
|
|
42
|
-
<div
|
|
42
|
+
<div
|
|
43
|
+
className={`${isFullScreen ? "w-full" : "w-full md:w-[40%] md:overflow-y-auto"}`}
|
|
44
|
+
>
|
|
43
45
|
<ActivityBodyContent
|
|
44
46
|
bodyMap={groupingBodyMap}
|
|
45
47
|
templateType={"GROUPING"}
|
|
@@ -51,7 +53,9 @@ const GroupingActivityContent = ({
|
|
|
51
53
|
<div className={`${isFullScreen ? "hidden" : "hidden md:block"}`}>
|
|
52
54
|
<VerticalDividerLine />
|
|
53
55
|
</div>
|
|
54
|
-
<div
|
|
56
|
+
<div
|
|
57
|
+
className={`${isFullScreen ? "w-full" : "w-full md:flex-1 md:overflow-y-auto"}`}
|
|
58
|
+
>
|
|
55
59
|
<GroupingActivityMaterialContent
|
|
56
60
|
uniqueValue={JSON.stringify(data.contentMap)}
|
|
57
61
|
answerMap={answerMap}
|
|
@@ -25,7 +25,7 @@ const MatchingActivityContent = ({
|
|
|
25
25
|
const handleMatchingAnswerOnChange = (
|
|
26
26
|
answerMap: any,
|
|
27
27
|
key: any,
|
|
28
|
-
value: string | null
|
|
28
|
+
value: string | null,
|
|
29
29
|
) => {
|
|
30
30
|
if (isPreview) return;
|
|
31
31
|
answerMap[key] = value;
|
|
@@ -34,7 +34,9 @@ const MatchingActivityContent = ({
|
|
|
34
34
|
|
|
35
35
|
return (
|
|
36
36
|
<div className="flex flex-row flex-wrap h-full">
|
|
37
|
-
<div
|
|
37
|
+
<div
|
|
38
|
+
className={`${isFullScreen ? "w-full" : "w-full md:w-[40%] md:overflow-y-auto"}`}
|
|
39
|
+
>
|
|
38
40
|
<ActivityBodyContent
|
|
39
41
|
bodyMap={matchingBodyMap}
|
|
40
42
|
templateType={"MATCHING"}
|
|
@@ -46,7 +48,9 @@ const MatchingActivityContent = ({
|
|
|
46
48
|
<div className={`${isFullScreen ? "hidden" : "hidden md:block"}`}>
|
|
47
49
|
<VerticalDividerLine />
|
|
48
50
|
</div>
|
|
49
|
-
<div
|
|
51
|
+
<div
|
|
52
|
+
className={`${isFullScreen ? "w-full" : "w-full md:flex-1 md:overflow-y-auto"}`}
|
|
53
|
+
>
|
|
50
54
|
<MatchingActivityMaterialContent
|
|
51
55
|
uniqueValue={JSON.stringify(data.contentMap)}
|
|
52
56
|
answerMap={answerMap}
|
|
@@ -25,7 +25,7 @@ const OrderingActivityContent = ({
|
|
|
25
25
|
const handleOrderingAnswerOnChange = (
|
|
26
26
|
answerMap: any,
|
|
27
27
|
primaryKey: any,
|
|
28
|
-
secondaryKey: any
|
|
28
|
+
secondaryKey: any,
|
|
29
29
|
) => {
|
|
30
30
|
if (isPreview) return;
|
|
31
31
|
const prevValue = answerMap[primaryKey];
|
|
@@ -36,7 +36,9 @@ const OrderingActivityContent = ({
|
|
|
36
36
|
|
|
37
37
|
return (
|
|
38
38
|
<div className="flex flex-row flex-wrap h-full">
|
|
39
|
-
<div
|
|
39
|
+
<div
|
|
40
|
+
className={`${isFullScreen ? "w-full" : "w-full md:w-[40%] md:overflow-y-auto"}`}
|
|
41
|
+
>
|
|
40
42
|
<ActivityBodyContent
|
|
41
43
|
bodyMap={orderingBodyMap}
|
|
42
44
|
templateType={"ORDERING"}
|
|
@@ -48,7 +50,9 @@ const OrderingActivityContent = ({
|
|
|
48
50
|
<div className={`${isFullScreen ? "hidden" : "hidden md:block"}`}>
|
|
49
51
|
<VerticalDividerLine />
|
|
50
52
|
</div>
|
|
51
|
-
<div
|
|
53
|
+
<div
|
|
54
|
+
className={`${isFullScreen ? "w-full" : "w-full md:flex-1 md:overflow-y-auto"}`}
|
|
55
|
+
>
|
|
52
56
|
<OrderingActivityMaterialContent
|
|
53
57
|
uniqueValue={JSON.stringify(data.contentMap)}
|
|
54
58
|
answerMap={answerMap}
|
|
@@ -47,15 +47,16 @@ const DropdownActivityMaterialContent = ({
|
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
return (
|
|
50
|
-
<div className="flex flex-
|
|
51
|
-
<div className="hidden md:block">
|
|
50
|
+
<div className="flex flex-col h-full">
|
|
51
|
+
<div className="hidden md:block flex-shrink-0">
|
|
52
52
|
<span className="font-semibold text-xl opacity-60">
|
|
53
53
|
{i18n.t("please_select_dropdown_text")}
|
|
54
54
|
</span>
|
|
55
55
|
</div>
|
|
56
|
-
<div className="hidden md:
|
|
56
|
+
<div className="hidden md:block flex-shrink-0">
|
|
57
57
|
<DividerLine />
|
|
58
58
|
</div>
|
|
59
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
59
60
|
<div className="w-full flex flex-row flex-wrap">
|
|
60
61
|
{Object.keys(displayAnswerMap).map(
|
|
61
62
|
(materialKey: string, index: number) => {
|
|
@@ -215,6 +216,7 @@ const DropdownActivityMaterialContent = ({
|
|
|
215
216
|
}
|
|
216
217
|
)}
|
|
217
218
|
</div>
|
|
219
|
+
</div>
|
|
218
220
|
</div>
|
|
219
221
|
);
|
|
220
222
|
};
|
package/src/components/activities/material-contents/FillInTheBlanksActivityMaterialContent.tsx
CHANGED
|
@@ -175,16 +175,16 @@ const FillInTheBlanksActivityMaterialContent = ({
|
|
|
175
175
|
|
|
176
176
|
return (
|
|
177
177
|
<div
|
|
178
|
-
className="flex flex-
|
|
178
|
+
className="flex flex-col h-full"
|
|
179
179
|
onMouseMove={handleMouseMove}
|
|
180
180
|
onMouseUp={handleMouseUp}
|
|
181
181
|
>
|
|
182
|
-
<div className="hidden md:block">
|
|
182
|
+
<div className="hidden md:block flex-shrink-0">
|
|
183
183
|
<span className="font-semibold text-xl opacity-60">
|
|
184
184
|
{i18n.t("please_select_fill_in_the_blanks_text")}
|
|
185
185
|
</span>
|
|
186
186
|
</div>
|
|
187
|
-
<div className="hidden md:
|
|
187
|
+
<div className="hidden md:block flex-shrink-0">
|
|
188
188
|
<DividerLine />
|
|
189
189
|
</div>
|
|
190
190
|
|
|
@@ -252,6 +252,7 @@ const FillInTheBlanksActivityMaterialContent = ({
|
|
|
252
252
|
</div>
|
|
253
253
|
)}
|
|
254
254
|
|
|
255
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
255
256
|
<div className="w-full flex flex-row flex-wrap gap-x-2 gap-y-2 my-2">
|
|
256
257
|
{shuffleOptionList.map((option, index) =>
|
|
257
258
|
checkAnswerProvided(displayAnswerMap, option) ? (
|
|
@@ -439,6 +440,7 @@ const FillInTheBlanksActivityMaterialContent = ({
|
|
|
439
440
|
);
|
|
440
441
|
})}
|
|
441
442
|
</div>
|
|
443
|
+
</div>
|
|
442
444
|
</div>
|
|
443
445
|
);
|
|
444
446
|
};
|
|
@@ -254,7 +254,7 @@ const GroupingActivityMaterialContent = ({
|
|
|
254
254
|
const filteredMaterialList = retrieveFilteredMaterialList(displayAnswerMap);
|
|
255
255
|
|
|
256
256
|
return (
|
|
257
|
-
<div onMouseMove={handleMouseMove} onMouseUp={handleMouseUp}>
|
|
257
|
+
<div className="flex flex-col h-full" onMouseMove={handleMouseMove} onMouseUp={handleMouseUp}>
|
|
258
258
|
{/* Floating drag preview for mouse */}
|
|
259
259
|
{draggedValue && mousePosition.x > 0 && (
|
|
260
260
|
<div
|
|
@@ -353,7 +353,7 @@ const GroupingActivityMaterialContent = ({
|
|
|
353
353
|
|
|
354
354
|
{filteredMaterialList.length > 0 ? (
|
|
355
355
|
<>
|
|
356
|
-
<div className="flex-
|
|
356
|
+
<div className="flex-shrink-0 flex flex-row gap-x-4 overflow-x-auto py-2">
|
|
357
357
|
{filteredMaterialList.map((materialValue, index) => {
|
|
358
358
|
return (
|
|
359
359
|
<div
|
|
@@ -421,9 +421,10 @@ const GroupingActivityMaterialContent = ({
|
|
|
421
421
|
);
|
|
422
422
|
})}
|
|
423
423
|
</div>
|
|
424
|
-
<DividerLine
|
|
424
|
+
<div className="flex-shrink-0"><DividerLine /></div>
|
|
425
425
|
</>
|
|
426
426
|
) : null}
|
|
427
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
427
428
|
{Object.keys(displayAnswerMap).map((answerMapKey, index) => (
|
|
428
429
|
<div key={index} className="flex flex-row w-full">
|
|
429
430
|
<div className="w-1/3">
|
|
@@ -569,6 +570,7 @@ const GroupingActivityMaterialContent = ({
|
|
|
569
570
|
</div>
|
|
570
571
|
</div>
|
|
571
572
|
))}
|
|
573
|
+
</div>
|
|
572
574
|
</div>
|
|
573
575
|
);
|
|
574
576
|
};
|
|
@@ -55,18 +55,19 @@ const MCMAActivityMaterialContent = ({
|
|
|
55
55
|
|
|
56
56
|
const correctAnswerList = retrieveCorrectAnswerList();
|
|
57
57
|
|
|
58
|
-
return Object.keys(materialMap).map((materialKey, index) => {
|
|
58
|
+
return (<div className="flex flex-col h-full">{Object.keys(materialMap).map((materialKey, index) => {
|
|
59
59
|
return (
|
|
60
|
-
<div key={index} className="flex flex-
|
|
61
|
-
<div className="flex-1 flex flex-col
|
|
62
|
-
<div className="hidden md:block">
|
|
60
|
+
<div key={index} className="flex flex-col flex-1 min-h-0">
|
|
61
|
+
<div className="flex-1 flex flex-col border-catchup-lighter-gray rounded-catchup-xlarge px-5 md:px-0 min-h-0">
|
|
62
|
+
<div className="hidden md:block flex-shrink-0">
|
|
63
63
|
<span className="font-semibold text-xl opacity-60">
|
|
64
64
|
{i18n.t("please_select_mcma_text")}
|
|
65
65
|
</span>
|
|
66
66
|
</div>
|
|
67
|
-
<div className="hidden md:
|
|
67
|
+
<div className="hidden md:block flex-shrink-0">
|
|
68
68
|
<DividerLine />
|
|
69
69
|
</div>
|
|
70
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
70
71
|
{checkCanAnswerQuestion() ? (
|
|
71
72
|
<div className="flex flex-row w-full flex-wrap ">
|
|
72
73
|
{materialMap[materialKey].map(
|
|
@@ -165,10 +166,11 @@ const MCMAActivityMaterialContent = ({
|
|
|
165
166
|
))}
|
|
166
167
|
</p>
|
|
167
168
|
)}
|
|
169
|
+
</div>
|
|
168
170
|
</div>
|
|
169
171
|
</div>
|
|
170
172
|
);
|
|
171
|
-
});
|
|
173
|
+
})}</div>);
|
|
172
174
|
};
|
|
173
175
|
|
|
174
176
|
export default MCMAActivityMaterialContent;
|
|
@@ -47,18 +47,19 @@ const MCSAActivityMaterialContent = ({
|
|
|
47
47
|
|
|
48
48
|
const correctAnswer = retrieveCorrectAnswer();
|
|
49
49
|
|
|
50
|
-
return Object.keys(materialMap).map((materialKey, index) => {
|
|
50
|
+
return (<div className="flex flex-col h-full">{Object.keys(materialMap).map((materialKey, index) => {
|
|
51
51
|
return (
|
|
52
|
-
<div className="flex flex-
|
|
53
|
-
<div className="flex-1 flex flex-col
|
|
54
|
-
<div className="hidden md:block">
|
|
52
|
+
<div className="flex flex-col flex-1 min-h-0" key={index}>
|
|
53
|
+
<div className="flex-1 flex flex-col border-catchup-lighter-gray rounded-catchup-xlarge px-5 md:px-0 min-h-0">
|
|
54
|
+
<div className="hidden md:block flex-shrink-0">
|
|
55
55
|
<span className="font-semibold text-xl opacity-60">
|
|
56
56
|
{i18n.t("please_select_mcsa_text")}
|
|
57
57
|
</span>
|
|
58
58
|
</div>
|
|
59
|
-
<div className="hidden md:
|
|
59
|
+
<div className="hidden md:block flex-shrink-0">
|
|
60
60
|
<DividerLine />
|
|
61
61
|
</div>
|
|
62
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
62
63
|
{checkCanAnswerQuestion() ? (
|
|
63
64
|
<div
|
|
64
65
|
className={`flex flex-row w-full ${
|
|
@@ -159,10 +160,11 @@ const MCSAActivityMaterialContent = ({
|
|
|
159
160
|
))}
|
|
160
161
|
</p>
|
|
161
162
|
)}
|
|
163
|
+
</div>
|
|
162
164
|
</div>
|
|
163
165
|
</div>
|
|
164
166
|
);
|
|
165
|
-
});
|
|
167
|
+
})}</div>);
|
|
166
168
|
};
|
|
167
169
|
|
|
168
170
|
export default MCSAActivityMaterialContent;
|
|
@@ -253,7 +253,7 @@ const MatchingActivityMaterialContent = ({
|
|
|
253
253
|
const filteredMaterialList = retrieveFilteredMaterialList(displayAnswerMap);
|
|
254
254
|
|
|
255
255
|
return (
|
|
256
|
-
<div onMouseMove={handleMouseMove} onMouseUp={handleMouseUp}>
|
|
256
|
+
<div className="flex flex-col h-full" onMouseMove={handleMouseMove} onMouseUp={handleMouseUp}>
|
|
257
257
|
{draggedValue && mousePosition.x > 0 && (
|
|
258
258
|
<div
|
|
259
259
|
className="fixed pointer-events-none z-50 opacity-80"
|
|
@@ -425,6 +425,7 @@ const MatchingActivityMaterialContent = ({
|
|
|
425
425
|
</>
|
|
426
426
|
) : null}
|
|
427
427
|
|
|
428
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
428
429
|
{Object.keys(displayAnswerMap).map((answerMapKey, index) => {
|
|
429
430
|
const learnerAnswerState = checkAnswerState(
|
|
430
431
|
materialMap[answerMapKey],
|
|
@@ -551,6 +552,7 @@ const MatchingActivityMaterialContent = ({
|
|
|
551
552
|
</div>
|
|
552
553
|
);
|
|
553
554
|
})}
|
|
555
|
+
</div>
|
|
554
556
|
</div>
|
|
555
557
|
);
|
|
556
558
|
};
|
|
@@ -101,16 +101,16 @@ const OpenEndedActivityMaterialContent = ({
|
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
return (
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
<div className="hidden md:block">
|
|
104
|
+
<div className="flex flex-col h-full">
|
|
105
|
+
<div className="hidden md:block flex-shrink-0">
|
|
107
106
|
<span className="font-semibold text-xl opacity-60">
|
|
108
107
|
{i18n.t("please_select_open_ended_text")}
|
|
109
108
|
</span>
|
|
110
109
|
</div>
|
|
111
|
-
<div className="hidden md:
|
|
110
|
+
<div className="hidden md:block flex-shrink-0">
|
|
112
111
|
<DividerLine />
|
|
113
112
|
</div>
|
|
113
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
114
114
|
{contentMap.type === "TEXT"
|
|
115
115
|
? RenderTextContent(answerMap)
|
|
116
116
|
: contentMap.type === "IMAGE"
|
|
@@ -118,8 +118,8 @@ const OpenEndedActivityMaterialContent = ({
|
|
|
118
118
|
: contentMap.type === "AUDIO"
|
|
119
119
|
? RenderAudioContent(answerMap)
|
|
120
120
|
: null}
|
|
121
|
+
</div>
|
|
121
122
|
</div>
|
|
122
|
-
</>
|
|
123
123
|
);
|
|
124
124
|
};
|
|
125
125
|
|
|
@@ -153,7 +153,7 @@ const OrderingActivityMaterialContent = ({
|
|
|
153
153
|
|
|
154
154
|
return (
|
|
155
155
|
<div
|
|
156
|
-
className="flex flex-
|
|
156
|
+
className="flex flex-col h-full"
|
|
157
157
|
onMouseMove={handleMouseMove}
|
|
158
158
|
onMouseUp={handleMouseUp}
|
|
159
159
|
>
|
|
@@ -247,6 +247,7 @@ const OrderingActivityMaterialContent = ({
|
|
|
247
247
|
</div>
|
|
248
248
|
)}
|
|
249
249
|
|
|
250
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
250
251
|
{Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
251
252
|
const learnerAnswerState = checkAnswerState(
|
|
252
253
|
displayAnswerMap[materialKey] + "",
|
|
@@ -347,6 +348,7 @@ const OrderingActivityMaterialContent = ({
|
|
|
347
348
|
</div>
|
|
348
349
|
);
|
|
349
350
|
})}
|
|
351
|
+
</div>
|
|
350
352
|
</div>
|
|
351
353
|
);
|
|
352
354
|
};
|
|
@@ -49,16 +49,16 @@ const TrueFalseActivityMaterialContent = ({
|
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
return (
|
|
52
|
-
<div className="">
|
|
53
|
-
<div className="hidden md:block">
|
|
52
|
+
<div className="flex flex-col h-full">
|
|
53
|
+
<div className="hidden md:block flex-shrink-0">
|
|
54
54
|
<span className="font-semibold text-xl opacity-60">
|
|
55
55
|
{i18n.t("please_select_true_false_text")}
|
|
56
56
|
</span>
|
|
57
57
|
</div>
|
|
58
|
-
<div className="hidden md:
|
|
58
|
+
<div className="hidden md:block flex-shrink-0">
|
|
59
59
|
<DividerLine />
|
|
60
60
|
</div>
|
|
61
|
-
<div className="flex flex-row justify-end items-center gap-x-2">
|
|
61
|
+
<div className="flex flex-row justify-end items-center gap-x-2 flex-shrink-0">
|
|
62
62
|
<div className="w-[50px]">
|
|
63
63
|
<p className="font-bold text-lg">{i18n.t("true")}</p>
|
|
64
64
|
</div>
|
|
@@ -66,6 +66,7 @@ const TrueFalseActivityMaterialContent = ({
|
|
|
66
66
|
<p className="font-bold text-lg">{i18n.t("false")}</p>
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
69
|
+
<div className="flex-1 min-h-0 overflow-y-auto">
|
|
69
70
|
{checkCanAnswerQuestion() ? (
|
|
70
71
|
<div className={`flex flex-row w-full justify-center flex-wrap`}>
|
|
71
72
|
{shuffleOptionList.map((shuffleOption, index) => {
|
|
@@ -191,6 +192,7 @@ const TrueFalseActivityMaterialContent = ({
|
|
|
191
192
|
))}
|
|
192
193
|
</>
|
|
193
194
|
)}
|
|
195
|
+
</div>
|
|
194
196
|
</div>
|
|
195
197
|
);
|
|
196
198
|
};
|