analytica-frontend-lib 1.0.86 → 1.0.87
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/Accordation/index.js +0 -1
- package/dist/Accordation/index.mjs +0 -1
- package/dist/Alert/index.js +0 -1
- package/dist/Alert/index.mjs +0 -1
- package/dist/AlertDialog/index.js +0 -1
- package/dist/AlertDialog/index.mjs +0 -1
- package/dist/Alternative/index.js +0 -1
- package/dist/Alternative/index.mjs +0 -1
- package/dist/Auth/AuthProvider/index.js +0 -1
- package/dist/Auth/AuthProvider/index.mjs +0 -1
- package/dist/Auth/ProtectedRoute/index.js +0 -1
- package/dist/Auth/ProtectedRoute/index.mjs +0 -1
- package/dist/Auth/PublicRoute/index.js +0 -1
- package/dist/Auth/PublicRoute/index.mjs +0 -1
- package/dist/Auth/getRootDomain/index.js +0 -1
- package/dist/Auth/getRootDomain/index.mjs +0 -1
- package/dist/Auth/index.js +0 -1
- package/dist/Auth/index.mjs +0 -1
- package/dist/Auth/useApiConfig/index.js +0 -1
- package/dist/Auth/useApiConfig/index.mjs +0 -1
- package/dist/Auth/useAuth/index.js +0 -1
- package/dist/Auth/useAuth/index.mjs +0 -1
- package/dist/Auth/useAuthGuard/index.js +0 -1
- package/dist/Auth/useAuthGuard/index.mjs +0 -1
- package/dist/Auth/useRouteAuth/index.js +0 -1
- package/dist/Auth/useRouteAuth/index.mjs +0 -1
- package/dist/Auth/useUrlAuthentication/index.js +0 -1
- package/dist/Auth/useUrlAuthentication/index.mjs +0 -1
- package/dist/Auth/withAuth/index.js +0 -1
- package/dist/Auth/withAuth/index.mjs +0 -1
- package/dist/Auth/zustandAuthAdapter/index.js +0 -1
- package/dist/Auth/zustandAuthAdapter/index.mjs +0 -1
- package/dist/Badge/index.js +0 -1
- package/dist/Badge/index.mjs +0 -1
- package/dist/Button/index.js +0 -1
- package/dist/Button/index.mjs +0 -1
- package/dist/Calendar/index.js +0 -1
- package/dist/Calendar/index.mjs +0 -1
- package/dist/Card/index.js +0 -1
- package/dist/Card/index.mjs +0 -1
- package/dist/CheckBox/index.js +0 -1
- package/dist/CheckBox/index.mjs +0 -1
- package/dist/Chips/index.js +0 -1
- package/dist/Chips/index.mjs +0 -1
- package/dist/Divider/index.js +0 -1
- package/dist/Divider/index.mjs +0 -1
- package/dist/DropdownMenu/index.js +0 -1
- package/dist/DropdownMenu/index.mjs +0 -1
- package/dist/IconButton/index.js +0 -1
- package/dist/IconButton/index.mjs +0 -1
- package/dist/IconRoundedButton/index.js +0 -1
- package/dist/IconRoundedButton/index.mjs +0 -1
- package/dist/Input/index.js +0 -1
- package/dist/Input/index.mjs +0 -1
- package/dist/Menu/index.js +0 -1
- package/dist/Menu/index.mjs +0 -1
- package/dist/Modal/index.js +0 -1
- package/dist/Modal/index.mjs +0 -1
- package/dist/MultipleChoice/index.js +660 -0
- package/dist/MultipleChoice/index.mjs +647 -0
- package/dist/NavButton/index.js +0 -1
- package/dist/NavButton/index.mjs +0 -1
- package/dist/NotFound/index.js +0 -1
- package/dist/NotFound/index.mjs +0 -1
- package/dist/ProgressBar/index.js +0 -1
- package/dist/ProgressBar/index.mjs +0 -1
- package/dist/ProgressCircle/index.js +0 -1
- package/dist/ProgressCircle/index.mjs +0 -1
- package/dist/Quiz/index.js +955 -296
- package/dist/Quiz/index.mjs +972 -295
- package/dist/Quiz/useQuizStore/index.js +79 -35
- package/dist/Quiz/useQuizStore/index.mjs +79 -35
- package/dist/Radio/index.js +0 -1
- package/dist/Radio/index.mjs +0 -1
- package/dist/Select/index.js +0 -1
- package/dist/Select/index.mjs +0 -1
- package/dist/SelectionButton/index.js +0 -1
- package/dist/SelectionButton/index.mjs +0 -1
- package/dist/Skeleton/index.js +0 -1
- package/dist/Skeleton/index.mjs +0 -1
- package/dist/Stepper/index.js +0 -1
- package/dist/Stepper/index.mjs +0 -1
- package/dist/Table/index.js +0 -1
- package/dist/Table/index.mjs +0 -1
- package/dist/Text/index.js +0 -1
- package/dist/Text/index.mjs +0 -1
- package/dist/TextArea/index.js +0 -1
- package/dist/TextArea/index.mjs +0 -1
- package/dist/Toast/ToastStore/index.js +0 -1
- package/dist/Toast/ToastStore/index.mjs +0 -1
- package/dist/Toast/Toaster/index.js +0 -1
- package/dist/Toast/Toaster/index.mjs +0 -1
- package/dist/Toast/index.js +0 -1
- package/dist/Toast/index.mjs +0 -1
- package/dist/index.css +42 -1
- package/dist/index.js +1397 -935
- package/dist/index.mjs +1338 -866
- package/dist/styles.css +42 -1
- package/package.json +4 -2
- package/dist/Accordation/index.d.mts +0 -12
- package/dist/Accordation/index.d.ts +0 -12
- package/dist/Accordation/index.js.map +0 -1
- package/dist/Accordation/index.mjs.map +0 -1
- package/dist/Alert/index.d.mts +0 -13
- package/dist/Alert/index.d.ts +0 -13
- package/dist/Alert/index.js.map +0 -1
- package/dist/Alert/index.mjs.map +0 -1
- package/dist/AlertDialog/index.d.mts +0 -36
- package/dist/AlertDialog/index.d.ts +0 -36
- package/dist/AlertDialog/index.js.map +0 -1
- package/dist/AlertDialog/index.mjs.map +0 -1
- package/dist/Alternative/index.d.mts +0 -81
- package/dist/Alternative/index.d.ts +0 -81
- package/dist/Alternative/index.js.map +0 -1
- package/dist/Alternative/index.mjs.map +0 -1
- package/dist/Auth/AuthProvider/index.d.mts +0 -3
- package/dist/Auth/AuthProvider/index.d.ts +0 -3
- package/dist/Auth/AuthProvider/index.js.map +0 -1
- package/dist/Auth/AuthProvider/index.mjs.map +0 -1
- package/dist/Auth/ProtectedRoute/index.d.mts +0 -3
- package/dist/Auth/ProtectedRoute/index.d.ts +0 -3
- package/dist/Auth/ProtectedRoute/index.js.map +0 -1
- package/dist/Auth/ProtectedRoute/index.mjs.map +0 -1
- package/dist/Auth/PublicRoute/index.d.mts +0 -3
- package/dist/Auth/PublicRoute/index.d.ts +0 -3
- package/dist/Auth/PublicRoute/index.js.map +0 -1
- package/dist/Auth/PublicRoute/index.mjs.map +0 -1
- package/dist/Auth/getRootDomain/index.d.mts +0 -3
- package/dist/Auth/getRootDomain/index.d.ts +0 -3
- package/dist/Auth/getRootDomain/index.js.map +0 -1
- package/dist/Auth/getRootDomain/index.mjs.map +0 -1
- package/dist/Auth/index.d.mts +0 -312
- package/dist/Auth/index.d.ts +0 -312
- package/dist/Auth/index.js.map +0 -1
- package/dist/Auth/index.mjs.map +0 -1
- package/dist/Auth/useApiConfig/index.d.mts +0 -43
- package/dist/Auth/useApiConfig/index.d.ts +0 -43
- package/dist/Auth/useApiConfig/index.js.map +0 -1
- package/dist/Auth/useApiConfig/index.mjs.map +0 -1
- package/dist/Auth/useAuth/index.d.mts +0 -3
- package/dist/Auth/useAuth/index.d.ts +0 -3
- package/dist/Auth/useAuth/index.js.map +0 -1
- package/dist/Auth/useAuth/index.mjs.map +0 -1
- package/dist/Auth/useAuthGuard/index.d.mts +0 -3
- package/dist/Auth/useAuthGuard/index.d.ts +0 -3
- package/dist/Auth/useAuthGuard/index.js.map +0 -1
- package/dist/Auth/useAuthGuard/index.mjs.map +0 -1
- package/dist/Auth/useRouteAuth/index.d.mts +0 -3
- package/dist/Auth/useRouteAuth/index.d.ts +0 -3
- package/dist/Auth/useRouteAuth/index.js.map +0 -1
- package/dist/Auth/useRouteAuth/index.mjs.map +0 -1
- package/dist/Auth/useUrlAuthentication/index.d.mts +0 -58
- package/dist/Auth/useUrlAuthentication/index.d.ts +0 -58
- package/dist/Auth/useUrlAuthentication/index.js.map +0 -1
- package/dist/Auth/useUrlAuthentication/index.mjs.map +0 -1
- package/dist/Auth/withAuth/index.d.mts +0 -3
- package/dist/Auth/withAuth/index.d.ts +0 -3
- package/dist/Auth/withAuth/index.js.map +0 -1
- package/dist/Auth/withAuth/index.mjs.map +0 -1
- package/dist/Auth/zustandAuthAdapter/index.d.mts +0 -75
- package/dist/Auth/zustandAuthAdapter/index.d.ts +0 -75
- package/dist/Auth/zustandAuthAdapter/index.js.map +0 -1
- package/dist/Auth/zustandAuthAdapter/index.mjs.map +0 -1
- package/dist/Badge/index.d.mts +0 -46
- package/dist/Badge/index.d.ts +0 -46
- package/dist/Badge/index.js.map +0 -1
- package/dist/Badge/index.mjs.map +0 -1
- package/dist/Button/index.d.mts +0 -45
- package/dist/Button/index.d.ts +0 -45
- package/dist/Button/index.js.map +0 -1
- package/dist/Button/index.mjs.map +0 -1
- package/dist/Calendar/index.d.mts +0 -60
- package/dist/Calendar/index.d.ts +0 -60
- package/dist/Calendar/index.js.map +0 -1
- package/dist/Calendar/index.mjs.map +0 -1
- package/dist/Card/index.d.mts +0 -150
- package/dist/Card/index.d.ts +0 -150
- package/dist/Card/index.js.map +0 -1
- package/dist/Card/index.mjs.map +0 -1
- package/dist/CheckBox/index.d.mts +0 -74
- package/dist/CheckBox/index.d.ts +0 -74
- package/dist/CheckBox/index.js.map +0 -1
- package/dist/CheckBox/index.mjs.map +0 -1
- package/dist/Chips/index.d.mts +0 -41
- package/dist/Chips/index.d.ts +0 -41
- package/dist/Chips/index.js.map +0 -1
- package/dist/Chips/index.mjs.map +0 -1
- package/dist/Divider/index.d.mts +0 -32
- package/dist/Divider/index.d.ts +0 -32
- package/dist/Divider/index.js.map +0 -1
- package/dist/Divider/index.mjs.map +0 -1
- package/dist/DropdownMenu/index.d.mts +0 -68
- package/dist/DropdownMenu/index.d.ts +0 -68
- package/dist/DropdownMenu/index.js.map +0 -1
- package/dist/DropdownMenu/index.mjs.map +0 -1
- package/dist/IconButton/index.d.mts +0 -76
- package/dist/IconButton/index.d.ts +0 -76
- package/dist/IconButton/index.js.map +0 -1
- package/dist/IconButton/index.mjs.map +0 -1
- package/dist/IconRoundedButton/index.d.mts +0 -34
- package/dist/IconRoundedButton/index.d.ts +0 -34
- package/dist/IconRoundedButton/index.js.map +0 -1
- package/dist/IconRoundedButton/index.mjs.map +0 -1
- package/dist/Input/index.d.mts +0 -27
- package/dist/Input/index.d.ts +0 -27
- package/dist/Input/index.js.map +0 -1
- package/dist/Input/index.mjs.map +0 -1
- package/dist/Menu/index.d.mts +0 -48
- package/dist/Menu/index.d.ts +0 -48
- package/dist/Menu/index.js.map +0 -1
- package/dist/Menu/index.mjs.map +0 -1
- package/dist/Modal/index.d.mts +0 -66
- package/dist/Modal/index.d.ts +0 -66
- package/dist/Modal/index.js.map +0 -1
- package/dist/Modal/index.mjs.map +0 -1
- package/dist/NavButton/index.d.mts +0 -57
- package/dist/NavButton/index.d.ts +0 -57
- package/dist/NavButton/index.js.map +0 -1
- package/dist/NavButton/index.mjs.map +0 -1
- package/dist/NotFound/index.d.mts +0 -58
- package/dist/NotFound/index.d.ts +0 -58
- package/dist/NotFound/index.js.map +0 -1
- package/dist/NotFound/index.mjs.map +0 -1
- package/dist/ProgressBar/index.d.mts +0 -95
- package/dist/ProgressBar/index.d.ts +0 -95
- package/dist/ProgressBar/index.js.map +0 -1
- package/dist/ProgressBar/index.mjs.map +0 -1
- package/dist/ProgressCircle/index.d.mts +0 -60
- package/dist/ProgressCircle/index.d.ts +0 -60
- package/dist/ProgressCircle/index.js.map +0 -1
- package/dist/ProgressCircle/index.mjs.map +0 -1
- package/dist/Quiz/index.d.mts +0 -52
- package/dist/Quiz/index.d.ts +0 -52
- package/dist/Quiz/index.js.map +0 -1
- package/dist/Quiz/index.mjs.map +0 -1
- package/dist/Quiz/useQuizStore/index.d.mts +0 -140
- package/dist/Quiz/useQuizStore/index.d.ts +0 -140
- package/dist/Quiz/useQuizStore/index.js.map +0 -1
- package/dist/Quiz/useQuizStore/index.mjs.map +0 -1
- package/dist/Radio/index.d.mts +0 -203
- package/dist/Radio/index.d.ts +0 -203
- package/dist/Radio/index.js.map +0 -1
- package/dist/Radio/index.mjs.map +0 -1
- package/dist/Select/index.d.mts +0 -58
- package/dist/Select/index.d.ts +0 -58
- package/dist/Select/index.js.map +0 -1
- package/dist/Select/index.mjs.map +0 -1
- package/dist/SelectionButton/index.d.mts +0 -57
- package/dist/SelectionButton/index.d.ts +0 -57
- package/dist/SelectionButton/index.js.map +0 -1
- package/dist/SelectionButton/index.mjs.map +0 -1
- package/dist/Skeleton/index.d.mts +0 -40
- package/dist/Skeleton/index.d.ts +0 -40
- package/dist/Skeleton/index.js.map +0 -1
- package/dist/Skeleton/index.mjs.map +0 -1
- package/dist/Stepper/index.d.mts +0 -169
- package/dist/Stepper/index.d.ts +0 -169
- package/dist/Stepper/index.js.map +0 -1
- package/dist/Stepper/index.mjs.map +0 -1
- package/dist/Table/index.d.mts +0 -17
- package/dist/Table/index.d.ts +0 -17
- package/dist/Table/index.js.map +0 -1
- package/dist/Table/index.mjs.map +0 -1
- package/dist/Text/index.d.mts +0 -58
- package/dist/Text/index.d.ts +0 -58
- package/dist/Text/index.js.map +0 -1
- package/dist/Text/index.mjs.map +0 -1
- package/dist/TextArea/index.d.mts +0 -70
- package/dist/TextArea/index.d.ts +0 -70
- package/dist/TextArea/index.js.map +0 -1
- package/dist/TextArea/index.mjs.map +0 -1
- package/dist/Toast/ToastStore/index.d.mts +0 -19
- package/dist/Toast/ToastStore/index.d.ts +0 -19
- package/dist/Toast/ToastStore/index.js.map +0 -1
- package/dist/Toast/ToastStore/index.mjs.map +0 -1
- package/dist/Toast/Toaster/index.d.mts +0 -16
- package/dist/Toast/Toaster/index.d.ts +0 -16
- package/dist/Toast/Toaster/index.js.map +0 -1
- package/dist/Toast/Toaster/index.mjs.map +0 -1
- package/dist/Toast/index.d.mts +0 -17
- package/dist/Toast/index.d.ts +0 -17
- package/dist/Toast/index.js.map +0 -1
- package/dist/Toast/index.mjs.map +0 -1
- package/dist/index.css.map +0 -1
- package/dist/index.d.mts +0 -41
- package/dist/index.d.ts +0 -41
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/styles.css.map +0 -1
- package/dist/styles.d.mts +0 -2
- package/dist/styles.d.ts +0 -2
|
@@ -81,6 +81,7 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
81
81
|
setByActivity: (atividade) => set({ byActivity: atividade }),
|
|
82
82
|
setByQuestionary: (aula) => set({ byQuestionary: aula }),
|
|
83
83
|
setUserId: (userId) => set({ userId }),
|
|
84
|
+
setUserAnswers: (userAnswers) => set({ userAnswers }),
|
|
84
85
|
getUserId: () => get().userId,
|
|
85
86
|
// Navigation
|
|
86
87
|
goToNextQuestion: () => {
|
|
@@ -117,16 +118,9 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
117
118
|
const { getActiveQuiz, userAnswers } = get();
|
|
118
119
|
const activeQuiz = getActiveQuiz();
|
|
119
120
|
if (!activeQuiz) return;
|
|
120
|
-
const updatedQuestions = activeQuiz.quiz.questions.map(
|
|
121
|
-
(question) => question.id === questionId ? { ...question, answerKey: answerId } : question
|
|
122
|
-
);
|
|
123
|
-
const updatedQuiz = {
|
|
124
|
-
...activeQuiz.quiz,
|
|
125
|
-
questions: updatedQuestions
|
|
126
|
-
};
|
|
127
121
|
const activityId = activeQuiz.quiz.id;
|
|
128
122
|
const userId = get().getUserId();
|
|
129
|
-
if (!userId) {
|
|
123
|
+
if (!userId || userId === "") {
|
|
130
124
|
console.warn("selectAnswer called before userId is set");
|
|
131
125
|
return;
|
|
132
126
|
}
|
|
@@ -137,7 +131,7 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
137
131
|
questionId,
|
|
138
132
|
activityId,
|
|
139
133
|
userId,
|
|
140
|
-
answer:
|
|
134
|
+
answer: null,
|
|
141
135
|
optionId: answerId
|
|
142
136
|
};
|
|
143
137
|
let updatedUserAnswers;
|
|
@@ -148,7 +142,36 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
148
142
|
updatedUserAnswers = [...userAnswers, newUserAnswer];
|
|
149
143
|
}
|
|
150
144
|
set({
|
|
151
|
-
|
|
145
|
+
userAnswers: updatedUserAnswers
|
|
146
|
+
});
|
|
147
|
+
},
|
|
148
|
+
selectMultipleAnswer: (questionId, answerIds) => {
|
|
149
|
+
const { getActiveQuiz, userAnswers } = get();
|
|
150
|
+
const activeQuiz = getActiveQuiz();
|
|
151
|
+
if (!activeQuiz) return;
|
|
152
|
+
const activityId = activeQuiz.quiz.id;
|
|
153
|
+
const userId = get().getUserId();
|
|
154
|
+
if (!userId || userId === "") {
|
|
155
|
+
console.warn("selectMultipleAnswer called before userId is set");
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const filteredUserAnswers = userAnswers.filter(
|
|
159
|
+
(answer) => answer.questionId !== questionId
|
|
160
|
+
);
|
|
161
|
+
const newUserAnswers = answerIds.map(
|
|
162
|
+
(answerId) => ({
|
|
163
|
+
questionId,
|
|
164
|
+
activityId,
|
|
165
|
+
userId,
|
|
166
|
+
answer: null,
|
|
167
|
+
optionId: answerId
|
|
168
|
+
})
|
|
169
|
+
);
|
|
170
|
+
const updatedUserAnswers = [
|
|
171
|
+
...filteredUserAnswers,
|
|
172
|
+
...newUserAnswers
|
|
173
|
+
];
|
|
174
|
+
set({
|
|
152
175
|
userAnswers: updatedUserAnswers
|
|
153
176
|
});
|
|
154
177
|
},
|
|
@@ -160,6 +183,10 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
160
183
|
if (currentQuestion) {
|
|
161
184
|
const activityId = activeQuiz.quiz.id;
|
|
162
185
|
const userId = get().getUserId();
|
|
186
|
+
if (!userId || userId === "") {
|
|
187
|
+
console.warn("skipQuestion called before userId is set");
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
163
190
|
const existingAnswerIndex = userAnswers.findIndex(
|
|
164
191
|
(answer) => answer.questionId === currentQuestion.id
|
|
165
192
|
);
|
|
@@ -188,6 +215,10 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
188
215
|
if (!activeQuiz) return;
|
|
189
216
|
const activityId = activeQuiz.quiz.id;
|
|
190
217
|
const userId = get().getUserId();
|
|
218
|
+
if (!userId || userId === "") {
|
|
219
|
+
console.warn("addUserAnswer called before userId is set");
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
191
222
|
const existingAnswerIndex = userAnswers.findIndex(
|
|
192
223
|
(answer) => answer.questionId === questionId
|
|
193
224
|
);
|
|
@@ -195,7 +226,7 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
195
226
|
questionId,
|
|
196
227
|
activityId,
|
|
197
228
|
userId,
|
|
198
|
-
answer:
|
|
229
|
+
answer: null,
|
|
199
230
|
optionId: answerId || null
|
|
200
231
|
};
|
|
201
232
|
if (existingAnswerIndex !== -1) {
|
|
@@ -246,7 +277,7 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
246
277
|
},
|
|
247
278
|
getAnsweredQuestions: () => {
|
|
248
279
|
const { userAnswers } = get();
|
|
249
|
-
return userAnswers.filter((answer) => answer.
|
|
280
|
+
return userAnswers.filter((answer) => answer.optionId !== null).length;
|
|
250
281
|
},
|
|
251
282
|
getUnansweredQuestions: () => {
|
|
252
283
|
const { getActiveQuiz, userAnswers } = get();
|
|
@@ -257,8 +288,8 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
257
288
|
const userAnswer = userAnswers.find(
|
|
258
289
|
(answer) => answer.questionId === question.id
|
|
259
290
|
);
|
|
260
|
-
const isAnswered = userAnswer && userAnswer.
|
|
261
|
-
const isSkipped = userAnswer && userAnswer.
|
|
291
|
+
const isAnswered = userAnswer && userAnswer.optionId !== null;
|
|
292
|
+
const isSkipped = userAnswer && userAnswer.optionId === null;
|
|
262
293
|
if (!isAnswered && !isSkipped) {
|
|
263
294
|
unansweredQuestions.push(index + 1);
|
|
264
295
|
}
|
|
@@ -267,7 +298,7 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
267
298
|
},
|
|
268
299
|
getSkippedQuestions: () => {
|
|
269
300
|
const { userAnswers } = get();
|
|
270
|
-
return userAnswers.filter((answer) => answer.
|
|
301
|
+
return userAnswers.filter((answer) => answer.optionId === null).length;
|
|
271
302
|
},
|
|
272
303
|
getProgress: () => {
|
|
273
304
|
const { getTotalQuestions, getAnsweredQuestions } = get();
|
|
@@ -280,14 +311,14 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
280
311
|
const userAnswer = userAnswers.find(
|
|
281
312
|
(answer) => answer.questionId === questionId
|
|
282
313
|
);
|
|
283
|
-
return userAnswer ? userAnswer.
|
|
314
|
+
return userAnswer ? userAnswer.optionId !== null : false;
|
|
284
315
|
},
|
|
285
316
|
isQuestionSkipped: (questionId) => {
|
|
286
317
|
const { userAnswers } = get();
|
|
287
318
|
const userAnswer = userAnswers.find(
|
|
288
319
|
(answer) => answer.questionId === questionId
|
|
289
320
|
);
|
|
290
|
-
return userAnswer ? userAnswer.
|
|
321
|
+
return userAnswer ? userAnswer.optionId === null : false;
|
|
291
322
|
},
|
|
292
323
|
getCurrentAnswer: () => {
|
|
293
324
|
const { getCurrentQuestion, userAnswers } = get();
|
|
@@ -296,7 +327,16 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
296
327
|
const userAnswer = userAnswers.find(
|
|
297
328
|
(answer) => answer.questionId === currentQuestion.id
|
|
298
329
|
);
|
|
299
|
-
return userAnswer?.
|
|
330
|
+
return userAnswer?.optionId;
|
|
331
|
+
},
|
|
332
|
+
getAllCurrentAnswer: () => {
|
|
333
|
+
const { getCurrentQuestion, userAnswers } = get();
|
|
334
|
+
const currentQuestion = getCurrentQuestion();
|
|
335
|
+
if (!currentQuestion) return void 0;
|
|
336
|
+
const userAnswer = userAnswers.filter(
|
|
337
|
+
(answer) => answer.questionId === currentQuestion.id
|
|
338
|
+
);
|
|
339
|
+
return userAnswer;
|
|
300
340
|
},
|
|
301
341
|
getQuizTitle: () => {
|
|
302
342
|
const { getActiveQuiz } = get();
|
|
@@ -309,18 +349,8 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
309
349
|
return `${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
310
350
|
},
|
|
311
351
|
getUserAnswers: () => {
|
|
312
|
-
const {
|
|
313
|
-
|
|
314
|
-
if (!activeQuiz) return [];
|
|
315
|
-
return activeQuiz.quiz.questions.map((question) => {
|
|
316
|
-
const userAnswer = userAnswers.find(
|
|
317
|
-
(answer) => answer.questionId === question.id
|
|
318
|
-
);
|
|
319
|
-
return {
|
|
320
|
-
...question,
|
|
321
|
-
isSkipped: userAnswer ? userAnswer.answer === null : false
|
|
322
|
-
};
|
|
323
|
-
});
|
|
352
|
+
const { userAnswers } = get();
|
|
353
|
+
return userAnswers;
|
|
324
354
|
},
|
|
325
355
|
getUnansweredQuestionsFromUserAnswers: () => {
|
|
326
356
|
const { getActiveQuiz, userAnswers } = get();
|
|
@@ -331,8 +361,8 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
331
361
|
const userAnswer = userAnswers.find(
|
|
332
362
|
(answer) => answer.questionId === question.id
|
|
333
363
|
);
|
|
334
|
-
const hasAnswer = userAnswer && userAnswer.
|
|
335
|
-
const isSkipped = userAnswer && userAnswer.
|
|
364
|
+
const hasAnswer = userAnswer && userAnswer.optionId !== null;
|
|
365
|
+
const isSkipped = userAnswer && userAnswer.optionId === null;
|
|
336
366
|
if (!hasAnswer || isSkipped) {
|
|
337
367
|
unansweredQuestions.push(index + 1);
|
|
338
368
|
}
|
|
@@ -363,7 +393,7 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
363
393
|
const answer = userAnswers.find(
|
|
364
394
|
(answer2) => answer2.questionId === questionId
|
|
365
395
|
);
|
|
366
|
-
return answer ? answer.
|
|
396
|
+
return answer ? answer.optionId !== null : false;
|
|
367
397
|
},
|
|
368
398
|
getQuestionStatusFromUserAnswers: (questionId) => {
|
|
369
399
|
const { userAnswers } = get();
|
|
@@ -371,12 +401,27 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
371
401
|
(answer2) => answer2.questionId === questionId
|
|
372
402
|
);
|
|
373
403
|
if (!answer) return "unanswered";
|
|
374
|
-
if (answer.
|
|
404
|
+
if (answer.optionId === null) return "skipped";
|
|
375
405
|
return "answered";
|
|
376
406
|
},
|
|
377
407
|
getUserAnswersForActivity: () => {
|
|
378
408
|
const { userAnswers } = get();
|
|
379
409
|
return userAnswers;
|
|
410
|
+
},
|
|
411
|
+
setCurrentQuestion: (question) => {
|
|
412
|
+
const { getActiveQuiz } = get();
|
|
413
|
+
const activeQuiz = getActiveQuiz();
|
|
414
|
+
if (!activeQuiz) return;
|
|
415
|
+
const questionIndex = activeQuiz.quiz.questions.findIndex(
|
|
416
|
+
(q) => q.id === question.id
|
|
417
|
+
);
|
|
418
|
+
if (questionIndex === -1) {
|
|
419
|
+
console.warn(
|
|
420
|
+
`Question with id "${question.id}" not found in active quiz`
|
|
421
|
+
);
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
set({ currentQuestionIndex: questionIndex });
|
|
380
425
|
}
|
|
381
426
|
};
|
|
382
427
|
},
|
|
@@ -392,4 +437,3 @@ var useQuizStore = (0, import_zustand.create)()(
|
|
|
392
437
|
QUESTION_TYPE,
|
|
393
438
|
useQuizStore
|
|
394
439
|
});
|
|
395
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -54,6 +54,7 @@ var useQuizStore = create()(
|
|
|
54
54
|
setByActivity: (atividade) => set({ byActivity: atividade }),
|
|
55
55
|
setByQuestionary: (aula) => set({ byQuestionary: aula }),
|
|
56
56
|
setUserId: (userId) => set({ userId }),
|
|
57
|
+
setUserAnswers: (userAnswers) => set({ userAnswers }),
|
|
57
58
|
getUserId: () => get().userId,
|
|
58
59
|
// Navigation
|
|
59
60
|
goToNextQuestion: () => {
|
|
@@ -90,16 +91,9 @@ var useQuizStore = create()(
|
|
|
90
91
|
const { getActiveQuiz, userAnswers } = get();
|
|
91
92
|
const activeQuiz = getActiveQuiz();
|
|
92
93
|
if (!activeQuiz) return;
|
|
93
|
-
const updatedQuestions = activeQuiz.quiz.questions.map(
|
|
94
|
-
(question) => question.id === questionId ? { ...question, answerKey: answerId } : question
|
|
95
|
-
);
|
|
96
|
-
const updatedQuiz = {
|
|
97
|
-
...activeQuiz.quiz,
|
|
98
|
-
questions: updatedQuestions
|
|
99
|
-
};
|
|
100
94
|
const activityId = activeQuiz.quiz.id;
|
|
101
95
|
const userId = get().getUserId();
|
|
102
|
-
if (!userId) {
|
|
96
|
+
if (!userId || userId === "") {
|
|
103
97
|
console.warn("selectAnswer called before userId is set");
|
|
104
98
|
return;
|
|
105
99
|
}
|
|
@@ -110,7 +104,7 @@ var useQuizStore = create()(
|
|
|
110
104
|
questionId,
|
|
111
105
|
activityId,
|
|
112
106
|
userId,
|
|
113
|
-
answer:
|
|
107
|
+
answer: null,
|
|
114
108
|
optionId: answerId
|
|
115
109
|
};
|
|
116
110
|
let updatedUserAnswers;
|
|
@@ -121,7 +115,36 @@ var useQuizStore = create()(
|
|
|
121
115
|
updatedUserAnswers = [...userAnswers, newUserAnswer];
|
|
122
116
|
}
|
|
123
117
|
set({
|
|
124
|
-
|
|
118
|
+
userAnswers: updatedUserAnswers
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
selectMultipleAnswer: (questionId, answerIds) => {
|
|
122
|
+
const { getActiveQuiz, userAnswers } = get();
|
|
123
|
+
const activeQuiz = getActiveQuiz();
|
|
124
|
+
if (!activeQuiz) return;
|
|
125
|
+
const activityId = activeQuiz.quiz.id;
|
|
126
|
+
const userId = get().getUserId();
|
|
127
|
+
if (!userId || userId === "") {
|
|
128
|
+
console.warn("selectMultipleAnswer called before userId is set");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const filteredUserAnswers = userAnswers.filter(
|
|
132
|
+
(answer) => answer.questionId !== questionId
|
|
133
|
+
);
|
|
134
|
+
const newUserAnswers = answerIds.map(
|
|
135
|
+
(answerId) => ({
|
|
136
|
+
questionId,
|
|
137
|
+
activityId,
|
|
138
|
+
userId,
|
|
139
|
+
answer: null,
|
|
140
|
+
optionId: answerId
|
|
141
|
+
})
|
|
142
|
+
);
|
|
143
|
+
const updatedUserAnswers = [
|
|
144
|
+
...filteredUserAnswers,
|
|
145
|
+
...newUserAnswers
|
|
146
|
+
];
|
|
147
|
+
set({
|
|
125
148
|
userAnswers: updatedUserAnswers
|
|
126
149
|
});
|
|
127
150
|
},
|
|
@@ -133,6 +156,10 @@ var useQuizStore = create()(
|
|
|
133
156
|
if (currentQuestion) {
|
|
134
157
|
const activityId = activeQuiz.quiz.id;
|
|
135
158
|
const userId = get().getUserId();
|
|
159
|
+
if (!userId || userId === "") {
|
|
160
|
+
console.warn("skipQuestion called before userId is set");
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
136
163
|
const existingAnswerIndex = userAnswers.findIndex(
|
|
137
164
|
(answer) => answer.questionId === currentQuestion.id
|
|
138
165
|
);
|
|
@@ -161,6 +188,10 @@ var useQuizStore = create()(
|
|
|
161
188
|
if (!activeQuiz) return;
|
|
162
189
|
const activityId = activeQuiz.quiz.id;
|
|
163
190
|
const userId = get().getUserId();
|
|
191
|
+
if (!userId || userId === "") {
|
|
192
|
+
console.warn("addUserAnswer called before userId is set");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
164
195
|
const existingAnswerIndex = userAnswers.findIndex(
|
|
165
196
|
(answer) => answer.questionId === questionId
|
|
166
197
|
);
|
|
@@ -168,7 +199,7 @@ var useQuizStore = create()(
|
|
|
168
199
|
questionId,
|
|
169
200
|
activityId,
|
|
170
201
|
userId,
|
|
171
|
-
answer:
|
|
202
|
+
answer: null,
|
|
172
203
|
optionId: answerId || null
|
|
173
204
|
};
|
|
174
205
|
if (existingAnswerIndex !== -1) {
|
|
@@ -219,7 +250,7 @@ var useQuizStore = create()(
|
|
|
219
250
|
},
|
|
220
251
|
getAnsweredQuestions: () => {
|
|
221
252
|
const { userAnswers } = get();
|
|
222
|
-
return userAnswers.filter((answer) => answer.
|
|
253
|
+
return userAnswers.filter((answer) => answer.optionId !== null).length;
|
|
223
254
|
},
|
|
224
255
|
getUnansweredQuestions: () => {
|
|
225
256
|
const { getActiveQuiz, userAnswers } = get();
|
|
@@ -230,8 +261,8 @@ var useQuizStore = create()(
|
|
|
230
261
|
const userAnswer = userAnswers.find(
|
|
231
262
|
(answer) => answer.questionId === question.id
|
|
232
263
|
);
|
|
233
|
-
const isAnswered = userAnswer && userAnswer.
|
|
234
|
-
const isSkipped = userAnswer && userAnswer.
|
|
264
|
+
const isAnswered = userAnswer && userAnswer.optionId !== null;
|
|
265
|
+
const isSkipped = userAnswer && userAnswer.optionId === null;
|
|
235
266
|
if (!isAnswered && !isSkipped) {
|
|
236
267
|
unansweredQuestions.push(index + 1);
|
|
237
268
|
}
|
|
@@ -240,7 +271,7 @@ var useQuizStore = create()(
|
|
|
240
271
|
},
|
|
241
272
|
getSkippedQuestions: () => {
|
|
242
273
|
const { userAnswers } = get();
|
|
243
|
-
return userAnswers.filter((answer) => answer.
|
|
274
|
+
return userAnswers.filter((answer) => answer.optionId === null).length;
|
|
244
275
|
},
|
|
245
276
|
getProgress: () => {
|
|
246
277
|
const { getTotalQuestions, getAnsweredQuestions } = get();
|
|
@@ -253,14 +284,14 @@ var useQuizStore = create()(
|
|
|
253
284
|
const userAnswer = userAnswers.find(
|
|
254
285
|
(answer) => answer.questionId === questionId
|
|
255
286
|
);
|
|
256
|
-
return userAnswer ? userAnswer.
|
|
287
|
+
return userAnswer ? userAnswer.optionId !== null : false;
|
|
257
288
|
},
|
|
258
289
|
isQuestionSkipped: (questionId) => {
|
|
259
290
|
const { userAnswers } = get();
|
|
260
291
|
const userAnswer = userAnswers.find(
|
|
261
292
|
(answer) => answer.questionId === questionId
|
|
262
293
|
);
|
|
263
|
-
return userAnswer ? userAnswer.
|
|
294
|
+
return userAnswer ? userAnswer.optionId === null : false;
|
|
264
295
|
},
|
|
265
296
|
getCurrentAnswer: () => {
|
|
266
297
|
const { getCurrentQuestion, userAnswers } = get();
|
|
@@ -269,7 +300,16 @@ var useQuizStore = create()(
|
|
|
269
300
|
const userAnswer = userAnswers.find(
|
|
270
301
|
(answer) => answer.questionId === currentQuestion.id
|
|
271
302
|
);
|
|
272
|
-
return userAnswer?.
|
|
303
|
+
return userAnswer?.optionId;
|
|
304
|
+
},
|
|
305
|
+
getAllCurrentAnswer: () => {
|
|
306
|
+
const { getCurrentQuestion, userAnswers } = get();
|
|
307
|
+
const currentQuestion = getCurrentQuestion();
|
|
308
|
+
if (!currentQuestion) return void 0;
|
|
309
|
+
const userAnswer = userAnswers.filter(
|
|
310
|
+
(answer) => answer.questionId === currentQuestion.id
|
|
311
|
+
);
|
|
312
|
+
return userAnswer;
|
|
273
313
|
},
|
|
274
314
|
getQuizTitle: () => {
|
|
275
315
|
const { getActiveQuiz } = get();
|
|
@@ -282,18 +322,8 @@ var useQuizStore = create()(
|
|
|
282
322
|
return `${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
283
323
|
},
|
|
284
324
|
getUserAnswers: () => {
|
|
285
|
-
const {
|
|
286
|
-
|
|
287
|
-
if (!activeQuiz) return [];
|
|
288
|
-
return activeQuiz.quiz.questions.map((question) => {
|
|
289
|
-
const userAnswer = userAnswers.find(
|
|
290
|
-
(answer) => answer.questionId === question.id
|
|
291
|
-
);
|
|
292
|
-
return {
|
|
293
|
-
...question,
|
|
294
|
-
isSkipped: userAnswer ? userAnswer.answer === null : false
|
|
295
|
-
};
|
|
296
|
-
});
|
|
325
|
+
const { userAnswers } = get();
|
|
326
|
+
return userAnswers;
|
|
297
327
|
},
|
|
298
328
|
getUnansweredQuestionsFromUserAnswers: () => {
|
|
299
329
|
const { getActiveQuiz, userAnswers } = get();
|
|
@@ -304,8 +334,8 @@ var useQuizStore = create()(
|
|
|
304
334
|
const userAnswer = userAnswers.find(
|
|
305
335
|
(answer) => answer.questionId === question.id
|
|
306
336
|
);
|
|
307
|
-
const hasAnswer = userAnswer && userAnswer.
|
|
308
|
-
const isSkipped = userAnswer && userAnswer.
|
|
337
|
+
const hasAnswer = userAnswer && userAnswer.optionId !== null;
|
|
338
|
+
const isSkipped = userAnswer && userAnswer.optionId === null;
|
|
309
339
|
if (!hasAnswer || isSkipped) {
|
|
310
340
|
unansweredQuestions.push(index + 1);
|
|
311
341
|
}
|
|
@@ -336,7 +366,7 @@ var useQuizStore = create()(
|
|
|
336
366
|
const answer = userAnswers.find(
|
|
337
367
|
(answer2) => answer2.questionId === questionId
|
|
338
368
|
);
|
|
339
|
-
return answer ? answer.
|
|
369
|
+
return answer ? answer.optionId !== null : false;
|
|
340
370
|
},
|
|
341
371
|
getQuestionStatusFromUserAnswers: (questionId) => {
|
|
342
372
|
const { userAnswers } = get();
|
|
@@ -344,12 +374,27 @@ var useQuizStore = create()(
|
|
|
344
374
|
(answer2) => answer2.questionId === questionId
|
|
345
375
|
);
|
|
346
376
|
if (!answer) return "unanswered";
|
|
347
|
-
if (answer.
|
|
377
|
+
if (answer.optionId === null) return "skipped";
|
|
348
378
|
return "answered";
|
|
349
379
|
},
|
|
350
380
|
getUserAnswersForActivity: () => {
|
|
351
381
|
const { userAnswers } = get();
|
|
352
382
|
return userAnswers;
|
|
383
|
+
},
|
|
384
|
+
setCurrentQuestion: (question) => {
|
|
385
|
+
const { getActiveQuiz } = get();
|
|
386
|
+
const activeQuiz = getActiveQuiz();
|
|
387
|
+
if (!activeQuiz) return;
|
|
388
|
+
const questionIndex = activeQuiz.quiz.questions.findIndex(
|
|
389
|
+
(q) => q.id === question.id
|
|
390
|
+
);
|
|
391
|
+
if (questionIndex === -1) {
|
|
392
|
+
console.warn(
|
|
393
|
+
`Question with id "${question.id}" not found in active quiz`
|
|
394
|
+
);
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
set({ currentQuestionIndex: questionIndex });
|
|
353
398
|
}
|
|
354
399
|
};
|
|
355
400
|
},
|
|
@@ -364,4 +409,3 @@ export {
|
|
|
364
409
|
QUESTION_TYPE,
|
|
365
410
|
useQuizStore
|
|
366
411
|
};
|
|
367
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/Radio/index.js
CHANGED
package/dist/Radio/index.mjs
CHANGED
package/dist/Select/index.js
CHANGED
package/dist/Select/index.mjs
CHANGED
package/dist/Skeleton/index.js
CHANGED
package/dist/Skeleton/index.mjs
CHANGED
package/dist/Stepper/index.js
CHANGED
package/dist/Stepper/index.mjs
CHANGED
package/dist/Table/index.js
CHANGED
package/dist/Table/index.mjs
CHANGED
package/dist/Text/index.js
CHANGED
package/dist/Text/index.mjs
CHANGED
package/dist/TextArea/index.js
CHANGED
package/dist/TextArea/index.mjs
CHANGED
package/dist/Toast/index.js
CHANGED
package/dist/Toast/index.mjs
CHANGED