@project-sunbird/collection-editor-react 1.0.4 → 1.0.6
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/api/client.d.ts +10 -0
- package/dist/api/client.test.d.ts +1 -0
- package/dist/collection-editor.umd.js +112 -112
- package/dist/components/UnitContentList/SkillPicker.d.ts +4 -0
- package/dist/components/modals/ConfirmDialog.d.ts +9 -5
- package/dist/hooks/useAssessmentSlots.d.ts +6 -0
- package/dist/hooks/useSkillScopeNarrowingAlert.d.ts +10 -0
- package/dist/i18n/locales/ar.json.d.ts +11 -1
- package/dist/i18n/locales/en.json.d.ts +11 -1
- package/dist/i18n/locales/fr.json.d.ts +11 -1
- package/dist/i18n/locales/pt.json.d.ts +11 -1
- package/dist/index.cjs +109 -109
- package/dist/index.js +7452 -7328
- package/dist/store/tree.store.d.ts +4 -0
- package/dist/style.css +1 -1
- package/dist/types/editor.d.ts +5 -0
- package/dist/utils/lpStructure.d.ts +28 -7
- package/package.json +1 -1
|
@@ -5,6 +5,10 @@ interface SkillPickerProps {
|
|
|
5
5
|
/** Selected skills that fell outside the scope after the prior assessment changed —
|
|
6
6
|
* flagged for re-selection rather than silently dropped. */
|
|
7
7
|
outOfScope: string[];
|
|
8
|
+
/** Selected skills with zero linked course under this Level actually
|
|
9
|
+
* tagged for them — covered in name only. Independent of outOfScope; a
|
|
10
|
+
* skill can be flagged for both at once. */
|
|
11
|
+
uncovered: string[];
|
|
8
12
|
onChange: (skills: string[]) => void;
|
|
9
13
|
isEditable: boolean;
|
|
10
14
|
/** Explains where the options come from — prior assessment scope, or the
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
interface ConfirmDialogProps {
|
|
3
|
-
|
|
4
|
-
message: React.ReactNode;
|
|
5
|
-
confirmLabel?: string;
|
|
6
|
-
cancelLabel?: string;
|
|
7
|
-
variant?: 'primary' | 'danger';
|
|
3
|
+
message: string;
|
|
8
4
|
onConfirm: () => void;
|
|
9
5
|
onCancel: () => void;
|
|
10
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Generic in-app replacement for window.confirm — a styled popup instead of
|
|
9
|
+
* the browser's native "localhost:5173 says..." alert, which can't be
|
|
10
|
+
* themed and looks out of place next to the rest of the editor's UI.
|
|
11
|
+
* Callers open it via useUiStore's openModal('confirmDelete', { message,
|
|
12
|
+
* onConfirm }); rendered once from Topbar.tsx alongside the other
|
|
13
|
+
* activeModal-driven modals.
|
|
14
|
+
*/
|
|
11
15
|
export declare const ConfirmDialog: React.FC<ConfirmDialogProps>;
|
|
12
16
|
export {};
|
|
@@ -3,6 +3,12 @@ export interface AssessmentSlotInfo {
|
|
|
3
3
|
level: INode | undefined;
|
|
4
4
|
filled: boolean;
|
|
5
5
|
courseName: string | undefined;
|
|
6
|
+
/** Whether publish/send-for-review blocks without this slot
|
|
7
|
+
* (validateLearningPathStructure): Prior Assessment only under a policy
|
|
8
|
+
* in REQUIRES_PRIOR_POLICIES (Diagnostic/"Adaptive" — it skips solely on
|
|
9
|
+
* this score; PriorLearning can skip on external evidence instead).
|
|
10
|
+
* Outcome Assessment is optional — always false. */
|
|
11
|
+
required: boolean;
|
|
6
12
|
}
|
|
7
13
|
export interface UseAssessmentSlotsResult {
|
|
8
14
|
pre: AssessmentSlotInfo;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactively toasts when linking or changing the Prior Assessment narrows
|
|
3
|
+
* the skill scope enough that one or more existing content Levels now have
|
|
4
|
+
* a selected skill outside it — otherwise this only ever surfaces later, as
|
|
5
|
+
* a levelSkillsOutOfScope issue at send-for-review/publish time. Mounted
|
|
6
|
+
* once from a component that stays mounted for the whole editing session
|
|
7
|
+
* (not UnitContentList, which mounts/unmounts per node selection and would
|
|
8
|
+
* lose its "have I already alerted for this" state on every navigation).
|
|
9
|
+
*/
|
|
10
|
+
export declare function useSkillScopeNarrowingAlert(): void;
|
|
@@ -219,6 +219,7 @@ declare const _default: {
|
|
|
219
219
|
"saveButton": "حفظ"
|
|
220
220
|
},
|
|
221
221
|
"confirmDialog": {
|
|
222
|
+
"title": "تأكيد الحذف",
|
|
222
223
|
"confirmButton": "تأكيد",
|
|
223
224
|
"cancelButton": "إلغاء",
|
|
224
225
|
"closeAriaLabel": "إغلاق"
|
|
@@ -468,15 +469,21 @@ declare const _default: {
|
|
|
468
469
|
"outcomeCheckBadge": "فحص النتيجة",
|
|
469
470
|
"assessmentCourseMeta": "مقرر · بنك أسئلة فقط",
|
|
470
471
|
"addAssessmentSlotButton": "إضافة {label} — مقرر يحتوي على بنك أسئلة فقط",
|
|
472
|
+
"requiredSlotBadge": "مطلوب",
|
|
471
473
|
"removeAssessmentSlotButton": "إزالة",
|
|
472
474
|
"deletePriorAssessmentConfirm": "حذف التقييم المسبق يزيل الدرجة التي يعتمد عليها التخطي التكيفي لهذا المسار. هل تريد الاستمرار؟",
|
|
473
475
|
"deleteAssessmentSlotConfirm": "هل تريد إزالة مقرر التقييم هذا من المسار؟",
|
|
476
|
+
"deleteLevelConfirm": "هل تريد حذف \"{name}\" وكل ما يحتويه؟",
|
|
477
|
+
"deleteCourseConfirm": "هل تريد إزالة هذا المقرر من المسار؟",
|
|
478
|
+
"deleteMultipleConfirm": "هل تريد حذف {count} من العناصر المحددة من المسار؟",
|
|
474
479
|
"courseNameUnavailable": "تفاصيل المقرر غير متوفرة",
|
|
475
480
|
"notAssessmentCourseToast": "\"{name}\" ليس مقررًا يحتوي على بنك أسئلة فقط، لذا لا يمكن استخدامه كتقييم.",
|
|
476
481
|
"bothSlotsFilledToast": "تم تعبئة تقييمي المسبق والنتائج بالفعل.",
|
|
477
482
|
"assessmentCheckFailedToast": "تعذر التحقق من هذا المقرر. حاول مرة أخرى.",
|
|
478
483
|
"skillsHeading": "المهارات",
|
|
479
484
|
"skillsOutOfScopeWarning": "خارج النطاق، يرجى إعادة الاختيار: {skills}",
|
|
485
|
+
"skillsUncoveredWarning": "لا يغطي أي مقرر هذه المهارات بعد: {skills}",
|
|
486
|
+
"skillUncoveredPillTitle": "لا يوجد مقرر مرتبط موسوم بهذه المهارة بعد",
|
|
480
487
|
"searchSkillsPlaceholder": "البحث عن المهارات",
|
|
481
488
|
"noSkillsAvailable": "لا توجد مهارات متاحة حتى الآن",
|
|
482
489
|
"noMatchingSkills": "لا توجد مهارات مطابقة",
|
|
@@ -509,6 +516,7 @@ declare const _default: {
|
|
|
509
516
|
"courseUnitTopicsLabelPlural": "{count} مواضيع",
|
|
510
517
|
"verifyingAssessmentCourses": "جارٍ التحقق من مقررات التقييم…",
|
|
511
518
|
"resolveBeforePublishing": "حل هذه النقاط قبل النشر:",
|
|
519
|
+
"resolveBeforeSendingForReview": "حل هذه النقاط قبل الإرسال للمراجعة:",
|
|
512
520
|
"assessmentsCardHeading": "التقييم المسبق وتقييم النتائج",
|
|
513
521
|
"assessmentsCardDescription": "أضف المقررات التي تحتوي على بنك أسئلة فقط والتي تفتح وتغلق هذا المسار.",
|
|
514
522
|
"assessmentNotAddedYet": "لم تتم إضافته بعد — اختر مقررًا يحتوي على بنك أسئلة فقط من المكتبة.",
|
|
@@ -545,7 +553,9 @@ declare const _default: {
|
|
|
545
553
|
"dropOntoPathError": "أفلِت المقررات على مستوى، وليس على مسار التعلم مباشرة.",
|
|
546
554
|
"priorSlotFilledToast": "التقييم المسبق يحتوي على مقرر بالفعل — أزِله قبل إضافة مقرر آخر.",
|
|
547
555
|
"outcomeSlotFilledToast": "التقييم الختامي يحتوي على مقرر بالفعل — أزِله قبل إضافة مقرر آخر.",
|
|
548
|
-
"coursesRemovedFrameworkChangeToast": "تمت إزالة {count} من المقررات المرتبطة بمنهج مختلف من هذا المسار."
|
|
556
|
+
"coursesRemovedFrameworkChangeToast": "تمت إزالة {count} من المقررات المرتبطة بمنهج مختلف من هذا المسار.",
|
|
557
|
+
"levelSkillsResetFrameworkChangeToast": "تم مسح المهارات المختارة في {count} من المستويات — فهي لا تنطبق على المنهج الجديد.",
|
|
558
|
+
"priorAssessmentNarrowedScopeToast": "أدى التقييم المسبق إلى تضييق نطاق المهارات — أصبح لدى {count} من المستويات مهارات خارج هذا النطاق."
|
|
549
559
|
}
|
|
550
560
|
}
|
|
551
561
|
;
|
|
@@ -219,6 +219,7 @@ declare const _default: {
|
|
|
219
219
|
"saveButton": "Save"
|
|
220
220
|
},
|
|
221
221
|
"confirmDialog": {
|
|
222
|
+
"title": "Confirm deletion",
|
|
222
223
|
"confirmButton": "Confirm",
|
|
223
224
|
"cancelButton": "Cancel",
|
|
224
225
|
"closeAriaLabel": "Close"
|
|
@@ -468,15 +469,21 @@ declare const _default: {
|
|
|
468
469
|
"outcomeCheckBadge": "Outcome check",
|
|
469
470
|
"assessmentCourseMeta": "Course · Question set only",
|
|
470
471
|
"addAssessmentSlotButton": "Add {label} — a course with only a question set",
|
|
472
|
+
"requiredSlotBadge": "Required",
|
|
471
473
|
"removeAssessmentSlotButton": "Remove",
|
|
472
474
|
"deletePriorAssessmentConfirm": "Deleting the Prior Assessment removes the score this path's Adaptive skips are based on. Continue?",
|
|
473
475
|
"deleteAssessmentSlotConfirm": "Remove this assessment course from the path?",
|
|
476
|
+
"deleteLevelConfirm": "Delete \"{name}\" and everything in it?",
|
|
477
|
+
"deleteCourseConfirm": "Remove this course from the path?",
|
|
478
|
+
"deleteMultipleConfirm": "Delete {count} selected items from the path?",
|
|
474
479
|
"courseNameUnavailable": "Course details unavailable",
|
|
475
480
|
"notAssessmentCourseToast": "\"{name}\" isn't a question-set-only course, so it can't be used as an assessment.",
|
|
476
481
|
"bothSlotsFilledToast": "Both Prior and Outcome Assessment slots are already filled.",
|
|
477
482
|
"assessmentCheckFailedToast": "Could not verify this course. Please try again.",
|
|
478
483
|
"skillsHeading": "Skills",
|
|
479
484
|
"skillsOutOfScopeWarning": "Out of scope, please re-select: {skills}",
|
|
485
|
+
"skillsUncoveredWarning": "No course covers these yet: {skills}",
|
|
486
|
+
"skillUncoveredPillTitle": "No linked course is tagged with this skill yet",
|
|
480
487
|
"searchSkillsPlaceholder": "Search skills",
|
|
481
488
|
"noSkillsAvailable": "No skills available yet",
|
|
482
489
|
"noMatchingSkills": "No matching skills",
|
|
@@ -509,6 +516,7 @@ declare const _default: {
|
|
|
509
516
|
"courseUnitTopicsLabelPlural": "{count} topics",
|
|
510
517
|
"verifyingAssessmentCourses": "Verifying assessment courses…",
|
|
511
518
|
"resolveBeforePublishing": "Resolve these before publishing:",
|
|
519
|
+
"resolveBeforeSendingForReview": "Resolve these before sending for review:",
|
|
512
520
|
"assessmentsCardHeading": "Prior & outcome assessments",
|
|
513
521
|
"assessmentsCardDescription": "Add the question-set-only courses that open and close this path.",
|
|
514
522
|
"assessmentNotAddedYet": "Not added yet — pick a question-set-only course from the Library.",
|
|
@@ -545,7 +553,9 @@ declare const _default: {
|
|
|
545
553
|
"dropOntoPathError": "Drop courses onto a level, not directly on the learning path.",
|
|
546
554
|
"priorSlotFilledToast": "The Prior Assessment already has a course — remove it before adding a different one.",
|
|
547
555
|
"outcomeSlotFilledToast": "The Outcome Assessment already has a course — remove it before adding a different one.",
|
|
548
|
-
"coursesRemovedFrameworkChangeToast": "{count} course(s) tagged to a different curriculum were removed from this path."
|
|
556
|
+
"coursesRemovedFrameworkChangeToast": "{count} course(s) tagged to a different curriculum were removed from this path.",
|
|
557
|
+
"levelSkillsResetFrameworkChangeToast": "{count} Level(s) had their selected skills cleared — they don't apply to the new curriculum.",
|
|
558
|
+
"priorAssessmentNarrowedScopeToast": "The Prior Assessment narrowed the skill scope — {count} Level(s) now have skills outside it."
|
|
549
559
|
}
|
|
550
560
|
}
|
|
551
561
|
;
|
|
@@ -219,6 +219,7 @@ declare const _default: {
|
|
|
219
219
|
"saveButton": "Enregistrer"
|
|
220
220
|
},
|
|
221
221
|
"confirmDialog": {
|
|
222
|
+
"title": "Confirmer la suppression",
|
|
222
223
|
"confirmButton": "Confirmer",
|
|
223
224
|
"cancelButton": "Annuler",
|
|
224
225
|
"closeAriaLabel": "Fermer"
|
|
@@ -468,15 +469,21 @@ declare const _default: {
|
|
|
468
469
|
"outcomeCheckBadge": "Vérification du résultat",
|
|
469
470
|
"assessmentCourseMeta": "Cours · Questionnaire uniquement",
|
|
470
471
|
"addAssessmentSlotButton": "Ajouter {label} — un cours contenant uniquement un questionnaire",
|
|
472
|
+
"requiredSlotBadge": "Obligatoire",
|
|
471
473
|
"removeAssessmentSlotButton": "Retirer",
|
|
472
474
|
"deletePriorAssessmentConfirm": "Supprimer l'évaluation préalable retire le score sur lequel se basent les sauts adaptatifs de ce parcours. Continuer ?",
|
|
473
475
|
"deleteAssessmentSlotConfirm": "Retirer ce cours d'évaluation du parcours ?",
|
|
476
|
+
"deleteLevelConfirm": "Supprimer « {name} » et tout son contenu ?",
|
|
477
|
+
"deleteCourseConfirm": "Retirer ce cours du parcours ?",
|
|
478
|
+
"deleteMultipleConfirm": "Supprimer les {count} éléments sélectionnés du parcours ?",
|
|
474
479
|
"courseNameUnavailable": "Détails du cours indisponibles",
|
|
475
480
|
"notAssessmentCourseToast": "« {name} » n'est pas un cours composé uniquement d'un questionnaire, il ne peut donc pas être utilisé comme évaluation.",
|
|
476
481
|
"bothSlotsFilledToast": "Les évaluations préalable et finale sont déjà renseignées.",
|
|
477
482
|
"assessmentCheckFailedToast": "Impossible de vérifier ce cours. Veuillez réessayer.",
|
|
478
483
|
"skillsHeading": "Compétences",
|
|
479
484
|
"skillsOutOfScopeWarning": "Hors du périmètre, veuillez resélectionner : {skills}",
|
|
485
|
+
"skillsUncoveredWarning": "Aucun cours ne couvre encore : {skills}",
|
|
486
|
+
"skillUncoveredPillTitle": "Aucun cours associé n'est encore étiqueté avec cette compétence",
|
|
480
487
|
"searchSkillsPlaceholder": "Rechercher des compétences",
|
|
481
488
|
"noSkillsAvailable": "Aucune compétence disponible pour le moment",
|
|
482
489
|
"noMatchingSkills": "Aucune compétence correspondante",
|
|
@@ -509,6 +516,7 @@ declare const _default: {
|
|
|
509
516
|
"courseUnitTopicsLabelPlural": "{count} sujets",
|
|
510
517
|
"verifyingAssessmentCourses": "Vérification des cours d'évaluation…",
|
|
511
518
|
"resolveBeforePublishing": "Résolvez les points suivants avant de publier :",
|
|
519
|
+
"resolveBeforeSendingForReview": "Résolvez les points suivants avant d'envoyer pour révision :",
|
|
512
520
|
"assessmentsCardHeading": "Évaluations préalable et finale",
|
|
513
521
|
"assessmentsCardDescription": "Ajoutez les cours composés uniquement d'un questionnaire qui ouvrent et ferment ce parcours.",
|
|
514
522
|
"assessmentNotAddedYet": "Pas encore ajouté — choisissez un cours composé uniquement d'un questionnaire dans la bibliothèque.",
|
|
@@ -545,7 +553,9 @@ declare const _default: {
|
|
|
545
553
|
"dropOntoPathError": "Déposez les cours sur un niveau, pas directement sur le parcours d'apprentissage.",
|
|
546
554
|
"priorSlotFilledToast": "L'Évaluation préalable contient déjà un cours — retirez-le avant d'en ajouter un autre.",
|
|
547
555
|
"outcomeSlotFilledToast": "L'Évaluation finale contient déjà un cours — retirez-le avant d'en ajouter un autre.",
|
|
548
|
-
"coursesRemovedFrameworkChangeToast": "{count} cours associé(s) à un autre curriculum ont été retirés de ce parcours."
|
|
556
|
+
"coursesRemovedFrameworkChangeToast": "{count} cours associé(s) à un autre curriculum ont été retirés de ce parcours.",
|
|
557
|
+
"levelSkillsResetFrameworkChangeToast": "{count} niveau(x) ont eu leurs compétences sélectionnées effacées — elles ne s'appliquent pas au nouveau curriculum.",
|
|
558
|
+
"priorAssessmentNarrowedScopeToast": "L'évaluation préalable a réduit le périmètre des compétences — {count} niveau(x) ont désormais des compétences hors de ce périmètre."
|
|
549
559
|
}
|
|
550
560
|
}
|
|
551
561
|
;
|
|
@@ -219,6 +219,7 @@ declare const _default: {
|
|
|
219
219
|
"saveButton": "Salvar"
|
|
220
220
|
},
|
|
221
221
|
"confirmDialog": {
|
|
222
|
+
"title": "Confirmar exclusão",
|
|
222
223
|
"confirmButton": "Confirmar",
|
|
223
224
|
"cancelButton": "Cancelar",
|
|
224
225
|
"closeAriaLabel": "Fechar"
|
|
@@ -468,15 +469,21 @@ declare const _default: {
|
|
|
468
469
|
"outcomeCheckBadge": "Verificação de resultado",
|
|
469
470
|
"assessmentCourseMeta": "Curso · Apenas banco de questões",
|
|
470
471
|
"addAssessmentSlotButton": "Adicionar {label} — um curso com apenas um banco de questões",
|
|
472
|
+
"requiredSlotBadge": "Obrigatório",
|
|
471
473
|
"removeAssessmentSlotButton": "Remover",
|
|
472
474
|
"deletePriorAssessmentConfirm": "Excluir a Avaliação prévia remove a pontuação usada pelos avanços adaptativos deste percurso. Continuar?",
|
|
473
475
|
"deleteAssessmentSlotConfirm": "Remover este curso de avaliação do percurso?",
|
|
476
|
+
"deleteLevelConfirm": "Excluir \"{name}\" e tudo o que ele contém?",
|
|
477
|
+
"deleteCourseConfirm": "Remover este curso do percurso?",
|
|
478
|
+
"deleteMultipleConfirm": "Excluir os {count} itens selecionados do percurso?",
|
|
474
479
|
"courseNameUnavailable": "Detalhes do curso indisponíveis",
|
|
475
480
|
"notAssessmentCourseToast": "\"{name}\" não é um curso composto somente por um banco de questões, portanto não pode ser usado como avaliação.",
|
|
476
481
|
"bothSlotsFilledToast": "As avaliações prévia e de resultado já estão preenchidas.",
|
|
477
482
|
"assessmentCheckFailedToast": "Não foi possível verificar este curso. Tente novamente.",
|
|
478
483
|
"skillsHeading": "Habilidades",
|
|
479
484
|
"skillsOutOfScopeWarning": "Fora do escopo, selecione novamente: {skills}",
|
|
485
|
+
"skillsUncoveredWarning": "Nenhum curso cobre ainda: {skills}",
|
|
486
|
+
"skillUncoveredPillTitle": "Nenhum curso vinculado está marcado com esta habilidade ainda",
|
|
480
487
|
"searchSkillsPlaceholder": "Buscar habilidades",
|
|
481
488
|
"noSkillsAvailable": "Nenhuma habilidade disponível ainda",
|
|
482
489
|
"noMatchingSkills": "Nenhuma habilidade correspondente",
|
|
@@ -509,6 +516,7 @@ declare const _default: {
|
|
|
509
516
|
"courseUnitTopicsLabelPlural": "{count} tópicos",
|
|
510
517
|
"verifyingAssessmentCourses": "Verificando cursos de avaliação…",
|
|
511
518
|
"resolveBeforePublishing": "Resolva os itens abaixo antes de publicar:",
|
|
519
|
+
"resolveBeforeSendingForReview": "Resolva os itens abaixo antes de enviar para revisão:",
|
|
512
520
|
"assessmentsCardHeading": "Avaliações prévia e de resultado",
|
|
513
521
|
"assessmentsCardDescription": "Adicione os cursos compostos apenas por banco de questões que abrem e encerram este percurso.",
|
|
514
522
|
"assessmentNotAddedYet": "Ainda não adicionado — escolha um curso composto apenas por banco de questões na Biblioteca.",
|
|
@@ -545,7 +553,9 @@ declare const _default: {
|
|
|
545
553
|
"dropOntoPathError": "Solte os cursos sobre um nível, não diretamente na trilha de aprendizagem.",
|
|
546
554
|
"priorSlotFilledToast": "A Avaliação prévia já tem um curso — remova-o antes de adicionar outro.",
|
|
547
555
|
"outcomeSlotFilledToast": "A Avaliação final já tem um curso — remova-o antes de adicionar outro.",
|
|
548
|
-
"coursesRemovedFrameworkChangeToast": "{count} curso(s) vinculados a outro currículo foram removidos desta trilha."
|
|
556
|
+
"coursesRemovedFrameworkChangeToast": "{count} curso(s) vinculados a outro currículo foram removidos desta trilha.",
|
|
557
|
+
"levelSkillsResetFrameworkChangeToast": "{count} nível(is) tiveram as habilidades selecionadas apagadas — elas não se aplicam ao novo currículo.",
|
|
558
|
+
"priorAssessmentNarrowedScopeToast": "A Avaliação prévia reduziu o escopo de habilidades — {count} nível(is) agora têm habilidades fora dele."
|
|
549
559
|
}
|
|
550
560
|
}
|
|
551
561
|
;
|