@smvtech/x-flux 1.1.13 → 1.1.14
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.d.mts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +31 -20
- package/dist/index.mjs +31 -20
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -5465,6 +5465,7 @@ type TEDCFlowContext = {
|
|
|
5465
5465
|
order: TVisaOrder | null;
|
|
5466
5466
|
questionnaire: TQuestionnaire | null;
|
|
5467
5467
|
applicants: Record<string, TEDCApplicant>;
|
|
5468
|
+
applicantIds: Set<string>;
|
|
5468
5469
|
activeApplicant: string | null;
|
|
5469
5470
|
setActiveApplicant: (application_id: string | null) => void;
|
|
5470
5471
|
loading: boolean;
|
|
@@ -5499,16 +5500,16 @@ declare function getSignedUrlFromAsset(docId: string): Promise<string | null>;
|
|
|
5499
5500
|
declare function getDisplayableQuestions(questions: TEDCApplicant["questions"], questionAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
|
|
5500
5501
|
declare function getDisplayableDocuments(questions: TEDCApplicant["questions"], documentAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
|
|
5501
5502
|
declare function getValidationErrors(validations?: TAnswer["validations"] | null): ValidationResult;
|
|
5502
|
-
declare function getValidationResult(question: TEDCApplicant["questions"][0],
|
|
5503
|
-
declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[],
|
|
5503
|
+
declare function getValidationResult(question: TEDCApplicant["questions"][0], applicantIds: Set<string>): ValidationResult;
|
|
5504
|
+
declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], applicantIds: Set<string>): Array<{
|
|
5504
5505
|
name: string;
|
|
5505
5506
|
validationResult: ValidationResult;
|
|
5506
5507
|
}>;
|
|
5507
|
-
declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[],
|
|
5508
|
+
declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[], applicantIds: Set<string>): Array<{
|
|
5508
5509
|
name: string;
|
|
5509
5510
|
validationResult: ValidationResult;
|
|
5510
5511
|
}>;
|
|
5511
|
-
declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[],
|
|
5512
|
+
declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[], applicantIds: Set<string>): {
|
|
5512
5513
|
isComplete: boolean;
|
|
5513
5514
|
questionValidations: Array<{
|
|
5514
5515
|
name: string;
|
|
@@ -5567,6 +5568,7 @@ declare const EDCFlow: {
|
|
|
5567
5568
|
order: TVisaOrder | null;
|
|
5568
5569
|
questionnaire: TQuestionnaire | null;
|
|
5569
5570
|
applicants: Record<string, TEDCApplicant>;
|
|
5571
|
+
applicantIds: Set<string>;
|
|
5570
5572
|
activeApplicant: string | null;
|
|
5571
5573
|
setActiveApplicant: (application_id: string | null) => void;
|
|
5572
5574
|
loading: boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -5465,6 +5465,7 @@ type TEDCFlowContext = {
|
|
|
5465
5465
|
order: TVisaOrder | null;
|
|
5466
5466
|
questionnaire: TQuestionnaire | null;
|
|
5467
5467
|
applicants: Record<string, TEDCApplicant>;
|
|
5468
|
+
applicantIds: Set<string>;
|
|
5468
5469
|
activeApplicant: string | null;
|
|
5469
5470
|
setActiveApplicant: (application_id: string | null) => void;
|
|
5470
5471
|
loading: boolean;
|
|
@@ -5499,16 +5500,16 @@ declare function getSignedUrlFromAsset(docId: string): Promise<string | null>;
|
|
|
5499
5500
|
declare function getDisplayableQuestions(questions: TEDCApplicant["questions"], questionAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
|
|
5500
5501
|
declare function getDisplayableDocuments(questions: TEDCApplicant["questions"], documentAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
|
|
5501
5502
|
declare function getValidationErrors(validations?: TAnswer["validations"] | null): ValidationResult;
|
|
5502
|
-
declare function getValidationResult(question: TEDCApplicant["questions"][0],
|
|
5503
|
-
declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[],
|
|
5503
|
+
declare function getValidationResult(question: TEDCApplicant["questions"][0], applicantIds: Set<string>): ValidationResult;
|
|
5504
|
+
declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], applicantIds: Set<string>): Array<{
|
|
5504
5505
|
name: string;
|
|
5505
5506
|
validationResult: ValidationResult;
|
|
5506
5507
|
}>;
|
|
5507
|
-
declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[],
|
|
5508
|
+
declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[], applicantIds: Set<string>): Array<{
|
|
5508
5509
|
name: string;
|
|
5509
5510
|
validationResult: ValidationResult;
|
|
5510
5511
|
}>;
|
|
5511
|
-
declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[],
|
|
5512
|
+
declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[], applicantIds: Set<string>): {
|
|
5512
5513
|
isComplete: boolean;
|
|
5513
5514
|
questionValidations: Array<{
|
|
5514
5515
|
name: string;
|
|
@@ -5567,6 +5568,7 @@ declare const EDCFlow: {
|
|
|
5567
5568
|
order: TVisaOrder | null;
|
|
5568
5569
|
questionnaire: TQuestionnaire | null;
|
|
5569
5570
|
applicants: Record<string, TEDCApplicant>;
|
|
5571
|
+
applicantIds: Set<string>;
|
|
5570
5572
|
activeApplicant: string | null;
|
|
5571
5573
|
setActiveApplicant: (application_id: string | null) => void;
|
|
5572
5574
|
loading: boolean;
|
package/dist/index.js
CHANGED
|
@@ -558,10 +558,10 @@ var extractDefaultAnswer = (value) => {
|
|
|
558
558
|
const match = value.match(/^\{\{.*\}\}$/);
|
|
559
559
|
return match ? match[0] : null;
|
|
560
560
|
};
|
|
561
|
-
var isDynamicApplicantAnswerEmpty = (answer,
|
|
561
|
+
var isDynamicApplicantAnswerEmpty = (answer, applicantIds) => {
|
|
562
562
|
const match = answer.match(/^app_id_(.+)$/);
|
|
563
563
|
if (!match) return false;
|
|
564
|
-
return !(match[1]
|
|
564
|
+
return !applicantIds.has(match[1]);
|
|
565
565
|
};
|
|
566
566
|
function getDisplayableQuestions(questions, questionAnswerSources) {
|
|
567
567
|
return questions.filter((q) => {
|
|
@@ -626,7 +626,7 @@ function getValidationErrors(validations) {
|
|
|
626
626
|
totalTimeSaved
|
|
627
627
|
};
|
|
628
628
|
}
|
|
629
|
-
function getValidationResult(question,
|
|
629
|
+
function getValidationResult(question, applicantIds) {
|
|
630
630
|
const backendResult = getValidationErrors(question.answer_data?.validations);
|
|
631
631
|
if (backendResult && backendResult.status !== "PERFECT" /* PERFECT */) {
|
|
632
632
|
return backendResult;
|
|
@@ -635,7 +635,7 @@ function getValidationResult(question, applicants = {}) {
|
|
|
635
635
|
const isDocument = question.question.type === "DOCUMENT" /* DOCUMENT */;
|
|
636
636
|
const hasApproved = question.answer_data?.assets_id?.find((asset) => asset.status === "APPROVED");
|
|
637
637
|
const answer = question.answer_data?.answer?.[0];
|
|
638
|
-
const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null || isDynamicApplicantAnswerEmpty(answer,
|
|
638
|
+
const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null || isDynamicApplicantAnswerEmpty(answer, applicantIds);
|
|
639
639
|
if (isDocument && !hasApproved || !isDocument && isAnswerEmpty) {
|
|
640
640
|
const answerRequiredItem = {
|
|
641
641
|
error_text: isDocument ? "Please upload the required document" : "Answer cannot be empty",
|
|
@@ -660,11 +660,11 @@ function getValidationResult(question, applicants = {}) {
|
|
|
660
660
|
totalTimeSaved: 0
|
|
661
661
|
};
|
|
662
662
|
}
|
|
663
|
-
function validateApplicantQuestions(applicant, questionAnswerSources,
|
|
663
|
+
function validateApplicantQuestions(applicant, questionAnswerSources, applicantIds) {
|
|
664
664
|
const displayableQuestions = getDisplayableQuestions(applicant.questions, questionAnswerSources);
|
|
665
665
|
const questionValidations = [];
|
|
666
666
|
displayableQuestions.forEach((question) => {
|
|
667
|
-
const validationResult = getValidationResult(question,
|
|
667
|
+
const validationResult = getValidationResult(question, applicantIds);
|
|
668
668
|
if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
|
|
669
669
|
questionValidations.push({
|
|
670
670
|
name: question.question.question,
|
|
@@ -674,11 +674,11 @@ function validateApplicantQuestions(applicant, questionAnswerSources, applicants
|
|
|
674
674
|
});
|
|
675
675
|
return questionValidations;
|
|
676
676
|
}
|
|
677
|
-
function validateApplicantDocuments(applicant, documentAnswerSources,
|
|
677
|
+
function validateApplicantDocuments(applicant, documentAnswerSources, applicantIds) {
|
|
678
678
|
const displayableDocuments = getDisplayableDocuments(applicant.questions, documentAnswerSources);
|
|
679
679
|
const documentValidations = [];
|
|
680
680
|
displayableDocuments.forEach((document) => {
|
|
681
|
-
const validationResult = getValidationResult(document,
|
|
681
|
+
const validationResult = getValidationResult(document, applicantIds);
|
|
682
682
|
if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
|
|
683
683
|
documentValidations.push({
|
|
684
684
|
name: document.question.question,
|
|
@@ -688,9 +688,9 @@ function validateApplicantDocuments(applicant, documentAnswerSources, applicants
|
|
|
688
688
|
});
|
|
689
689
|
return documentValidations;
|
|
690
690
|
}
|
|
691
|
-
function validateApplicant(applicant, questionAnswerSources, documentAnswerSources,
|
|
692
|
-
const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources,
|
|
693
|
-
const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources,
|
|
691
|
+
function validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicantIds) {
|
|
692
|
+
const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources, applicantIds);
|
|
693
|
+
const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources, applicantIds);
|
|
694
694
|
const applicantValidations = getValidationErrors(applicant.application?.validations);
|
|
695
695
|
const hasBlockingIssues = questionValidations.some((q) => q.validationResult?.status === "MISSING" /* MISSING */ || q.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || documentValidations.some((d) => d.validationResult?.status === "MISSING" /* MISSING */ || d.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || applicantValidations?.status === "UNFIXABLE" /* UNFIXABLE */;
|
|
696
696
|
return {
|
|
@@ -702,10 +702,12 @@ function validateApplicant(applicant, questionAnswerSources, documentAnswerSourc
|
|
|
702
702
|
}
|
|
703
703
|
function validateAllApplicants(applicants, questionAnswerSources, documentAnswerSources) {
|
|
704
704
|
const applicantsArray = Array.isArray(applicants) ? applicants : Object.values(applicants);
|
|
705
|
-
const
|
|
705
|
+
const applicantIds = new Set(
|
|
706
|
+
Array.isArray(applicants) ? applicants.map((a) => a.application_id) : Object.keys(applicants)
|
|
707
|
+
);
|
|
706
708
|
const applicantValidations = [];
|
|
707
709
|
applicantsArray.forEach((applicant) => {
|
|
708
|
-
const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources,
|
|
710
|
+
const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicantIds);
|
|
709
711
|
if (!validation.isComplete) {
|
|
710
712
|
const applicantName = getFullName(
|
|
711
713
|
applicant.traveller.first_name,
|
|
@@ -892,6 +894,7 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
892
894
|
const [questionnaire, setQuestionnaire] = react.useState(null);
|
|
893
895
|
const [dynamicQuestionMap, setDynamicQuestionMap] = react.useState({});
|
|
894
896
|
const [applicants, setApplicants] = react.useState({});
|
|
897
|
+
const [applicantIds, setApplicantIds] = react.useState(/* @__PURE__ */ new Set());
|
|
895
898
|
const [activeApplicant, setActiveApplicant] = react.useState(null);
|
|
896
899
|
const [loading, setLoading] = react.useState(true);
|
|
897
900
|
const [error, setError] = react.useState(null);
|
|
@@ -964,6 +967,7 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
964
967
|
setQuestionnaire(updatedQuestionnaire);
|
|
965
968
|
return applicantsWithSideEffects;
|
|
966
969
|
});
|
|
970
|
+
setApplicantIds((prev) => /* @__PURE__ */ new Set([...prev, applicant.application_id]));
|
|
967
971
|
setActiveApplicant(applicant.application_id);
|
|
968
972
|
setSuccess("Traveller added and Applicant created");
|
|
969
973
|
return applicant;
|
|
@@ -1079,6 +1083,11 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1079
1083
|
});
|
|
1080
1084
|
return applicantsWithSideEffects;
|
|
1081
1085
|
});
|
|
1086
|
+
setApplicantIds((prev) => {
|
|
1087
|
+
const next = new Set(prev);
|
|
1088
|
+
next.delete(application_id);
|
|
1089
|
+
return next;
|
|
1090
|
+
});
|
|
1082
1091
|
setSuccess("Applicant deleted successfully");
|
|
1083
1092
|
} catch (err) {
|
|
1084
1093
|
console.error("Failed to delete applicant:", err);
|
|
@@ -1144,12 +1153,12 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1144
1153
|
const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaire, dynamicQuestionMap);
|
|
1145
1154
|
setQuestionnaire(updatedQuestionnaire);
|
|
1146
1155
|
setApplicants(updatedApplicants);
|
|
1147
|
-
const
|
|
1148
|
-
if (
|
|
1149
|
-
if (activeApplicant &&
|
|
1156
|
+
const applicantIds2 = Object.keys(updatedApplicants);
|
|
1157
|
+
if (applicantIds2.length > 0) {
|
|
1158
|
+
if (activeApplicant && applicantIds2.includes(activeApplicant)) {
|
|
1150
1159
|
setActiveApplicant(activeApplicant);
|
|
1151
1160
|
} else {
|
|
1152
|
-
setActiveApplicant(
|
|
1161
|
+
setActiveApplicant(applicantIds2[0]);
|
|
1153
1162
|
}
|
|
1154
1163
|
}
|
|
1155
1164
|
}
|
|
@@ -1209,9 +1218,10 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1209
1218
|
const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaireData, dynamicMap);
|
|
1210
1219
|
setQuestionnaire(updatedQuestionnaire);
|
|
1211
1220
|
setApplicants(updatedApplicants);
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1221
|
+
setApplicantIds(new Set(Object.keys(updatedApplicants)));
|
|
1222
|
+
const ids = Object.keys(updatedApplicants);
|
|
1223
|
+
if (ids.length > 0) {
|
|
1224
|
+
setActiveApplicant(ids[0]);
|
|
1215
1225
|
}
|
|
1216
1226
|
}
|
|
1217
1227
|
} catch (err) {
|
|
@@ -1228,6 +1238,7 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1228
1238
|
order,
|
|
1229
1239
|
questionnaire,
|
|
1230
1240
|
applicants,
|
|
1241
|
+
applicantIds,
|
|
1231
1242
|
activeApplicant,
|
|
1232
1243
|
setActiveApplicant,
|
|
1233
1244
|
loading,
|
package/dist/index.mjs
CHANGED
|
@@ -532,10 +532,10 @@ var extractDefaultAnswer = (value) => {
|
|
|
532
532
|
const match = value.match(/^\{\{.*\}\}$/);
|
|
533
533
|
return match ? match[0] : null;
|
|
534
534
|
};
|
|
535
|
-
var isDynamicApplicantAnswerEmpty = (answer,
|
|
535
|
+
var isDynamicApplicantAnswerEmpty = (answer, applicantIds) => {
|
|
536
536
|
const match = answer.match(/^app_id_(.+)$/);
|
|
537
537
|
if (!match) return false;
|
|
538
|
-
return !(match[1]
|
|
538
|
+
return !applicantIds.has(match[1]);
|
|
539
539
|
};
|
|
540
540
|
function getDisplayableQuestions(questions, questionAnswerSources) {
|
|
541
541
|
return questions.filter((q) => {
|
|
@@ -600,7 +600,7 @@ function getValidationErrors(validations) {
|
|
|
600
600
|
totalTimeSaved
|
|
601
601
|
};
|
|
602
602
|
}
|
|
603
|
-
function getValidationResult(question,
|
|
603
|
+
function getValidationResult(question, applicantIds) {
|
|
604
604
|
const backendResult = getValidationErrors(question.answer_data?.validations);
|
|
605
605
|
if (backendResult && backendResult.status !== "PERFECT" /* PERFECT */) {
|
|
606
606
|
return backendResult;
|
|
@@ -609,7 +609,7 @@ function getValidationResult(question, applicants = {}) {
|
|
|
609
609
|
const isDocument = question.question.type === "DOCUMENT" /* DOCUMENT */;
|
|
610
610
|
const hasApproved = question.answer_data?.assets_id?.find((asset) => asset.status === "APPROVED");
|
|
611
611
|
const answer = question.answer_data?.answer?.[0];
|
|
612
|
-
const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null || isDynamicApplicantAnswerEmpty(answer,
|
|
612
|
+
const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null || isDynamicApplicantAnswerEmpty(answer, applicantIds);
|
|
613
613
|
if (isDocument && !hasApproved || !isDocument && isAnswerEmpty) {
|
|
614
614
|
const answerRequiredItem = {
|
|
615
615
|
error_text: isDocument ? "Please upload the required document" : "Answer cannot be empty",
|
|
@@ -634,11 +634,11 @@ function getValidationResult(question, applicants = {}) {
|
|
|
634
634
|
totalTimeSaved: 0
|
|
635
635
|
};
|
|
636
636
|
}
|
|
637
|
-
function validateApplicantQuestions(applicant, questionAnswerSources,
|
|
637
|
+
function validateApplicantQuestions(applicant, questionAnswerSources, applicantIds) {
|
|
638
638
|
const displayableQuestions = getDisplayableQuestions(applicant.questions, questionAnswerSources);
|
|
639
639
|
const questionValidations = [];
|
|
640
640
|
displayableQuestions.forEach((question) => {
|
|
641
|
-
const validationResult = getValidationResult(question,
|
|
641
|
+
const validationResult = getValidationResult(question, applicantIds);
|
|
642
642
|
if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
|
|
643
643
|
questionValidations.push({
|
|
644
644
|
name: question.question.question,
|
|
@@ -648,11 +648,11 @@ function validateApplicantQuestions(applicant, questionAnswerSources, applicants
|
|
|
648
648
|
});
|
|
649
649
|
return questionValidations;
|
|
650
650
|
}
|
|
651
|
-
function validateApplicantDocuments(applicant, documentAnswerSources,
|
|
651
|
+
function validateApplicantDocuments(applicant, documentAnswerSources, applicantIds) {
|
|
652
652
|
const displayableDocuments = getDisplayableDocuments(applicant.questions, documentAnswerSources);
|
|
653
653
|
const documentValidations = [];
|
|
654
654
|
displayableDocuments.forEach((document) => {
|
|
655
|
-
const validationResult = getValidationResult(document,
|
|
655
|
+
const validationResult = getValidationResult(document, applicantIds);
|
|
656
656
|
if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
|
|
657
657
|
documentValidations.push({
|
|
658
658
|
name: document.question.question,
|
|
@@ -662,9 +662,9 @@ function validateApplicantDocuments(applicant, documentAnswerSources, applicants
|
|
|
662
662
|
});
|
|
663
663
|
return documentValidations;
|
|
664
664
|
}
|
|
665
|
-
function validateApplicant(applicant, questionAnswerSources, documentAnswerSources,
|
|
666
|
-
const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources,
|
|
667
|
-
const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources,
|
|
665
|
+
function validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicantIds) {
|
|
666
|
+
const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources, applicantIds);
|
|
667
|
+
const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources, applicantIds);
|
|
668
668
|
const applicantValidations = getValidationErrors(applicant.application?.validations);
|
|
669
669
|
const hasBlockingIssues = questionValidations.some((q) => q.validationResult?.status === "MISSING" /* MISSING */ || q.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || documentValidations.some((d) => d.validationResult?.status === "MISSING" /* MISSING */ || d.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || applicantValidations?.status === "UNFIXABLE" /* UNFIXABLE */;
|
|
670
670
|
return {
|
|
@@ -676,10 +676,12 @@ function validateApplicant(applicant, questionAnswerSources, documentAnswerSourc
|
|
|
676
676
|
}
|
|
677
677
|
function validateAllApplicants(applicants, questionAnswerSources, documentAnswerSources) {
|
|
678
678
|
const applicantsArray = Array.isArray(applicants) ? applicants : Object.values(applicants);
|
|
679
|
-
const
|
|
679
|
+
const applicantIds = new Set(
|
|
680
|
+
Array.isArray(applicants) ? applicants.map((a) => a.application_id) : Object.keys(applicants)
|
|
681
|
+
);
|
|
680
682
|
const applicantValidations = [];
|
|
681
683
|
applicantsArray.forEach((applicant) => {
|
|
682
|
-
const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources,
|
|
684
|
+
const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicantIds);
|
|
683
685
|
if (!validation.isComplete) {
|
|
684
686
|
const applicantName = getFullName(
|
|
685
687
|
applicant.traveller.first_name,
|
|
@@ -866,6 +868,7 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
866
868
|
const [questionnaire, setQuestionnaire] = useState(null);
|
|
867
869
|
const [dynamicQuestionMap, setDynamicQuestionMap] = useState({});
|
|
868
870
|
const [applicants, setApplicants] = useState({});
|
|
871
|
+
const [applicantIds, setApplicantIds] = useState(/* @__PURE__ */ new Set());
|
|
869
872
|
const [activeApplicant, setActiveApplicant] = useState(null);
|
|
870
873
|
const [loading, setLoading] = useState(true);
|
|
871
874
|
const [error, setError] = useState(null);
|
|
@@ -938,6 +941,7 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
938
941
|
setQuestionnaire(updatedQuestionnaire);
|
|
939
942
|
return applicantsWithSideEffects;
|
|
940
943
|
});
|
|
944
|
+
setApplicantIds((prev) => /* @__PURE__ */ new Set([...prev, applicant.application_id]));
|
|
941
945
|
setActiveApplicant(applicant.application_id);
|
|
942
946
|
setSuccess("Traveller added and Applicant created");
|
|
943
947
|
return applicant;
|
|
@@ -1053,6 +1057,11 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1053
1057
|
});
|
|
1054
1058
|
return applicantsWithSideEffects;
|
|
1055
1059
|
});
|
|
1060
|
+
setApplicantIds((prev) => {
|
|
1061
|
+
const next = new Set(prev);
|
|
1062
|
+
next.delete(application_id);
|
|
1063
|
+
return next;
|
|
1064
|
+
});
|
|
1056
1065
|
setSuccess("Applicant deleted successfully");
|
|
1057
1066
|
} catch (err) {
|
|
1058
1067
|
console.error("Failed to delete applicant:", err);
|
|
@@ -1118,12 +1127,12 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1118
1127
|
const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaire, dynamicQuestionMap);
|
|
1119
1128
|
setQuestionnaire(updatedQuestionnaire);
|
|
1120
1129
|
setApplicants(updatedApplicants);
|
|
1121
|
-
const
|
|
1122
|
-
if (
|
|
1123
|
-
if (activeApplicant &&
|
|
1130
|
+
const applicantIds2 = Object.keys(updatedApplicants);
|
|
1131
|
+
if (applicantIds2.length > 0) {
|
|
1132
|
+
if (activeApplicant && applicantIds2.includes(activeApplicant)) {
|
|
1124
1133
|
setActiveApplicant(activeApplicant);
|
|
1125
1134
|
} else {
|
|
1126
|
-
setActiveApplicant(
|
|
1135
|
+
setActiveApplicant(applicantIds2[0]);
|
|
1127
1136
|
}
|
|
1128
1137
|
}
|
|
1129
1138
|
}
|
|
@@ -1183,9 +1192,10 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1183
1192
|
const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaireData, dynamicMap);
|
|
1184
1193
|
setQuestionnaire(updatedQuestionnaire);
|
|
1185
1194
|
setApplicants(updatedApplicants);
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1195
|
+
setApplicantIds(new Set(Object.keys(updatedApplicants)));
|
|
1196
|
+
const ids = Object.keys(updatedApplicants);
|
|
1197
|
+
if (ids.length > 0) {
|
|
1198
|
+
setActiveApplicant(ids[0]);
|
|
1189
1199
|
}
|
|
1190
1200
|
}
|
|
1191
1201
|
} catch (err) {
|
|
@@ -1202,6 +1212,7 @@ var EDCFlowProvider = ({ children, orderId }) => {
|
|
|
1202
1212
|
order,
|
|
1203
1213
|
questionnaire,
|
|
1204
1214
|
applicants,
|
|
1215
|
+
applicantIds,
|
|
1205
1216
|
activeApplicant,
|
|
1206
1217
|
setActiveApplicant,
|
|
1207
1218
|
loading,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smvtech/x-flux",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.14",
|
|
4
4
|
"description": "x-flux - A powerful React package for managing effective document collection flows, visa questionnaires, travellers, and applications",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|