@nualang/nualang-ui-components 0.1.1192 → 0.1.1194
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/Cards/Classroom/Classroom.js +1 -5
- package/dist/Cards/Course/Course.js +1 -5
- package/dist/Charts/Bar/TotalGrades/TotalGrades.js +7 -3
- package/dist/Dialogs/RecordingDialog/RecordingDialog.js +28 -2
- package/dist/Exercises/Pronouncer/Pronouncer.js +4 -6
- package/dist/Exercises/Roleplay/Games/FillInTheBlanksGame/FillInTheBlanksGame.js +6 -4
- package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGames.js +1 -1
- package/dist/Forms/CreateMeetingMultiStepForm/GroupAssignment.js +11 -8
- package/dist/Forms/InputHelper/InputHelper.js +64 -57
- package/dist/Lists/Members/Members.js +58 -4
- package/dist/Screens/Classrooms/ViewClassroom/ViewClassroom.js +6 -3
- package/dist/Tables/Progress/Progress.js +4 -2
- package/dist/Tables/Progress/ProgressTable.js +16 -4
- package/dist/Tables/RecordingListCards/RecordingListCards.js +3 -1
- package/dist/Tables/SubmissionsTableCards/SubmissionsTableCards.js +3 -1
- package/package.json +1 -1
|
@@ -69,11 +69,7 @@ function OverflowMenu({
|
|
|
69
69
|
onClick: leaveClassroom
|
|
70
70
|
}, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_ExitToApp.default, {
|
|
71
71
|
fontSize: "small"
|
|
72
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("leave_classroom")))
|
|
73
|
-
onClick: viewClassroom
|
|
74
|
-
}, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_Edit.default, {
|
|
75
|
-
fontSize: "small"
|
|
76
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("manage_classroom"))));
|
|
72
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("leave_classroom"))));
|
|
77
73
|
}
|
|
78
74
|
function ClassroomLoading() {
|
|
79
75
|
return /*#__PURE__*/_react.default.createElement(_CardElements.CardContainer, null, /*#__PURE__*/_react.default.createElement(_CardElements.CardTop, null, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
|
|
@@ -81,11 +81,7 @@ function OverflowMenu({
|
|
|
81
81
|
onClick: leaveCourse
|
|
82
82
|
}, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_ExitToApp.default, {
|
|
83
83
|
fontSize: "small"
|
|
84
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("leave_course"))), isCreator && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
85
|
-
onClick: viewCourse
|
|
86
|
-
}, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_Edit.default, {
|
|
87
|
-
fontSize: "small"
|
|
88
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("manage_course"))), handleDuplicateCourse && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
84
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("leave_course"))), isCreator && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, handleDuplicateCourse && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
89
85
|
onClick: async () => {
|
|
90
86
|
handleClose();
|
|
91
87
|
await handleDuplicateCourse(course);
|
|
@@ -37,13 +37,17 @@ function TotalGrades({
|
|
|
37
37
|
}]]);
|
|
38
38
|
recordings.forEach(recording => {
|
|
39
39
|
for (let i = 0; i <= 7; i++) {
|
|
40
|
-
|
|
40
|
+
const feedback = recording[`feedback${i}`];
|
|
41
|
+
if (feedback && feedback[0]) {
|
|
41
42
|
const {
|
|
42
43
|
feedbackLevelName,
|
|
43
44
|
methodCheck
|
|
44
|
-
} =
|
|
45
|
+
} = feedback[0];
|
|
45
46
|
if (feedbackLevelName && methodCheck) {
|
|
46
|
-
feedbackCounts.get(feedbackLevelName)
|
|
47
|
+
const feedbackLevel = feedbackCounts.get(feedbackLevelName);
|
|
48
|
+
if (feedbackLevel) {
|
|
49
|
+
feedbackLevel[methodCheck] += 1;
|
|
50
|
+
}
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
}
|
|
@@ -12,6 +12,8 @@ var _Grid = _interopRequireDefault(require("@mui/material/Grid"));
|
|
|
12
12
|
var _FeedbackDialog = _interopRequireDefault(require("../FeedbackDialog/FeedbackDialog"));
|
|
13
13
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
14
|
var _material = require("@mui/material");
|
|
15
|
+
var _Error = _interopRequireDefault(require("@mui/icons-material/Error"));
|
|
16
|
+
var _colors = require("@mui/material/colors");
|
|
15
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
18
|
/* eslint-disable react/prop-types */
|
|
17
19
|
|
|
@@ -92,13 +94,37 @@ function RecordingDialog({
|
|
|
92
94
|
playerRef,
|
|
93
95
|
conversation,
|
|
94
96
|
handleCreateFeedback,
|
|
95
|
-
attendeesData
|
|
97
|
+
attendeesData,
|
|
98
|
+
hasBadLanguage
|
|
96
99
|
}) {
|
|
97
100
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, attendeesData.length > 0 && /*#__PURE__*/_react.default.createElement(_ResponsiveDialog.default, {
|
|
98
101
|
open: open,
|
|
99
102
|
handleClose: handleClose,
|
|
100
103
|
maxWidth: 1,
|
|
101
|
-
dialogTitle:
|
|
104
|
+
dialogTitle: /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
105
|
+
sx: {
|
|
106
|
+
display: "flex",
|
|
107
|
+
alignItems: "center",
|
|
108
|
+
gap: 2
|
|
109
|
+
}
|
|
110
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("recording_info")), hasBadLanguage && /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
111
|
+
sx: {
|
|
112
|
+
display: "flex",
|
|
113
|
+
alignItems: "center",
|
|
114
|
+
px: 2,
|
|
115
|
+
py: 1,
|
|
116
|
+
backgroundColor: _colors.red[800],
|
|
117
|
+
borderRadius: "4px",
|
|
118
|
+
color: "white"
|
|
119
|
+
}
|
|
120
|
+
}, /*#__PURE__*/_react.default.createElement(_Error.default, {
|
|
121
|
+
sx: {
|
|
122
|
+
mr: 1
|
|
123
|
+
}
|
|
124
|
+
}), /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
125
|
+
fontWeight: "bold",
|
|
126
|
+
variant: "subtitle1"
|
|
127
|
+
}, t("inappropriate_language_detected"))))
|
|
102
128
|
}, /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
103
129
|
container: true,
|
|
104
130
|
spacing: 2
|
|
@@ -162,8 +162,7 @@ function Pronouncer({
|
|
|
162
162
|
uploadAudioAttempt,
|
|
163
163
|
languageTag,
|
|
164
164
|
trackRecommendedEvent,
|
|
165
|
-
parentClassroom
|
|
166
|
-
isHeritageSpeaker = false
|
|
165
|
+
parentClassroom
|
|
167
166
|
}) {
|
|
168
167
|
(0, _useExerciseDocumentTitle.default)({
|
|
169
168
|
exerciseTitle: "Pronunciation",
|
|
@@ -265,8 +264,7 @@ function Pronouncer({
|
|
|
265
264
|
indicateEndStream,
|
|
266
265
|
disableShuffle,
|
|
267
266
|
toggleMuteSound,
|
|
268
|
-
audioBlob
|
|
269
|
-
isHeritageSpeaker
|
|
267
|
+
audioBlob
|
|
270
268
|
});
|
|
271
269
|
const {
|
|
272
270
|
questions,
|
|
@@ -629,9 +627,9 @@ function Pronouncer({
|
|
|
629
627
|
wordList: currentPhrase ? (0, _utils.removeExtraWhiteSpaces)(currentPhrase.phrase).split(" ") : [],
|
|
630
628
|
disableTranslation: false,
|
|
631
629
|
isMessage: false,
|
|
632
|
-
muteSound:
|
|
630
|
+
muteSound: muteSound,
|
|
633
631
|
t: t
|
|
634
|
-
}), learnLang !== "irish" &&
|
|
632
|
+
}), learnLang !== "irish" && /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_WaveFormLite.default, {
|
|
635
633
|
src: pollyResult ? pollyResult : "",
|
|
636
634
|
controls: false,
|
|
637
635
|
isSpeaking: isSpeaking,
|
|
@@ -71,7 +71,8 @@ function RoleplayGame({
|
|
|
71
71
|
stopAudio,
|
|
72
72
|
languageInformation,
|
|
73
73
|
translationEnabled,
|
|
74
|
-
parentClassroom
|
|
74
|
+
parentClassroom,
|
|
75
|
+
isHeritageSpeaker = false
|
|
75
76
|
}) {
|
|
76
77
|
(0, _useExerciseDocumentTitle.default)({
|
|
77
78
|
exerciseTitle: "Fill in the blanks",
|
|
@@ -124,7 +125,8 @@ function RoleplayGame({
|
|
|
124
125
|
},
|
|
125
126
|
clearQueue,
|
|
126
127
|
stopAudio,
|
|
127
|
-
languageInformation
|
|
128
|
+
languageInformation,
|
|
129
|
+
isHeritageSpeaker
|
|
128
130
|
});
|
|
129
131
|
const {
|
|
130
132
|
muteSound,
|
|
@@ -264,7 +266,7 @@ function RoleplayGame({
|
|
|
264
266
|
handleOpenVoiceSpeedMenu: handleOpenVoiceSpeedMenu,
|
|
265
267
|
handleCloseVoiceSpeedMenu: handleCloseVoiceSpeedMenu,
|
|
266
268
|
handleChangeVoiceSpeed: handleChangeVoiceSpeed,
|
|
267
|
-
muteSound: muteSound,
|
|
269
|
+
muteSound: isHeritageSpeaker ? true : muteSound,
|
|
268
270
|
handleMute: handleMute,
|
|
269
271
|
isReportProblemOpen: isReportProblemOpen,
|
|
270
272
|
handleOpenReportProblem: handleOpenReportProblem,
|
|
@@ -301,7 +303,7 @@ function RoleplayGame({
|
|
|
301
303
|
gameId: gameId,
|
|
302
304
|
formatUnderscores: false,
|
|
303
305
|
hideBottomBar: true,
|
|
304
|
-
muteSound: muteSound
|
|
306
|
+
muteSound: isHeritageSpeaker ? true : muteSound
|
|
305
307
|
}), /*#__PURE__*/_react.default.createElement(_InProgressExercise.default, {
|
|
306
308
|
t: t,
|
|
307
309
|
open: isInProgressModalOpen,
|
|
@@ -34,7 +34,7 @@ function RoleplayGames({
|
|
|
34
34
|
sx: {
|
|
35
35
|
m: 2
|
|
36
36
|
}
|
|
37
|
-
}, t("choose_game_mode"))), gameList.map((game, index) => !gamesHidden[game.gameId] && !((game.gameId === "act-it-out-listening" || game.gameId === "act-it-out-listening-speaking") && isHeritageSpeaker) || isCreator ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
37
|
+
}, t("choose_game_mode"))), gameList.map((game, index) => !gamesHidden[game.gameId] && !((game.gameId === "act-it-out-listening" || game.gameId === "act-it-out-listening-speaking" || game.gameId === "act-it-out-speaking") && isHeritageSpeaker) || isCreator ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
38
38
|
item: true,
|
|
39
39
|
xs: 12,
|
|
40
40
|
key: index,
|
|
@@ -129,12 +129,13 @@ function GroupAssignment({
|
|
|
129
129
|
});
|
|
130
130
|
setArr(newArr);
|
|
131
131
|
};
|
|
132
|
-
const selectAll =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
all
|
|
136
|
-
}
|
|
137
|
-
|
|
132
|
+
const selectAll = isChecked => {
|
|
133
|
+
if (isChecked) {
|
|
134
|
+
const all = memberIds.map((_, index) => index);
|
|
135
|
+
setChecked(all);
|
|
136
|
+
} else {
|
|
137
|
+
setChecked([]);
|
|
138
|
+
}
|
|
138
139
|
};
|
|
139
140
|
(0, _react.useEffect)(() => {
|
|
140
141
|
if (initialGroups && initialGroups.length > 0) {
|
|
@@ -255,10 +256,12 @@ function GroupAssignment({
|
|
|
255
256
|
key: "select-all",
|
|
256
257
|
secondaryAction: /*#__PURE__*/_react.default.createElement(_FormControlLabel.default, {
|
|
257
258
|
control: /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
|
|
258
|
-
onChange:
|
|
259
|
+
onChange: e => selectAll(e.target.checked),
|
|
259
260
|
inputProps: {
|
|
260
261
|
"aria-labelledby": "select-all-box"
|
|
261
|
-
}
|
|
262
|
+
},
|
|
263
|
+
checked: checked.length === memberIds.length && memberIds.length > 0,
|
|
264
|
+
indeterminate: checked.length > 0 && checked.length < memberIds.length
|
|
262
265
|
}),
|
|
263
266
|
label: t("select_students_to_group"),
|
|
264
267
|
labelPlacement: "start",
|
|
@@ -33,7 +33,7 @@ function Adornment(props) {
|
|
|
33
33
|
const {
|
|
34
34
|
t = text => text,
|
|
35
35
|
onChange,
|
|
36
|
-
characters
|
|
36
|
+
characters,
|
|
37
37
|
emoji,
|
|
38
38
|
name,
|
|
39
39
|
value,
|
|
@@ -43,61 +43,50 @@ function Adornment(props) {
|
|
|
43
43
|
width = 90,
|
|
44
44
|
title = "accents_and_special_characters",
|
|
45
45
|
activeRef,
|
|
46
|
-
learnLang,
|
|
47
46
|
whiteIcon = false,
|
|
48
47
|
isDisabled,
|
|
49
|
-
isEditView
|
|
50
|
-
setIsDisabled,
|
|
51
|
-
setIsButtonClicked
|
|
48
|
+
isEditView
|
|
52
49
|
} = props;
|
|
53
50
|
const theme = (0, _styles.useTheme)();
|
|
54
|
-
const
|
|
55
|
-
const isSmallScreen = (0, _useMediaQuery.default)("(max-width:420px)");
|
|
56
|
-
const {
|
|
57
|
-
selectionStart
|
|
58
|
-
} = activeRef && activeRef.current ? activeRef.current : {};
|
|
59
|
-
const [anchorEl, setAnchorEl] = _react.default.useState(null);
|
|
60
|
-
const handleClick = event => {
|
|
61
|
-
setAnchorEl(event.currentTarget);
|
|
62
|
-
};
|
|
63
|
-
const handleClose = () => {
|
|
64
|
-
setAnchorEl(null);
|
|
65
|
-
};
|
|
66
|
-
const handleMouseDown = event => {
|
|
67
|
-
event.preventDefault();
|
|
68
|
-
};
|
|
51
|
+
const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
|
|
69
52
|
const [showEmojiPicker, setShowEmojiPicker] = (0, _react.useState)(false);
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
toggleEmojiPicker();
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
const handleClickOption = option => {
|
|
80
|
-
handleClose();
|
|
81
|
-
const newText = [value.slice(0, selectionStart), `${option}`, value.slice(selectionStart)].join("");
|
|
53
|
+
const handleClickAccents = event => setAnchorEl(event.currentTarget);
|
|
54
|
+
const handleCloseAccents = () => setAnchorEl(null);
|
|
55
|
+
const toggleEmojiPicker = () => setShowEmojiPicker(prev => !prev);
|
|
56
|
+
const handleEmojiClose = () => setShowEmojiPicker(false);
|
|
57
|
+
const onEmojiClick = event => {
|
|
58
|
+
const newText = [value.slice(0, activeRef.current.selectionStart), `${event.emoji}`, value.slice(activeRef.current.selectionStart)].join("");
|
|
82
59
|
onChange({
|
|
83
60
|
target: {
|
|
84
61
|
name: name,
|
|
85
62
|
value: newText
|
|
86
63
|
}
|
|
87
64
|
});
|
|
88
|
-
};
|
|
89
|
-
const handleEmojiClose = () => {
|
|
90
65
|
setShowEmojiPicker(false);
|
|
91
66
|
};
|
|
92
|
-
const
|
|
93
|
-
|
|
67
|
+
const handleClickOption = option => {
|
|
68
|
+
handleCloseAccents();
|
|
69
|
+
const newText = [value.slice(0, activeRef.current.selectionStart), `${option}`, value.slice(activeRef.current.selectionStart)].join("");
|
|
94
70
|
onChange({
|
|
95
71
|
target: {
|
|
96
72
|
name: name,
|
|
97
73
|
value: newText
|
|
98
74
|
}
|
|
99
75
|
});
|
|
100
|
-
|
|
76
|
+
};
|
|
77
|
+
const handleKeyDown = event => {
|
|
78
|
+
const {
|
|
79
|
+
key,
|
|
80
|
+
target
|
|
81
|
+
} = event;
|
|
82
|
+
if (key === "Enter" || key === " ") {
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
if (target.id === "emoji-button") {
|
|
85
|
+
toggleEmojiPicker();
|
|
86
|
+
} else if (target.id === "accents-button") {
|
|
87
|
+
handleClickAccents(event);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
101
90
|
};
|
|
102
91
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_InputAdornment.default, {
|
|
103
92
|
position: adornmentPosition
|
|
@@ -111,48 +100,49 @@ function Adornment(props) {
|
|
|
111
100
|
theme: theme.palette.mode === "dark" ? "dark" : "light",
|
|
112
101
|
onEmojiClick: onEmojiClick
|
|
113
102
|
})), /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
114
|
-
title:
|
|
115
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
103
|
+
title: t("insert_emoji")
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
105
|
+
id: "emoji-button",
|
|
116
106
|
edge: iconButtonEdge,
|
|
117
107
|
"aria-haspopup": "true",
|
|
108
|
+
"aria-label": "Emoji Picker",
|
|
118
109
|
onClick: toggleEmojiPicker,
|
|
110
|
+
onKeyDown: handleKeyDown,
|
|
119
111
|
size: "large",
|
|
120
|
-
"aria-label": "Emojis",
|
|
121
112
|
disabled: isDisabled && !isEditView,
|
|
122
|
-
|
|
123
|
-
onMouseDown: () => setIsButtonClicked(true),
|
|
124
|
-
sx: theme => ({
|
|
113
|
+
sx: {
|
|
125
114
|
padding: "8px",
|
|
126
115
|
...(whiteIcon && {
|
|
127
116
|
"& svg": {
|
|
128
117
|
fill: theme.palette.mode === "light" ? "white" : "inherit"
|
|
129
118
|
}
|
|
130
119
|
})
|
|
131
|
-
}
|
|
132
|
-
}, /*#__PURE__*/_react.default.createElement(_reactFeather.Smile, null))))
|
|
120
|
+
}
|
|
121
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFeather.Smile, null)))), characters && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
133
122
|
title: t(title)
|
|
134
123
|
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
135
|
-
|
|
136
|
-
onClick:
|
|
124
|
+
id: "accents-button",
|
|
125
|
+
onClick: handleClickAccents,
|
|
126
|
+
onKeyDown: handleKeyDown,
|
|
137
127
|
edge: iconButtonEdge,
|
|
138
128
|
"aria-haspopup": "true",
|
|
139
|
-
icon: icon,
|
|
140
129
|
"aria-expanded": Boolean(anchorEl),
|
|
130
|
+
"aria-label": title,
|
|
141
131
|
size: "large",
|
|
142
|
-
sx:
|
|
132
|
+
sx: {
|
|
143
133
|
padding: "8px",
|
|
144
134
|
...(whiteIcon && {
|
|
145
135
|
"& svg": {
|
|
146
136
|
fill: theme.palette.mode === "light" ? "white" : "inherit"
|
|
147
137
|
}
|
|
148
138
|
})
|
|
149
|
-
}
|
|
139
|
+
}
|
|
150
140
|
}, icon)), /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
151
|
-
id: `char-menu-${
|
|
141
|
+
id: `char-menu-${name}`,
|
|
152
142
|
anchorEl: anchorEl,
|
|
153
143
|
keepMounted: true,
|
|
154
144
|
open: Boolean(anchorEl),
|
|
155
|
-
onClose:
|
|
145
|
+
onClose: handleCloseAccents,
|
|
156
146
|
PaperProps: {
|
|
157
147
|
style: {
|
|
158
148
|
maxHeight: 48 * 4.5,
|
|
@@ -179,16 +169,30 @@ function InputHelper(props) {
|
|
|
179
169
|
learnLang
|
|
180
170
|
} = props;
|
|
181
171
|
const textInput = (0, _react.useRef)(null);
|
|
182
|
-
const activeRef = inputRef
|
|
172
|
+
const activeRef = inputRef || textInput;
|
|
183
173
|
const helperTextId = helperText && id ? `${id}-helper-text` : undefined;
|
|
184
174
|
const inputLabelId = label && id ? `${id}-label` : undefined;
|
|
175
|
+
const handleKeyDown = event => {
|
|
176
|
+
if ((event.key === "Enter" || event.key === " ") && adornmentPosition) {
|
|
177
|
+
const adornmentButton = document.getElementById(`${id}-adornment`);
|
|
178
|
+
if (adornmentButton) {
|
|
179
|
+
adornmentButton.click();
|
|
180
|
+
event.preventDefault();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
185
184
|
const adornment = characters ? /*#__PURE__*/_react.default.createElement(Adornment, _extends({}, props, {
|
|
186
185
|
activeRef: activeRef,
|
|
187
|
-
learnLang: learnLang
|
|
186
|
+
learnLang: learnLang,
|
|
187
|
+
id: `${id}-adornment`,
|
|
188
|
+
role: "button",
|
|
189
|
+
tabIndex: 0,
|
|
190
|
+
"aria-haspopup": "true",
|
|
191
|
+
onKeyDown: handleKeyDown
|
|
188
192
|
})) : null;
|
|
189
193
|
return /*#__PURE__*/_react.default.createElement(_FormControl.default, _extends({}, props, {
|
|
190
194
|
id: props.id ? `${props.id}FormControl` : undefined
|
|
191
|
-
}), /*#__PURE__*/_react.default.createElement(_InputLabel.default, {
|
|
195
|
+
}), label && /*#__PURE__*/_react.default.createElement(_InputLabel.default, {
|
|
192
196
|
htmlFor: id,
|
|
193
197
|
id: `${inputLabelId}${(0, _index.randomId)()}`,
|
|
194
198
|
sx: theme => ({
|
|
@@ -199,9 +203,11 @@ function InputHelper(props) {
|
|
|
199
203
|
startAdornment: adornmentPosition === "start" ? adornment : null,
|
|
200
204
|
endAdornment: adornmentPosition === "end" ? adornment : null,
|
|
201
205
|
inputRef: activeRef,
|
|
206
|
+
autoFocus: autofocus,
|
|
202
207
|
inputProps: {
|
|
203
208
|
maxLength
|
|
204
|
-
}
|
|
209
|
+
},
|
|
210
|
+
onKeyDown: handleKeyDown
|
|
205
211
|
})), variant === "outlined" && /*#__PURE__*/_react.default.createElement(_OutlinedInput.default, _extends({}, props, {
|
|
206
212
|
margin: margin === "normal" ? "none" : margin,
|
|
207
213
|
startAdornment: adornmentPosition === "start" ? adornment : null,
|
|
@@ -211,7 +217,8 @@ function InputHelper(props) {
|
|
|
211
217
|
autoFocus: autofocus,
|
|
212
218
|
inputProps: {
|
|
213
219
|
maxLength
|
|
214
|
-
}
|
|
220
|
+
},
|
|
221
|
+
onKeyDown: handleKeyDown
|
|
215
222
|
})), (variant === "standard" || variant !== "outlined" && variant !== "filled") && /*#__PURE__*/_react.default.createElement(_Input.default, _extends({}, props, {
|
|
216
223
|
startAdornment: adornmentPosition === "start" ? adornment : null,
|
|
217
224
|
endAdornment: adornmentPosition === "end" ? adornment : null,
|
|
@@ -15,9 +15,12 @@ var _Skeleton = _interopRequireDefault(require("@mui/material/Skeleton"));
|
|
|
15
15
|
var _Members = _interopRequireDefault(require("../../Misc/NotFound/Members"));
|
|
16
16
|
var _luxon = require("luxon");
|
|
17
17
|
var _useConfirm = _interopRequireDefault(require("../../hooks/useConfirm"));
|
|
18
|
+
var _styles = require("@mui/material/styles");
|
|
19
|
+
var _Tooltip = require("@mui/material/Tooltip");
|
|
18
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
21
24
|
const useStyles = (0, _mui.makeStyles)()(theme => ({
|
|
22
25
|
root: {
|
|
23
26
|
width: "100%",
|
|
@@ -87,6 +90,53 @@ function Member(props) {
|
|
|
87
90
|
width: "100%"
|
|
88
91
|
})));
|
|
89
92
|
}
|
|
93
|
+
const HtmlTooltip = (0, _styles.styled)(({
|
|
94
|
+
className,
|
|
95
|
+
...props
|
|
96
|
+
}) => /*#__PURE__*/_react.default.createElement(_material.Tooltip, _extends({}, props, {
|
|
97
|
+
classes: {
|
|
98
|
+
popper: className
|
|
99
|
+
},
|
|
100
|
+
title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
101
|
+
style: {
|
|
102
|
+
fontWeight: "bold",
|
|
103
|
+
marginBottom: "8px"
|
|
104
|
+
}
|
|
105
|
+
}, t("heritage_speaker")), /*#__PURE__*/_react.default.createElement("div", {
|
|
106
|
+
style: {
|
|
107
|
+
marginBottom: "8px"
|
|
108
|
+
}
|
|
109
|
+
}, t("heritage_speaker_desc")), /*#__PURE__*/_react.default.createElement("ul", {
|
|
110
|
+
style: {
|
|
111
|
+
marginLeft: "16px",
|
|
112
|
+
marginBottom: "8px",
|
|
113
|
+
paddingLeft: "0"
|
|
114
|
+
}
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement("li", null, t("heritage_speaker_point_1")), /*#__PURE__*/_react.default.createElement("li", null, t("heritage_speaker_point_2"))), /*#__PURE__*/_react.default.createElement("div", {
|
|
116
|
+
style: {
|
|
117
|
+
fontSize: "12px"
|
|
118
|
+
}
|
|
119
|
+
}, t("freely_changed")))
|
|
120
|
+
})))(({
|
|
121
|
+
theme
|
|
122
|
+
}) => ({
|
|
123
|
+
[`& .${_Tooltip.tooltipClasses.tooltip}`]: {
|
|
124
|
+
padding: theme.spacing(2),
|
|
125
|
+
backgroundColor: theme.palette.background.paper,
|
|
126
|
+
color: theme.palette.text.primary,
|
|
127
|
+
fontSize: theme.typography.pxToRem(12),
|
|
128
|
+
border: `1px solid ${theme.palette.divider}`
|
|
129
|
+
},
|
|
130
|
+
[`& ul`]: {
|
|
131
|
+
listStyleType: "disc",
|
|
132
|
+
paddingLeft: theme.spacing(2),
|
|
133
|
+
margin: 0
|
|
134
|
+
},
|
|
135
|
+
[`& li`]: {
|
|
136
|
+
display: "list-item",
|
|
137
|
+
marginBottom: theme.spacing(0.5)
|
|
138
|
+
}
|
|
139
|
+
}));
|
|
90
140
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.ListItem, {
|
|
91
141
|
ContainerComponent: "div",
|
|
92
142
|
secondaryAction: isCreator && handleDeleteClassroomMember && !isClassroomArchived ? /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
|
|
@@ -112,12 +162,14 @@ function Member(props) {
|
|
|
112
162
|
display: "flex",
|
|
113
163
|
alignItems: "center",
|
|
114
164
|
gap: "8px"
|
|
115
|
-
}, member.username, /*#__PURE__*/_react.default.createElement(
|
|
165
|
+
}, member.username, /*#__PURE__*/_react.default.createElement(HtmlTooltip, {
|
|
166
|
+
placement: "right"
|
|
167
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Chip, {
|
|
116
168
|
label: t("heritage_speaker"),
|
|
117
169
|
size: "small",
|
|
118
170
|
variant: "outlined",
|
|
119
171
|
color: "primary"
|
|
120
|
-
})) : member.username,
|
|
172
|
+
}))) : member.username,
|
|
121
173
|
secondary: `Joined ${_luxon.DateTime.fromMillis(member.createdAt).toRelative()}`
|
|
122
174
|
}), /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
123
175
|
className: classes.actionsWrapper
|
|
@@ -139,7 +191,9 @@ function Member(props) {
|
|
|
139
191
|
"aria-label": `Unmark as heritage speaker: ${member.username}`
|
|
140
192
|
}, /*#__PURE__*/_react.default.createElement(_material.ListItemText, {
|
|
141
193
|
primary: t("unmark_as_heritage_speaker")
|
|
142
|
-
})) : /*#__PURE__*/_react.default.createElement(
|
|
194
|
+
})) : /*#__PURE__*/_react.default.createElement(HtmlTooltip, {
|
|
195
|
+
placement: "right"
|
|
196
|
+
}, /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
143
197
|
onClick: () => {
|
|
144
198
|
handleUpdateClassroomMember(member.classroomId, member.memberId, {
|
|
145
199
|
isHeritageSpeaker: true
|
|
@@ -148,7 +202,7 @@ function Member(props) {
|
|
|
148
202
|
"aria-label": `Mark as heritage speaker: ${member.username}`
|
|
149
203
|
}, /*#__PURE__*/_react.default.createElement(_material.ListItemText, {
|
|
150
204
|
primary: t("mark_as_heritage_speaker")
|
|
151
|
-
}))), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
205
|
+
})))), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
152
206
|
onClick: deleteClassroomMember,
|
|
153
207
|
"aria-label": `Delete Member: ${member.username}`
|
|
154
208
|
}, /*#__PURE__*/_react.default.createElement(_material.ListItemText, {
|
|
@@ -380,7 +380,8 @@ function Classroom({
|
|
|
380
380
|
editBackgroundImages,
|
|
381
381
|
editMeetingImages,
|
|
382
382
|
setSelectedDiscussion,
|
|
383
|
-
meetingRecsData
|
|
383
|
+
meetingRecsData,
|
|
384
|
+
hasBadLanguage
|
|
384
385
|
} = vchatProps;
|
|
385
386
|
const isSmallScreen = (0, _useMediaQuery.default)("(max-width:410px)");
|
|
386
387
|
const {
|
|
@@ -792,7 +793,8 @@ function Classroom({
|
|
|
792
793
|
reportFilters: reportFilters,
|
|
793
794
|
filter: filter,
|
|
794
795
|
handleFilterChange: handleFilterChange,
|
|
795
|
-
submissions: submissionsTableData
|
|
796
|
+
submissions: submissionsTableData,
|
|
797
|
+
featureFlags: featureFlags
|
|
796
798
|
}))
|
|
797
799
|
}, ...(isVideoChatEnabled && isNualangLiveEnabled && (isMember && isVideoChatEnabledInSettings || isCreator) ? [{
|
|
798
800
|
label: t("discuss"),
|
|
@@ -853,7 +855,8 @@ function Classroom({
|
|
|
853
855
|
getRecordings: getRecordings,
|
|
854
856
|
selectedRecording: selectedRecording,
|
|
855
857
|
setSelectedRecording: setSelectedRecording,
|
|
856
|
-
meetingRecsData: meetingRecsData
|
|
858
|
+
meetingRecsData: meetingRecsData,
|
|
859
|
+
hasBadLanguage: hasBadLanguage
|
|
857
860
|
}))), discussions?.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
858
861
|
id: "discussScheduled"
|
|
859
862
|
}, /*#__PURE__*/_react.default.createElement(_ScheduleListCards.default, {
|
|
@@ -146,7 +146,8 @@ function Progress({
|
|
|
146
146
|
filter,
|
|
147
147
|
handleFilterChange,
|
|
148
148
|
submissions,
|
|
149
|
-
courseIds
|
|
149
|
+
courseIds,
|
|
150
|
+
featureFlags
|
|
150
151
|
}) {
|
|
151
152
|
const theme = (0, _styles.useTheme)();
|
|
152
153
|
const isSmallScreen = (0, _useMediaQuery.default)(theme.breakpoints.down("sm"));
|
|
@@ -476,7 +477,8 @@ function Progress({
|
|
|
476
477
|
filter: filter,
|
|
477
478
|
roleplays: roleplays,
|
|
478
479
|
bots: bots,
|
|
479
|
-
courseIds: courseIds
|
|
480
|
+
courseIds: courseIds,
|
|
481
|
+
featureFlags: featureFlags
|
|
480
482
|
}));
|
|
481
483
|
}
|
|
482
484
|
var _default = exports.default = Progress;
|
|
@@ -515,7 +515,8 @@ function TableRow({
|
|
|
515
515
|
roleplays,
|
|
516
516
|
bots,
|
|
517
517
|
index,
|
|
518
|
-
courseIds
|
|
518
|
+
courseIds,
|
|
519
|
+
featureFlags
|
|
519
520
|
}) {
|
|
520
521
|
const {
|
|
521
522
|
memberId
|
|
@@ -572,7 +573,16 @@ function TableRow({
|
|
|
572
573
|
sx: {
|
|
573
574
|
fontWeight: "bold"
|
|
574
575
|
}
|
|
575
|
-
}, member.
|
|
576
|
+
}, featureFlags.heritageSpeakers && member.isHeritageSpeaker ? /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
577
|
+
display: "flex",
|
|
578
|
+
alignItems: "center",
|
|
579
|
+
gap: "8px"
|
|
580
|
+
}, member.username, /*#__PURE__*/_react.default.createElement(_material.Chip, {
|
|
581
|
+
label: t("heritage_speaker"),
|
|
582
|
+
size: "small",
|
|
583
|
+
variant: "outlined",
|
|
584
|
+
color: "primary"
|
|
585
|
+
})) : member.username), /*#__PURE__*/_react.default.createElement(_DefaultColourButton.default, {
|
|
576
586
|
startIcon: /*#__PURE__*/_react.default.createElement(_Timeline.default, null),
|
|
577
587
|
size: "small",
|
|
578
588
|
component: _reactRouterDom.Link,
|
|
@@ -695,7 +705,8 @@ function ProgressTable({
|
|
|
695
705
|
hideSorting,
|
|
696
706
|
roleplays,
|
|
697
707
|
bots,
|
|
698
|
-
courseIds
|
|
708
|
+
courseIds,
|
|
709
|
+
featureFlags
|
|
699
710
|
}) {
|
|
700
711
|
const exercisesArray = ["translation", "listening", "pronunciation"];
|
|
701
712
|
const roleplayGames = ["story", "fill_in_blanks", "act_it_out", "act_it_out_listening", "act_it_out_speaking", "act_it_out_listening_speaking"];
|
|
@@ -1080,7 +1091,8 @@ function ProgressTable({
|
|
|
1080
1091
|
roleplays: roleplays,
|
|
1081
1092
|
bots: bots,
|
|
1082
1093
|
index: i,
|
|
1083
|
-
courseIds: courseIds
|
|
1094
|
+
courseIds: courseIds,
|
|
1095
|
+
featureFlags: featureFlags
|
|
1084
1096
|
})))));
|
|
1085
1097
|
}
|
|
1086
1098
|
var _default = exports.default = ProgressTable;
|
|
@@ -32,6 +32,7 @@ const RecordingListCards = (0, _mui.withStyles)(({
|
|
|
32
32
|
selectedRecording,
|
|
33
33
|
handleGradeConversation,
|
|
34
34
|
aiGrade,
|
|
35
|
+
hasBadLanguage,
|
|
35
36
|
t = text => text,
|
|
36
37
|
isTeacher = false,
|
|
37
38
|
attendeesData = []
|
|
@@ -109,7 +110,8 @@ const RecordingListCards = (0, _mui.withStyles)(({
|
|
|
109
110
|
getMeeting: getMeeting,
|
|
110
111
|
conversation: conversation,
|
|
111
112
|
handleGradeConversation: handleGradeConversation,
|
|
112
|
-
aiGrade: aiGrade
|
|
113
|
+
aiGrade: aiGrade,
|
|
114
|
+
hasBadLanguage: hasBadLanguage
|
|
113
115
|
}), /*#__PURE__*/_react.default.createElement(_FeedbackInfoDialog.default, {
|
|
114
116
|
t: t,
|
|
115
117
|
attendees: attendeeUsernames,
|
|
@@ -34,6 +34,7 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
|
|
|
34
34
|
saveTranscript = () => {},
|
|
35
35
|
getMeeting = () => {},
|
|
36
36
|
meetingRecsData,
|
|
37
|
+
hasBadLanguage,
|
|
37
38
|
resetVideoState = () => {},
|
|
38
39
|
t = text => text
|
|
39
40
|
}) => {
|
|
@@ -128,7 +129,8 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
|
|
|
128
129
|
recordingsTableData: groupedData[groupedId],
|
|
129
130
|
handleGradeConversation: handleGradeConversation,
|
|
130
131
|
aiGrade: aiGrade,
|
|
131
|
-
playerRef: playerRef
|
|
132
|
+
playerRef: playerRef,
|
|
133
|
+
hasBadLanguage: hasBadLanguage
|
|
132
134
|
}))), /*#__PURE__*/_react.default.createElement(_material.List, null, uniqueGroups.slice(0, cardsToShow).map((discussion, i) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Card, {
|
|
133
135
|
"aria-label": `View Created Recording: ${discussion}`,
|
|
134
136
|
key: i,
|