@thanh01.pmt/interactive-quiz-kit 1.0.82 → 1.0.83
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/authoring.cjs +1111 -1187
- package/dist/authoring.d.cts +1 -1
- package/dist/authoring.d.ts +1 -1
- package/dist/authoring.mjs +840 -916
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/react-ui.cjs +44 -120
- package/dist/react-ui.d.cts +1 -1
- package/dist/react-ui.d.ts +1 -1
- package/dist/react-ui.mjs +44 -120
- package/dist/{toaster-Bj78wmSz.d.ts → toaster-DZskgIbn.d.ts} +4 -1
- package/dist/{toaster-CexT11VU.d.cts → toaster-DrUkr-h7.d.cts} +4 -1
- package/package.json +1 -1
package/dist/react-ui.mjs
CHANGED
|
@@ -138959,7 +138959,7 @@ function TopicManager({
|
|
|
138959
138959
|
setCurrentItem(topic);
|
|
138960
138960
|
setItemName(topic.name);
|
|
138961
138961
|
setItemCode(topic.code);
|
|
138962
|
-
setSelectedSubjectCode(topic.subjectCode);
|
|
138962
|
+
setSelectedSubjectCode(topic.subjectCode ?? "");
|
|
138963
138963
|
setIsDialogOpen(true);
|
|
138964
138964
|
};
|
|
138965
138965
|
const handleDeleteItem = (topic) => {
|
|
@@ -139037,7 +139037,7 @@ function TopicManager({
|
|
|
139037
139037
|
const getSubjectName = (subjectCode) => {
|
|
139038
139038
|
return subjects.find((s4) => s4.code === subjectCode)?.name || "N/A";
|
|
139039
139039
|
};
|
|
139040
|
-
return /* @__PURE__ */ React169__default.createElement(Card, null, /* @__PURE__ */ React169__default.createElement(CardHeader, null, /* @__PURE__ */ React169__default.createElement(CardTitle, { className: "flex justify-between items-center" }, /* @__PURE__ */ React169__default.createElement("span", { className: "flex items-center" }, /* @__PURE__ */ React169__default.createElement(Tag, { className: "mr-2 h-5 w-5 text-primary" }), " Manage Topics"), /* @__PURE__ */ React169__default.createElement("div", { className: "flex items-center gap-2" }, onBulkAdd && /* @__PURE__ */ React169__default.createElement(MetadataImportControls, { metadataName: "Topics", onImport: handleImport }), /* @__PURE__ */ React169__default.createElement(Button, { onClick: handleAddItem, size: "sm", disabled: subjects.length === 0 }, /* @__PURE__ */ React169__default.createElement(CirclePlus, { className: "mr-2 h-4 w-4" }), " Add Topic"))), subjects.length === 0 && !isLoading && /* @__PURE__ */ React169__default.createElement("p", { className: "text-sm text-destructive" }, "Please add subjects before adding topics.")), /* @__PURE__ */ React169__default.createElement(CardContent, null, isLoading ? /* @__PURE__ */ React169__default.createElement("div", { className: "flex justify-center items-center h-32" }, /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "h-8 w-8 animate-spin text-primary" })) : topics.length === 0 ? /* @__PURE__ */ React169__default.createElement("p", { className: "text-center text-muted-foreground py-4" }, "No topics found. Add one to get started!") : /* @__PURE__ */ React169__default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React169__default.createElement(Table3, null, /* @__PURE__ */ React169__default.createElement(TableHeader, null, /* @__PURE__ */ React169__default.createElement(TableRow, null, /* @__PURE__ */ React169__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Name"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__default.createElement(TableBody, null, topics.map((topic) => /* @__PURE__ */ React169__default.createElement(TableRow, { key: topic.id }, /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-mono text-xs" }, topic.code), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-Medium" }, topic.name), /* @__PURE__ */ React169__default.createElement(TableCell, null, getSubjectName(topic.subjectCode), " (", topic.subjectCode, ")"), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "text-right" }, /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => handleEditItem(topic), className: "mr-2" }, /* @__PURE__ */ React169__default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => handleDeleteItem(topic), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" })))))))), /* @__PURE__ */ React169__default.createElement(Dialog2, { open: isDialogOpen, onOpenChange: setIsDialogOpen }, /* @__PURE__ */ React169__default.createElement(DialogContent2, { className: "sm:max-w-md" }, /* @__PURE__ */ React169__default.createElement(DialogHeader, null, /* @__PURE__ */ React169__default.createElement(DialogTitle2, null, currentItem ? "Edit Topic" : "Add New Topic")), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-4 py-4" }, /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "itemCode" }, "Topic Code"), /* @__PURE__ */ React169__default.createElement(Input, { id: "itemCode", value: itemCode, onChange: (e3) => setItemCode(e3.target.value.toUpperCase()), placeholder: "e.g., ALG-BASICS", disabled: !!currentItem })), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "itemName" }, "Topic Name"), /* @__PURE__ */ React169__default.createElement(Input, { id: "itemName", value: itemName, onChange: (e3) => setItemName(e3.target.value), placeholder: "e.g., Algebra Basics" })), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subjectCode" }, "Subject"), /* @__PURE__ */ React169__default.createElement(Select2, { value: selectedSubjectCode, onValueChange: setSelectedSubjectCode, disabled: subjects.length === 0 }, /* @__PURE__ */ React169__default.createElement(SelectTrigger2, { id: "subjectCode" }, /* @__PURE__ */ React169__default.createElement(SelectValue2, { placeholder: "Select a subject" })), /* @__PURE__ */ React169__default.createElement(SelectContent2, null, subjects.map((subject) => /* @__PURE__ */ React169__default.createElement(SelectItem2, { key: subject.code, value: subject.code }, subject.name, " (", subject.code, ")")))))), /* @__PURE__ */ React169__default.createElement(DialogFooter, null, /* @__PURE__ */ React169__default.createElement(Button, { type: "button", variant: "outline", onClick: () => setIsDialogOpen(false), disabled: isPending }, "Cancel"), /* @__PURE__ */ React169__default.createElement(Button, { type: "submit", onClick: handleSubmit, disabled: isPending || !itemName.trim() || !itemCode.trim() || !selectedSubjectCode }, isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), " Save")))), /* @__PURE__ */ React169__default.createElement(AlertDialog2, { open: isAlertOpen, onOpenChange: setIsAlertOpen }, /* @__PURE__ */ React169__default.createElement(AlertDialogContent2, null, /* @__PURE__ */ React169__default.createElement(AlertDialogHeader, null, /* @__PURE__ */ React169__default.createElement(AlertDialogTitle2, null, "Are you sure?"), /* @__PURE__ */ React169__default.createElement(AlertDialogDescription2, null, 'This will permanently delete topic "', itemToDelete?.name, '".')), /* @__PURE__ */ React169__default.createElement(AlertDialogFooter, null, /* @__PURE__ */ React169__default.createElement(AlertDialogCancel2, { disabled: isPending }, "Cancel"), /* @__PURE__ */ React169__default.createElement(AlertDialogAction2, { onClick: confirmDelete, disabled: isPending, className: "bg-destructive hover:bg-destructive/90" }, isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), " Delete"))))));
|
|
139040
|
+
return /* @__PURE__ */ React169__default.createElement(Card, null, /* @__PURE__ */ React169__default.createElement(CardHeader, null, /* @__PURE__ */ React169__default.createElement(CardTitle, { className: "flex justify-between items-center" }, /* @__PURE__ */ React169__default.createElement("span", { className: "flex items-center" }, /* @__PURE__ */ React169__default.createElement(Tag, { className: "mr-2 h-5 w-5 text-primary" }), " Manage Topics"), /* @__PURE__ */ React169__default.createElement("div", { className: "flex items-center gap-2" }, onBulkAdd && /* @__PURE__ */ React169__default.createElement(MetadataImportControls, { metadataName: "Topics", onImport: handleImport }), /* @__PURE__ */ React169__default.createElement(Button, { onClick: handleAddItem, size: "sm", disabled: subjects.length === 0 }, /* @__PURE__ */ React169__default.createElement(CirclePlus, { className: "mr-2 h-4 w-4" }), " Add Topic"))), subjects.length === 0 && !isLoading && /* @__PURE__ */ React169__default.createElement("p", { className: "text-sm text-destructive" }, "Please add subjects before adding topics.")), /* @__PURE__ */ React169__default.createElement(CardContent, null, isLoading ? /* @__PURE__ */ React169__default.createElement("div", { className: "flex justify-center items-center h-32" }, /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "h-8 w-8 animate-spin text-primary" })) : topics.length === 0 ? /* @__PURE__ */ React169__default.createElement("p", { className: "text-center text-muted-foreground py-4" }, "No topics found. Add one to get started!") : /* @__PURE__ */ React169__default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React169__default.createElement(Table3, null, /* @__PURE__ */ React169__default.createElement(TableHeader, null, /* @__PURE__ */ React169__default.createElement(TableRow, null, /* @__PURE__ */ React169__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Name"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__default.createElement(TableBody, null, topics.map((topic) => /* @__PURE__ */ React169__default.createElement(TableRow, { key: topic.id }, /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-mono text-xs" }, topic.code), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-Medium" }, topic.name), /* @__PURE__ */ React169__default.createElement(TableCell, null, getSubjectName(topic.subjectCode ?? ""), " (", topic.subjectCode, ")"), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "text-right" }, /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => handleEditItem(topic), className: "mr-2" }, /* @__PURE__ */ React169__default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => handleDeleteItem(topic), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" })))))))), /* @__PURE__ */ React169__default.createElement(Dialog2, { open: isDialogOpen, onOpenChange: setIsDialogOpen }, /* @__PURE__ */ React169__default.createElement(DialogContent2, { className: "sm:max-w-md" }, /* @__PURE__ */ React169__default.createElement(DialogHeader, null, /* @__PURE__ */ React169__default.createElement(DialogTitle2, null, currentItem ? "Edit Topic" : "Add New Topic")), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-4 py-4" }, /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "itemCode" }, "Topic Code"), /* @__PURE__ */ React169__default.createElement(Input, { id: "itemCode", value: itemCode, onChange: (e3) => setItemCode(e3.target.value.toUpperCase()), placeholder: "e.g., ALG-BASICS", disabled: !!currentItem })), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "itemName" }, "Topic Name"), /* @__PURE__ */ React169__default.createElement(Input, { id: "itemName", value: itemName, onChange: (e3) => setItemName(e3.target.value), placeholder: "e.g., Algebra Basics" })), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subjectCode" }, "Subject"), /* @__PURE__ */ React169__default.createElement(Select2, { value: selectedSubjectCode, onValueChange: setSelectedSubjectCode, disabled: subjects.length === 0 }, /* @__PURE__ */ React169__default.createElement(SelectTrigger2, { id: "subjectCode" }, /* @__PURE__ */ React169__default.createElement(SelectValue2, { placeholder: "Select a subject" })), /* @__PURE__ */ React169__default.createElement(SelectContent2, null, subjects.map((subject) => /* @__PURE__ */ React169__default.createElement(SelectItem2, { key: subject.code, value: subject.code }, subject.name, " (", subject.code, ")")))))), /* @__PURE__ */ React169__default.createElement(DialogFooter, null, /* @__PURE__ */ React169__default.createElement(Button, { type: "button", variant: "outline", onClick: () => setIsDialogOpen(false), disabled: isPending }, "Cancel"), /* @__PURE__ */ React169__default.createElement(Button, { type: "submit", onClick: handleSubmit, disabled: isPending || !itemName.trim() || !itemCode.trim() || !selectedSubjectCode }, isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), " Save")))), /* @__PURE__ */ React169__default.createElement(AlertDialog2, { open: isAlertOpen, onOpenChange: setIsAlertOpen }, /* @__PURE__ */ React169__default.createElement(AlertDialogContent2, null, /* @__PURE__ */ React169__default.createElement(AlertDialogHeader, null, /* @__PURE__ */ React169__default.createElement(AlertDialogTitle2, null, "Are you sure?"), /* @__PURE__ */ React169__default.createElement(AlertDialogDescription2, null, 'This will permanently delete topic "', itemToDelete?.name, '".')), /* @__PURE__ */ React169__default.createElement(AlertDialogFooter, null, /* @__PURE__ */ React169__default.createElement(AlertDialogCancel2, { disabled: isPending }, "Cancel"), /* @__PURE__ */ React169__default.createElement(AlertDialogAction2, { onClick: confirmDelete, disabled: isPending, className: "bg-destructive hover:bg-destructive/90" }, isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), " Delete"))))));
|
|
139041
139041
|
}
|
|
139042
139042
|
|
|
139043
139043
|
// src/react-ui/components/metadata/CategoryManager.tsx
|
|
@@ -139435,6 +139435,9 @@ init_react_shim();
|
|
|
139435
139435
|
function LearningObjectiveManager({
|
|
139436
139436
|
initialData,
|
|
139437
139437
|
subjects: subjectsProp,
|
|
139438
|
+
categories: categoriesProp,
|
|
139439
|
+
topics: topicsProp,
|
|
139440
|
+
gradeLevels: gradeLevelsProp,
|
|
139438
139441
|
isLoading: isLoadingProp,
|
|
139439
139442
|
onAdd,
|
|
139440
139443
|
onUpdate,
|
|
@@ -139443,6 +139446,9 @@ function LearningObjectiveManager({
|
|
|
139443
139446
|
}) {
|
|
139444
139447
|
const [items, setItems] = useState([]);
|
|
139445
139448
|
const [subjects, setSubjects] = useState([]);
|
|
139449
|
+
const [categories, setCategories] = useState([]);
|
|
139450
|
+
const [topics, setTopics] = useState([]);
|
|
139451
|
+
const [gradeLevels, setGradeLevels] = useState([]);
|
|
139446
139452
|
const [isLoading, setIsLoading] = useState(true);
|
|
139447
139453
|
const [isDialogOpen, setIsDialogOpen] = useState(false);
|
|
139448
139454
|
const [isAlertOpen, setIsAlertOpen] = useState(false);
|
|
@@ -139477,13 +139483,34 @@ function LearningObjectiveManager({
|
|
|
139477
139483
|
if (isControlled) {
|
|
139478
139484
|
setItems(initialData || []);
|
|
139479
139485
|
setSubjects(subjectsProp || []);
|
|
139486
|
+
setCategories(categoriesProp || []);
|
|
139487
|
+
setTopics(topicsProp || []);
|
|
139488
|
+
setGradeLevels(gradeLevelsProp || []);
|
|
139480
139489
|
setIsLoading(isLoadingProp || false);
|
|
139481
139490
|
} else {
|
|
139482
139491
|
refreshData();
|
|
139483
139492
|
}
|
|
139484
|
-
}, [isControlled, initialData, subjectsProp, isLoadingProp]);
|
|
139493
|
+
}, [isControlled, initialData, subjectsProp, categoriesProp, topicsProp, gradeLevelsProp, isLoadingProp]);
|
|
139494
|
+
const filteredCategories = useMemo(() => {
|
|
139495
|
+
if (!formState.subjectCode) return [];
|
|
139496
|
+
return categories.filter((c4) => c4.subjectCode === formState.subjectCode);
|
|
139497
|
+
}, [formState.subjectCode, categories]);
|
|
139498
|
+
const filteredTopics = useMemo(() => {
|
|
139499
|
+
if (!formState.categoryCode) return [];
|
|
139500
|
+
return topics.filter((t4) => t4.categoryCode === formState.categoryCode);
|
|
139501
|
+
}, [formState.categoryCode, topics]);
|
|
139485
139502
|
const handleFormChange = (field, value) => {
|
|
139486
|
-
setFormState((prev) =>
|
|
139503
|
+
setFormState((prev) => {
|
|
139504
|
+
const newState = { ...prev, [field]: value };
|
|
139505
|
+
if (field === "subjectCode") {
|
|
139506
|
+
newState.categoryCode = "";
|
|
139507
|
+
newState.topicCode = "";
|
|
139508
|
+
}
|
|
139509
|
+
if (field === "categoryCode") {
|
|
139510
|
+
newState.topicCode = "";
|
|
139511
|
+
}
|
|
139512
|
+
return newState;
|
|
139513
|
+
});
|
|
139487
139514
|
};
|
|
139488
139515
|
const handleAddItem = () => {
|
|
139489
139516
|
setCurrentItem(null);
|
|
@@ -139494,11 +139521,7 @@ function LearningObjectiveManager({
|
|
|
139494
139521
|
};
|
|
139495
139522
|
const handleEditItem = (item) => {
|
|
139496
139523
|
setCurrentItem(item);
|
|
139497
|
-
|
|
139498
|
-
setFormState({
|
|
139499
|
-
...item,
|
|
139500
|
-
subject: subject ? subject.name : item.subject || ""
|
|
139501
|
-
});
|
|
139524
|
+
setFormState({ ...item });
|
|
139502
139525
|
setIsDialogOpen(true);
|
|
139503
139526
|
};
|
|
139504
139527
|
const handleDeleteItem = (item) => {
|
|
@@ -139600,7 +139623,6 @@ function LearningObjectiveManager({
|
|
|
139600
139623
|
acc.valid.push({
|
|
139601
139624
|
code: rec["LO ID"],
|
|
139602
139625
|
name: rec["LO Name"] || rec["LO Description"],
|
|
139603
|
-
// Use description if name is missing
|
|
139604
139626
|
description: rec["LO Description"],
|
|
139605
139627
|
subject: rec["Subject"] || "",
|
|
139606
139628
|
subjectCode: rec["Subject Code"] || rec["Subject"],
|
|
@@ -139668,141 +139690,43 @@ function LearningObjectiveManager({
|
|
|
139668
139690
|
className: "text-destructive hover:text-destructive"
|
|
139669
139691
|
},
|
|
139670
139692
|
/* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" })
|
|
139671
|
-
))))))))), /* @__PURE__ */ React169__default.createElement(Dialog2, { open: isDialogOpen, onOpenChange: setIsDialogOpen }, /* @__PURE__ */ React169__default.createElement(DialogContent2, { className: "sm:max-w-2xl
|
|
139693
|
+
))))))))), /* @__PURE__ */ React169__default.createElement(Dialog2, { open: isDialogOpen, onOpenChange: setIsDialogOpen }, /* @__PURE__ */ React169__default.createElement(DialogContent2, { className: "sm:max-w-2xl max-h-[90vh] flex flex-col" }, /* @__PURE__ */ React169__default.createElement(DialogHeader, { className: "p-6 pb-0" }, /* @__PURE__ */ React169__default.createElement(DialogTitle2, null, currentItem ? "Edit Learning Objective" : "Add New Learning Objective")), /* @__PURE__ */ React169__default.createElement(ScrollArea2, { className: "flex-1 pr-1" }, /* @__PURE__ */ React169__default.createElement("div", { className: "px-6 py-4 grid gap-4" }, /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "code" }, "LO Code"), /* @__PURE__ */ React169__default.createElement(
|
|
139672
139694
|
Input,
|
|
139673
139695
|
{
|
|
139674
139696
|
id: "code",
|
|
139675
139697
|
value: formState.code || "",
|
|
139676
|
-
onChange: (e3) => handleFormChange(
|
|
139677
|
-
"code",
|
|
139678
|
-
e3.target.value.toUpperCase()
|
|
139679
|
-
),
|
|
139698
|
+
onChange: (e3) => handleFormChange("code", e3.target.value.toUpperCase()),
|
|
139680
139699
|
disabled: !!currentItem
|
|
139681
139700
|
}
|
|
139682
|
-
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "name" }, "Name (Description)"), /* @__PURE__ */ React169__default.createElement(
|
|
139701
|
+
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "name" }, "LO Name (Description)"), /* @__PURE__ */ React169__default.createElement(
|
|
139683
139702
|
Input,
|
|
139684
139703
|
{
|
|
139685
139704
|
id: "name",
|
|
139686
139705
|
value: formState.name || "",
|
|
139687
|
-
onChange: (e3) => handleFormChange(
|
|
139688
|
-
"name",
|
|
139689
|
-
e3.target.value
|
|
139690
|
-
)
|
|
139691
|
-
}
|
|
139692
|
-
))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subject" }, "Subject Name"), /* @__PURE__ */ React169__default.createElement(
|
|
139693
|
-
Input,
|
|
139694
|
-
{
|
|
139695
|
-
id: "subject",
|
|
139696
|
-
value: formState.subject || "",
|
|
139697
|
-
onChange: (e3) => handleFormChange(
|
|
139698
|
-
"subject",
|
|
139699
|
-
e3.target.value
|
|
139700
|
-
)
|
|
139701
|
-
}
|
|
139702
|
-
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subjectCode" }, "Subject Code"), /* @__PURE__ */ React169__default.createElement(
|
|
139703
|
-
EditableCombobox,
|
|
139704
|
-
{
|
|
139705
|
-
options: subjects.map((s4) => ({
|
|
139706
|
-
value: s4.code,
|
|
139707
|
-
label: s4.name
|
|
139708
|
-
})),
|
|
139709
|
-
value: formState.subjectCode || "",
|
|
139710
|
-
onChange: (val) => handleFormChange("subjectCode", val),
|
|
139711
|
-
placeholder: "Select a subject..."
|
|
139712
|
-
}
|
|
139713
|
-
))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "category" }, "Category Name"), /* @__PURE__ */ React169__default.createElement(
|
|
139714
|
-
Input,
|
|
139715
|
-
{
|
|
139716
|
-
id: "category",
|
|
139717
|
-
value: formState.category || "",
|
|
139718
|
-
onChange: (e3) => handleFormChange(
|
|
139719
|
-
"category",
|
|
139720
|
-
e3.target.value
|
|
139721
|
-
)
|
|
139722
|
-
}
|
|
139723
|
-
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "categoryCode" }, "Category Code"), /* @__PURE__ */ React169__default.createElement(
|
|
139724
|
-
Input,
|
|
139725
|
-
{
|
|
139726
|
-
id: "categoryCode",
|
|
139727
|
-
value: formState.categoryCode || "",
|
|
139728
|
-
onChange: (e3) => handleFormChange(
|
|
139729
|
-
"categoryCode",
|
|
139730
|
-
e3.target.value
|
|
139731
|
-
)
|
|
139732
|
-
}
|
|
139733
|
-
))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topic" }, "Topic Name"), /* @__PURE__ */ React169__default.createElement(
|
|
139734
|
-
Input,
|
|
139735
|
-
{
|
|
139736
|
-
id: "topic",
|
|
139737
|
-
value: formState.topic || "",
|
|
139738
|
-
onChange: (e3) => handleFormChange(
|
|
139739
|
-
"topic",
|
|
139740
|
-
e3.target.value
|
|
139741
|
-
)
|
|
139742
|
-
}
|
|
139743
|
-
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topicCode" }, "Topic Code"), /* @__PURE__ */ React169__default.createElement(
|
|
139744
|
-
Input,
|
|
139745
|
-
{
|
|
139746
|
-
id: "topicCode",
|
|
139747
|
-
value: formState.topicCode || "",
|
|
139748
|
-
onChange: (e3) => handleFormChange(
|
|
139749
|
-
"topicCode",
|
|
139750
|
-
e3.target.value
|
|
139751
|
-
)
|
|
139706
|
+
onChange: (e3) => handleFormChange("name", e3.target.value)
|
|
139752
139707
|
}
|
|
139753
|
-
))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "
|
|
139754
|
-
Input,
|
|
139755
|
-
{
|
|
139756
|
-
id: "grade",
|
|
139757
|
-
value: formState.grade || "",
|
|
139758
|
-
onChange: (e3) => handleFormChange(
|
|
139759
|
-
"grade",
|
|
139760
|
-
e3.target.value
|
|
139761
|
-
)
|
|
139762
|
-
}
|
|
139763
|
-
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "gradeCode" }, "Grade Code"), /* @__PURE__ */ React169__default.createElement(
|
|
139764
|
-
Input,
|
|
139765
|
-
{
|
|
139766
|
-
id: "gradeCode",
|
|
139767
|
-
value: formState.gradeCode || "",
|
|
139768
|
-
onChange: (e3) => handleFormChange(
|
|
139769
|
-
"gradeCode",
|
|
139770
|
-
e3.target.value
|
|
139771
|
-
)
|
|
139772
|
-
}
|
|
139773
|
-
))), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "keywords" }, "Keywords (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
|
|
139708
|
+
))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subjectCode" }, "Subject"), /* @__PURE__ */ React169__default.createElement(Select2, { value: formState.subjectCode || "", onValueChange: (val) => handleFormChange("subjectCode", val) }, /* @__PURE__ */ React169__default.createElement(SelectTrigger2, null, /* @__PURE__ */ React169__default.createElement(SelectValue2, { placeholder: "Select a subject..." })), /* @__PURE__ */ React169__default.createElement(SelectContent2, null, subjects.map((s4) => /* @__PURE__ */ React169__default.createElement(SelectItem2, { key: s4.code, value: s4.code }, s4.name))))), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "categoryCode" }, "Category"), /* @__PURE__ */ React169__default.createElement(Select2, { value: formState.categoryCode || "", onValueChange: (val) => handleFormChange("categoryCode", val), disabled: !formState.subjectCode }, /* @__PURE__ */ React169__default.createElement(SelectTrigger2, null, /* @__PURE__ */ React169__default.createElement(SelectValue2, { placeholder: "Select a category..." })), /* @__PURE__ */ React169__default.createElement(SelectContent2, null, filteredCategories.map((c4) => /* @__PURE__ */ React169__default.createElement(SelectItem2, { key: c4.code, value: c4.code }, c4.name)))))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topicCode" }, "Topic"), /* @__PURE__ */ React169__default.createElement(Select2, { value: formState.topicCode || "", onValueChange: (val) => handleFormChange("topicCode", val), disabled: !formState.categoryCode }, /* @__PURE__ */ React169__default.createElement(SelectTrigger2, null, /* @__PURE__ */ React169__default.createElement(SelectValue2, { placeholder: "Select a topic..." })), /* @__PURE__ */ React169__default.createElement(SelectContent2, null, filteredTopics.map((t4) => /* @__PURE__ */ React169__default.createElement(SelectItem2, { key: t4.code, value: t4.code }, t4.name))))), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "gradeCode" }, "Grade Level"), /* @__PURE__ */ React169__default.createElement(Select2, { value: formState.gradeCode || "", onValueChange: (val) => handleFormChange("gradeCode", val) }, /* @__PURE__ */ React169__default.createElement(SelectTrigger2, null, /* @__PURE__ */ React169__default.createElement(SelectValue2, { placeholder: "Select a grade level..." })), /* @__PURE__ */ React169__default.createElement(SelectContent2, null, gradeLevels.map((g) => /* @__PURE__ */ React169__default.createElement(SelectItem2, { key: g.code, value: g.code }, g.name)))))), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "keywords" }, "Keywords (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
|
|
139774
139709
|
Textarea,
|
|
139775
139710
|
{
|
|
139776
139711
|
id: "keywords",
|
|
139777
|
-
value: formState.keywords
|
|
139778
|
-
onChange: (e3) => handleFormChange(
|
|
139779
|
-
"keywords",
|
|
139780
|
-
e3.target.value.split(",").map((s4) => s4.trim())
|
|
139781
|
-
)
|
|
139712
|
+
value: Array.isArray(formState.keywords) ? formState.keywords.join(", ") : "",
|
|
139713
|
+
onChange: (e3) => handleFormChange("keywords", e3.target.value.split(",").map((s4) => s4.trim()))
|
|
139782
139714
|
}
|
|
139783
139715
|
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "stemElements" }, "STEM Elements (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
|
|
139784
139716
|
Textarea,
|
|
139785
139717
|
{
|
|
139786
139718
|
id: "stemElements",
|
|
139787
|
-
value: formState.stemElements
|
|
139788
|
-
onChange: (e3) => handleFormChange(
|
|
139789
|
-
"stemElements",
|
|
139790
|
-
e3.target.value.split(",").map((s4) => s4.trim())
|
|
139791
|
-
)
|
|
139719
|
+
value: Array.isArray(formState.stemElements) ? formState.stemElements.join(", ") : "",
|
|
139720
|
+
onChange: (e3) => handleFormChange("stemElements", e3.target.value.split(",").map((s4) => s4.trim()))
|
|
139792
139721
|
}
|
|
139793
139722
|
)), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "bloomLevelsGuideline" }, "Bloom's Guideline (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
|
|
139794
139723
|
Textarea,
|
|
139795
139724
|
{
|
|
139796
139725
|
id: "bloomLevelsGuideline",
|
|
139797
|
-
value: formState.bloomLevelsGuideline
|
|
139798
|
-
|
|
139799
|
-
) || "",
|
|
139800
|
-
onChange: (e3) => handleFormChange(
|
|
139801
|
-
"bloomLevelsGuideline",
|
|
139802
|
-
e3.target.value.split(",").map((s4) => s4.trim())
|
|
139803
|
-
)
|
|
139726
|
+
value: Array.isArray(formState.bloomLevelsGuideline) ? formState.bloomLevelsGuideline.join(", ") : "",
|
|
139727
|
+
onChange: (e3) => handleFormChange("bloomLevelsGuideline", e3.target.value.split(",").map((s4) => s4.trim()))
|
|
139804
139728
|
}
|
|
139805
|
-
))))
|
|
139729
|
+
)))), /* @__PURE__ */ React169__default.createElement(DialogFooter, { className: "p-6 pt-4 border-t" }, /* @__PURE__ */ React169__default.createElement(
|
|
139806
139730
|
Button,
|
|
139807
139731
|
{
|
|
139808
139732
|
type: "button",
|
|
@@ -267,13 +267,16 @@ declare function QuestionTypeManager({ initialData, isLoading: isLoadingProp, on
|
|
|
267
267
|
interface LearningObjectiveManagerProps {
|
|
268
268
|
initialData?: LearningObjective[];
|
|
269
269
|
subjects?: Subject[];
|
|
270
|
+
categories?: Category[];
|
|
271
|
+
topics?: Topic[];
|
|
272
|
+
gradeLevels?: GradeLevel[];
|
|
270
273
|
isLoading?: boolean;
|
|
271
274
|
onAdd?: (item: Omit<LearningObjective, "id">) => Promise<void>;
|
|
272
275
|
onUpdate?: (item: LearningObjective) => Promise<void>;
|
|
273
276
|
onDelete?: (item: LearningObjective) => Promise<void>;
|
|
274
277
|
onBulkAdd?: (items: Omit<LearningObjective, "id">[]) => Promise<void>;
|
|
275
278
|
}
|
|
276
|
-
declare function LearningObjectiveManager({ initialData, subjects: subjectsProp, isLoading: isLoadingProp, onAdd, onUpdate, onDelete, onBulkAdd, }: LearningObjectiveManagerProps): React__default.JSX.Element;
|
|
279
|
+
declare function LearningObjectiveManager({ initialData, subjects: subjectsProp, categories: categoriesProp, topics: topicsProp, gradeLevels: gradeLevelsProp, isLoading: isLoadingProp, onAdd, onUpdate, onDelete, onBulkAdd, }: LearningObjectiveManagerProps): React__default.JSX.Element;
|
|
277
280
|
|
|
278
281
|
interface ContextManagerProps {
|
|
279
282
|
initialData?: Context[];
|
|
@@ -267,13 +267,16 @@ declare function QuestionTypeManager({ initialData, isLoading: isLoadingProp, on
|
|
|
267
267
|
interface LearningObjectiveManagerProps {
|
|
268
268
|
initialData?: LearningObjective[];
|
|
269
269
|
subjects?: Subject[];
|
|
270
|
+
categories?: Category[];
|
|
271
|
+
topics?: Topic[];
|
|
272
|
+
gradeLevels?: GradeLevel[];
|
|
270
273
|
isLoading?: boolean;
|
|
271
274
|
onAdd?: (item: Omit<LearningObjective, "id">) => Promise<void>;
|
|
272
275
|
onUpdate?: (item: LearningObjective) => Promise<void>;
|
|
273
276
|
onDelete?: (item: LearningObjective) => Promise<void>;
|
|
274
277
|
onBulkAdd?: (items: Omit<LearningObjective, "id">[]) => Promise<void>;
|
|
275
278
|
}
|
|
276
|
-
declare function LearningObjectiveManager({ initialData, subjects: subjectsProp, isLoading: isLoadingProp, onAdd, onUpdate, onDelete, onBulkAdd, }: LearningObjectiveManagerProps): React__default.JSX.Element;
|
|
279
|
+
declare function LearningObjectiveManager({ initialData, subjects: subjectsProp, categories: categoriesProp, topics: topicsProp, gradeLevels: gradeLevelsProp, isLoading: isLoadingProp, onAdd, onUpdate, onDelete, onBulkAdd, }: LearningObjectiveManagerProps): React__default.JSX.Element;
|
|
277
280
|
|
|
278
281
|
interface ContextManagerProps {
|
|
279
282
|
initialData?: Context[];
|
package/package.json
CHANGED