@nualang/nualang-ui-components 0.1.1327 → 0.1.1329

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.
@@ -4,6 +4,8 @@ import { grey, green } from "@mui/material/colors";
4
4
  import AutoFixHighIcon from "@mui/icons-material/AutoFixHigh";
5
5
  import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
6
6
  import CheckCircleIcon from "@mui/icons-material/CheckCircle";
7
+ import TrendingUpIcon from "@mui/icons-material/TrendingUp";
8
+ import TrendingDownIcon from "@mui/icons-material/TrendingDown";
7
9
  import { Formik } from "formik";
8
10
  import * as Yup from "yup";
9
11
  import RecordingDialog from "../../Dialogs/RecordingDialog/RecordingDialog";
@@ -14,6 +16,38 @@ import level3Rubric from "../../Dialogs/PDFViewer/rubrics/level3Rubric.pdf";
14
16
  import level4Rubric from "../../Dialogs/PDFViewer/rubrics/level4Rubric.pdf";
15
17
  import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
16
18
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
19
+ const getPerformanceLevel = (student, aiGrade) => {
20
+ if (!aiGrade || Object.keys(aiGrade).length === 0) return null;
21
+ const keyVariants = [student.username, `${student.username}Student`, student.username?.replace(/\s+/g, "")];
22
+ const aiData = keyVariants.map(k => aiGrade?.[k]).find(v => v && typeof v === "object") || null;
23
+ return aiData?.LevelPerformance || null;
24
+ };
25
+ const getPerformanceChipProps = (level, t) => {
26
+ switch (level?.toLowerCase()) {
27
+ case 'above':
28
+ return {
29
+ label: t('above_level'),
30
+ color: 'success',
31
+ icon: /*#__PURE__*/_jsx(TrendingUpIcon, {
32
+ sx: {
33
+ fontSize: 16
34
+ }
35
+ })
36
+ };
37
+ case 'below':
38
+ return {
39
+ label: t('below_level'),
40
+ color: 'warning',
41
+ icon: /*#__PURE__*/_jsx(TrendingDownIcon, {
42
+ sx: {
43
+ fontSize: 16
44
+ }
45
+ })
46
+ };
47
+ default:
48
+ return null;
49
+ }
50
+ };
17
51
  export default function FeedbackCard({
18
52
  t = x => x,
19
53
  discussionData = {},
@@ -82,18 +116,21 @@ export default function FeedbackCard({
82
116
  attendedMembers.forEach(student => {
83
117
  const existingStudentFeedback = existingFeedback[student.memberId];
84
118
  feedbackData[student.memberId] = {
85
- feedbackText: existingStudentFeedback?.feedbackText || ""
119
+ feedbackText: existingStudentFeedback?.feedbackText || "",
120
+ levelPerformance: existingStudentFeedback?.levelPerformance || null
86
121
  };
87
122
  });
88
123
  notAttendedMembers.forEach(student => {
89
124
  feedbackData[student.memberId] = {
90
- feedbackText: existingFeedback[student.memberId]?.feedbackText || t("not_present")
125
+ feedbackText: existingFeedback[student.memberId]?.feedbackText || t("not_present"),
126
+ levelPerformance: existingFeedback[student.memberId]?.levelPerformance || null
91
127
  };
92
128
  });
93
129
  } else {
94
130
  selectedMembers.forEach(student => {
95
131
  feedbackData[student.memberId] = {
96
- feedbackText: existingFeedback[student.memberId]?.feedbackText || ""
132
+ feedbackText: existingFeedback[student.memberId]?.feedbackText || "",
133
+ levelPerformance: existingFeedback[student.memberId]?.levelPerformance || null
97
134
  };
98
135
  });
99
136
  }
@@ -133,6 +170,9 @@ export default function FeedbackCard({
133
170
  if (aiData?.Feedback) {
134
171
  formik.setFieldValue(`feedbackData.${student.memberId}.feedbackText`, aiData.Feedback);
135
172
  }
173
+ if (aiData?.LevelPerformance) {
174
+ formik.setFieldValue(`feedbackData.${student.memberId}.levelPerformance`, aiData.LevelPerformance);
175
+ }
136
176
  });
137
177
  setHasBeenEdited(true);
138
178
  setIsSubmitted(false);
@@ -190,9 +230,18 @@ export default function FeedbackCard({
190
230
  const feedbackDataWithAbsent = {
191
231
  ...values.feedbackData
192
232
  };
233
+ selectedMembers.forEach(student => {
234
+ const existingLevel = feedbackDataWithAbsent[student.memberId]?.levelPerformance;
235
+ const aiLevel = getPerformanceLevel(student, aiGrade);
236
+ feedbackDataWithAbsent[student.memberId] = {
237
+ ...feedbackDataWithAbsent[student.memberId],
238
+ levelPerformance: existingLevel ?? aiLevel ?? null
239
+ };
240
+ });
193
241
  notAttendedMembers.forEach(student => {
194
242
  feedbackDataWithAbsent[student.memberId] = {
195
- feedbackText: t("not_present")
243
+ feedbackText: t("not_present"),
244
+ levelPerformance: feedbackDataWithAbsent[student.memberId]?.levelPerformance ?? null
196
245
  };
197
246
  });
198
247
  await onSubmitFeedback({
@@ -314,6 +363,8 @@ export default function FeedbackCard({
314
363
  const isAbsent = hasSubmission && !joinedMembers.includes(student.memberId);
315
364
  const disabled = !hasSubmission || isAbsent;
316
365
  const studentFeedback = values.feedbackData[student.memberId] || {};
366
+ const perfLevel = studentFeedback.levelPerformance || getPerformanceLevel(student, aiGrade);
367
+ const chipProps = getPerformanceChipProps(perfLevel, t);
317
368
  return /*#__PURE__*/_jsx(Box, {
318
369
  sx: {
319
370
  py: 2
@@ -330,7 +381,7 @@ export default function FeedbackCard({
330
381
  children: /*#__PURE__*/_jsxs(Box, {
331
382
  display: "flex",
332
383
  alignItems: "center",
333
- gap: 2,
384
+ gap: 1.5,
334
385
  children: [/*#__PURE__*/_jsx(Avatar, {
335
386
  alt: student.username,
336
387
  src: student.userImage,
@@ -339,12 +390,65 @@ export default function FeedbackCard({
339
390
  height: 48,
340
391
  filter: isAbsent ? "grayscale(100%)" : "none"
341
392
  }
342
- }), /*#__PURE__*/_jsx(Typography, {
343
- fontWeight: 600,
344
- sx: {
345
- color: isAbsent ? grey[500] : "text.primary"
346
- },
347
- children: student.username
393
+ }), /*#__PURE__*/_jsxs(Box, {
394
+ display: "flex",
395
+ flexDirection: "column",
396
+ gap: 0.5,
397
+ children: [/*#__PURE__*/_jsx(Typography, {
398
+ fontWeight: 600,
399
+ sx: {
400
+ color: isAbsent ? grey[500] : "text.primary"
401
+ },
402
+ children: student.username
403
+ }), chipProps && hasSubmission && !isAbsent && /*#__PURE__*/_jsx(Tooltip, {
404
+ title: /*#__PURE__*/_jsxs(Box, {
405
+ sx: {
406
+ p: 0.5
407
+ },
408
+ children: [/*#__PURE__*/_jsx(Typography, {
409
+ variant: "body2",
410
+ fontWeight: "bold",
411
+ sx: {
412
+ mb: 0.5
413
+ },
414
+ children: t('ai_performance_assessment')
415
+ }), /*#__PURE__*/_jsx(Typography, {
416
+ variant: "caption",
417
+ sx: {
418
+ display: 'block',
419
+ mb: 0.5
420
+ },
421
+ children: t('performance_chip_tooltip')
422
+ }), /*#__PURE__*/_jsx(Typography, {
423
+ variant: "caption",
424
+ sx: {
425
+ fontStyle: 'italic',
426
+ opacity: 0.9
427
+ },
428
+ children: t('performance_chip_note')
429
+ })]
430
+ }),
431
+ placement: "top",
432
+ children: /*#__PURE__*/_jsx(Chip, {
433
+ label: chipProps.label,
434
+ color: chipProps.color,
435
+ size: "small",
436
+ icon: chipProps.icon,
437
+ sx: {
438
+ width: 'fit-content',
439
+ fontWeight: 600,
440
+ fontSize: '0.7rem',
441
+ height: '22px',
442
+ '& .MuiChip-label': {
443
+ paddingLeft: '8px',
444
+ paddingRight: '8px'
445
+ },
446
+ '&:hover': {
447
+ opacity: 0.9
448
+ }
449
+ }
450
+ })
451
+ })]
348
452
  })]
349
453
  })
350
454
  }), /*#__PURE__*/_jsx(Grid, {
@@ -261,7 +261,8 @@ function GenerateBotDialog({
261
261
  required: true,
262
262
  onChange: handleChange,
263
263
  multiline: true,
264
- rows: 3
264
+ rows: 3,
265
+ autoFocus: true
265
266
  // maxLength={200}
266
267
  })
267
268
  }), /*#__PURE__*/_jsx(Grid, {
@@ -122,8 +122,23 @@ export default function GroupFeedbackDialog({
122
122
  const progress = totalDiscussions > 0 ? Math.round(submittedCount / totalDiscussions * 100) : 0;
123
123
  const ratio = totalDiscussions > 0 ? submittedCount / totalDiscussions : 0;
124
124
  const ringColor = ratio === 0 ? grey[500] : ratio > 0 && ratio <= 1 / 3 ? red[600] : ratio > 1 / 3 && ratio <= 2 / 3 ? orange[600] : ratio > 2 / 3 && ratio < 1 ? green[600] : green[600];
125
+ const getJoinedMembersNames = (joinedMemberIds, userData) => {
126
+ if (!joinedMemberIds || !Array.isArray(joinedMemberIds)) {
127
+ return [];
128
+ }
129
+ return joinedMemberIds.map(memberId => {
130
+ const user = userData.find(u => u.memberId === memberId);
131
+ return {
132
+ memberId: memberId,
133
+ name: user?.username || user?.createdByName || 'Unknown',
134
+ username: user?.username,
135
+ createdByName: user?.createdByName
136
+ };
137
+ }).filter(member => member.name !== 'Unknown');
138
+ };
125
139
  const handleGenerateFeedback = async discussionData => {
126
140
  if (handleBatchGradeConversations) {
141
+ const joinedMembersWithNames = getJoinedMembersNames(discussionData.joinedMembers || [], userData);
127
142
  await handleBatchGradeConversations([{
128
143
  meetingId: discussionData.meetingId || discussionData.meetingID,
129
144
  extMeetingId: discussionData.extMeetingId,
@@ -131,7 +146,9 @@ export default function GroupFeedbackDialog({
131
146
  meetingCreator: discussionData.meetingCreator,
132
147
  conversation: discussionData.conversation,
133
148
  meetingPrompt: discussionData.meetingPrompt,
134
- learnLang: learnLang
149
+ learnLang: learnLang,
150
+ joinedMembers: discussionData.joinedMembers || [],
151
+ joinedMembersNames: joinedMembersWithNames
135
152
  }]);
136
153
  }
137
154
  };
@@ -144,13 +161,17 @@ export default function GroupFeedbackDialog({
144
161
  }).map(discussion => {
145
162
  const discMeetingId = discussion.meetingID || discussion.meetingId;
146
163
  const submissionForThisDiscussion = submissionsByMeetingId[discMeetingId];
164
+ const joinedMembersWithNames = getJoinedMembersNames(submissionForThisDiscussion.joinedMembers || [], userData);
147
165
  return {
148
166
  meetingId: submissionForThisDiscussion.meetingId || submissionForThisDiscussion.meetingID,
149
167
  extMeetingId: submissionForThisDiscussion.extMeetingId,
150
168
  creator: submissionForThisDiscussion.creator,
151
169
  meetingCreator: submissionForThisDiscussion.meetingCreator,
152
170
  conversation: submissionForThisDiscussion.conversation || [],
153
- meetingPrompt: discussion.meetingPrompt || submissionForThisDiscussion.meetingPrompt
171
+ meetingPrompt: discussion.meetingPrompt || submissionForThisDiscussion.meetingPrompt,
172
+ learnLang: learnLang,
173
+ joinedMembers: submissionForThisDiscussion.joinedMembers || [],
174
+ joinedMembersNames: joinedMembersWithNames
154
175
  };
155
176
  });
156
177
  if (conversationsToGrade.length > 0 && handleBatchGradeConversations) {
@@ -189,6 +210,7 @@ export default function GroupFeedbackDialog({
189
210
  selectedAttendee: studentId,
190
211
  selectedAttendeeName: student?.username || student?.createdByName,
191
212
  feedbackText: feedbackData[studentId]?.feedbackText || "",
213
+ levelPerformance: feedbackData[studentId]?.levelPerformance || "",
192
214
  gradingOption: "Individual Grade"
193
215
  };
194
216
  await handleCreateFeedback(values, recordingData);
@@ -205,12 +227,14 @@ export default function GroupFeedbackDialog({
205
227
  const meetingId = submission.meetingId || submission.meetingID;
206
228
  const userId = submission.userId || submission.selectedAttendee;
207
229
  const feedbackText = submission.feedbackText || "";
230
+ const levelPerformance = submission.levelPerformance || null;
208
231
  if (meetingId && userId) {
209
232
  if (!feedbackMap[meetingId]) {
210
233
  feedbackMap[meetingId] = {};
211
234
  }
212
235
  feedbackMap[meetingId][userId] = {
213
- feedbackText: feedbackText
236
+ feedbackText: feedbackText,
237
+ levelPerformance: levelPerformance
214
238
  };
215
239
  }
216
240
  });
@@ -863,7 +863,8 @@ function Listener({
863
863
  fullWidth: true,
864
864
  multiline: true,
865
865
  autoComplete: "off",
866
- characters: learnLangCharacters ? learnLangCharacters : null
866
+ characters: learnLangCharacters ? learnLangCharacters : null,
867
+ autoFocus: true
867
868
  })
868
869
  })
869
870
  }), isWordBankEnabled && /*#__PURE__*/_jsx(Grid, {
@@ -896,7 +896,8 @@ function Translator({
896
896
  multiline: true,
897
897
  fullWidth: true,
898
898
  autoComplete: "off",
899
- characters: forLangCharacters ? forLangCharacters : null
899
+ characters: forLangCharacters ? forLangCharacters : null,
900
+ autoFocus: true
900
901
  })]
901
902
  })
902
903
  }), isWordBankEnabled && /*#__PURE__*/_jsx(Grid, {
@@ -30,7 +30,8 @@ function AppContact({
30
30
  };
31
31
  const {
32
32
  email,
33
- message
33
+ message,
34
+ jobTitle
34
35
  } = values;
35
36
  const isGenerated = checkIsGeneratedEmail(authEmail);
36
37
  return /*#__PURE__*/_jsx("form", {
@@ -97,6 +98,23 @@ function AppContact({
97
98
  },
98
99
  required: true
99
100
  })
101
+ }), /*#__PURE__*/_jsx(Grid, {
102
+ size: 12,
103
+ children: /*#__PURE__*/_jsx(TextField, {
104
+ name: "jobTitle",
105
+ value: jobTitle || "",
106
+ onChange: handleChange,
107
+ autoComplete: "off",
108
+ tabIndex: -1,
109
+ sx: {
110
+ position: "absolute",
111
+ left: "-10000px",
112
+ top: "auto",
113
+ width: "1px",
114
+ height: "1px",
115
+ overflow: "hidden"
116
+ }
117
+ })
100
118
  }), /*#__PURE__*/_jsx(Grid, {
101
119
  size: 12,
102
120
  children: /*#__PURE__*/_jsx(Button, {
@@ -172,7 +172,7 @@ function InputHelper(props) {
172
172
  margin,
173
173
  inputRef,
174
174
  maxLength,
175
- autofocus,
175
+ autoFocus,
176
176
  learnLang
177
177
  } = props;
178
178
  const textInput = useRef(null);
@@ -214,7 +214,7 @@ function InputHelper(props) {
214
214
  startAdornment: adornmentPosition === "start" ? adornment : null,
215
215
  endAdornment: adornmentPosition === "end" ? adornment : null,
216
216
  inputRef: activeRef,
217
- autoFocus: autofocus,
217
+ autoFocus: autoFocus,
218
218
  inputProps: {
219
219
  maxLength
220
220
  },
@@ -226,7 +226,7 @@ function InputHelper(props) {
226
226
  endAdornment: adornmentPosition === "end" ? adornment : null,
227
227
  labelWidth: 150,
228
228
  inputRef: activeRef,
229
- autoFocus: autofocus,
229
+ autoFocus: autoFocus,
230
230
  inputProps: {
231
231
  maxLength
232
232
  },
@@ -409,7 +409,7 @@ function LiveListener({
409
409
  fullWidth: true,
410
410
  multiline: true,
411
411
  autoComplete: "off",
412
- autofocus: "true",
412
+ autoFocus: true,
413
413
  characters: learnLangCharacters ? learnLangCharacters : null
414
414
  })
415
415
  }), !isWordBankHidden && !isCreator && wordBankEnabled && keyboardEnabled && /*#__PURE__*/_jsx(Grid, {
@@ -609,7 +609,8 @@ function LiveTranslator({
609
609
  multiline: true,
610
610
  fullWidth: true,
611
611
  autoComplete: "off",
612
- characters: forLangCharacters ? forLangCharacters : null
612
+ characters: forLangCharacters ? forLangCharacters : null,
613
+ autoFocus: true
613
614
  })]
614
615
  }), !isWordBankHidden && wordBankEnabled && keyboardEnabled && /*#__PURE__*/_jsx(Grid, {
615
616
  children: /*#__PURE__*/_jsx(Tooltip, {
@@ -1,16 +1,15 @@
1
1
  import { useState } from "react";
2
2
  import { Box } from "@mui/material";
3
- import Nuala from "./Nuala1";
4
3
  import Nuala2 from "./Nuala2";
5
4
  import Nuala3 from "./Nuala3";
6
5
  import "./styles.css";
7
6
  import { jsx as _jsx } from "react/jsx-runtime";
8
7
  export default function NualaCreating() {
9
- // Create an array with the three components
10
- const images = [/*#__PURE__*/_jsx(Nuala, {}), /*#__PURE__*/_jsx(Nuala2, {}), /*#__PURE__*/_jsx(Nuala3, {})];
8
+ // Store the component references, not elements
9
+ const images = [Nuala2, Nuala3];
11
10
 
12
- // Use useState to pick a random image only once on mount
13
- const [randomImage] = useState(() => {
11
+ // Pick a random component on mount
12
+ const [RandomImage] = useState(() => {
14
13
  return images[Math.floor(Math.random() * images.length)];
15
14
  });
16
15
  return /*#__PURE__*/_jsx(Box, {
@@ -19,6 +18,6 @@ export default function NualaCreating() {
19
18
  marginLeft: "auto",
20
19
  marginRight: "auto"
21
20
  },
22
- children: randomImage
21
+ children: /*#__PURE__*/_jsx(RandomImage, {})
23
22
  });
24
23
  }
@@ -567,6 +567,11 @@ function Classroom({
567
567
  searchParams = new URLSearchParams(location.search);
568
568
  courseSectionTopicId = searchParams.get("courseSectionTopicId") || "";
569
569
  }
570
+ const removeCourseSectionTopicIdFromUrl = () => {
571
+ const url = new URL(window.location);
572
+ url.searchParams.delete('courseSectionTopicId');
573
+ window.history.replaceState({}, '', url);
574
+ };
570
575
  useEffect(() => {
571
576
  if (createLiveGame && isNualangLiveEnabled) {
572
577
  handleOpenSelectExercise();
@@ -1598,10 +1603,14 @@ function Classroom({
1598
1603
  t: t,
1599
1604
  stage: import.meta.env.REACT_APP_STAGE,
1600
1605
  imageLoading: imageLoading,
1601
- handleClose: () => setIsCreateMeetingDialogOpen(false),
1606
+ handleClose: () => {
1607
+ setIsCreateMeetingDialogOpen(false);
1608
+ removeCourseSectionTopicIdFromUrl();
1609
+ },
1602
1610
  handleSubmit: async props => {
1603
1611
  await formattedScheduleMeeting(props);
1604
1612
  setIsCreateMeetingDialogOpen(false);
1613
+ removeCourseSectionTopicIdFromUrl();
1605
1614
  },
1606
1615
  values: {
1607
1616
  members: classroomMembers,
@@ -35,7 +35,8 @@ const TableToolbar = ({
35
35
  reportTypes,
36
36
  setReportType,
37
37
  reportType,
38
- currentView
38
+ currentView,
39
+ memberId
39
40
  }) => {
40
41
  const {
41
42
  useQueryClient
@@ -94,7 +95,7 @@ const TableToolbar = ({
94
95
  },
95
96
  children: reportFilterOptions
96
97
  })
97
- }), reportType !== "discuss" && /*#__PURE__*/_jsx(Grid, {
98
+ }), reportType !== "discuss" && !memberId && /*#__PURE__*/_jsx(Grid, {
98
99
  mt: 0.5,
99
100
  mr: 1,
100
101
  children: /*#__PURE__*/_jsx(SelectMembers, {
@@ -105,7 +106,7 @@ const TableToolbar = ({
105
106
  })
106
107
  }), /*#__PURE__*/_jsx(Box, {
107
108
  flexGrow: 1
108
- }), reportType !== "discuss" && /*#__PURE__*/_jsx(Grid, {
109
+ }), reportType !== "discuss" && !memberId && /*#__PURE__*/_jsx(Grid, {
109
110
  children: /*#__PURE__*/_jsxs(Grid, {
110
111
  container: true,
111
112
  spacing: 1,
@@ -177,7 +178,8 @@ function Progress({
177
178
  const reportFilters = ["percentage_complete", "correct_answer_percentage", "avg_pronunciation_score"];
178
179
  const [filter, setFilter] = useState(reportFilters[0]);
179
180
  const reportTypes = isVideoChatEnabled ? ["courses", "assignments", "discuss"] : ["courses", "assignments"];
180
- const [reportType, setReportType] = useState(reportTypes[0]);
181
+ const availableReportTypes = memberId ? ["courses", "assignments"] : reportTypes;
182
+ const [reportType, setReportType] = useState(availableReportTypes[0]);
181
183
  useEffect(() => {
182
184
  if (selectedTopic) {
183
185
  setRoleplays(selectedTopic?.roleplays);
@@ -233,7 +235,7 @@ function Progress({
233
235
  useEffect(() => {
234
236
  if ("URLSearchParams" in window) {
235
237
  const searchParams = searchStringToObj(window.location.search);
236
- if (searchParams.reportType && searchParams.reportType !== reportTypes[0] && reportTypes.includes(searchParams.reportType) && reportType !== searchParams.reportType) {
238
+ if (searchParams.reportType && searchParams.reportType !== availableReportTypes[0] && availableReportTypes.includes(searchParams.reportType) && reportType !== searchParams.reportType) {
237
239
  setReportType(searchParams.reportType);
238
240
  }
239
241
  }
@@ -277,7 +279,7 @@ function Progress({
277
279
  useEffect(() => {
278
280
  if ("URLSearchParams" in window) {
279
281
  const searchParams = searchStringToObj(window.location.search);
280
- if (reportType && reportType !== reportTypes[0]) {
282
+ if (reportType && reportType !== availableReportTypes[0]) {
281
283
  searchParams["reportType"] = reportType;
282
284
  } else {
283
285
  delete searchParams["reportType"];
@@ -520,7 +522,7 @@ function Progress({
520
522
  }
521
523
  if (isSmallScreen) {
522
524
  return /*#__PURE__*/_jsxs(_Fragment, {
523
- children: [!memberId && /*#__PURE__*/_jsx(TableToolbar, {
525
+ children: [/*#__PURE__*/_jsx(TableToolbar, {
524
526
  t: t,
525
527
  members: members,
526
528
  selectedMembers: selectedMembers,
@@ -529,10 +531,11 @@ function Progress({
529
531
  reportFilters: reportFilters,
530
532
  filter: filter,
531
533
  setFilter: setFilter,
532
- reportTypes: reportTypes,
534
+ reportTypes: availableReportTypes,
533
535
  setReportType: setReportType,
534
536
  reportType: reportType,
535
- currentView: currentView
537
+ currentView: currentView,
538
+ memberId: memberId
536
539
  }), reportType === "discuss" ? /*#__PURE__*/_jsxs(Grid, {
537
540
  container: true,
538
541
  spacing: 2,
@@ -593,7 +596,7 @@ function Progress({
593
596
  });
594
597
  }
595
598
  return /*#__PURE__*/_jsxs(_Fragment, {
596
- children: [!memberId && /*#__PURE__*/_jsx(TableToolbar, {
599
+ children: [/*#__PURE__*/_jsx(TableToolbar, {
597
600
  t: t,
598
601
  members: members,
599
602
  selectedMembers: selectedMembers,
@@ -602,10 +605,11 @@ function Progress({
602
605
  reportFilters: reportFilters,
603
606
  filter: filter,
604
607
  setFilter: setFilter,
605
- reportTypes: reportTypes,
608
+ reportTypes: availableReportTypes,
606
609
  setReportType: setReportType,
607
610
  reportType: reportType,
608
- currentView: currentView
611
+ currentView: currentView,
612
+ memberId: memberId
609
613
  }), reportType === "discuss" ? /*#__PURE__*/_jsxs(Grid, {
610
614
  container: true,
611
615
  spacing: 2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nualang/nualang-ui-components",
3
- "version": "0.1.1327",
3
+ "version": "0.1.1329",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "files": [