@nualang/nualang-ui-components 0.1.1136 → 0.1.1137

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/Chat/Chat.js CHANGED
@@ -93,7 +93,8 @@ function Chat({
93
93
  handleContinue,
94
94
  currentMessage,
95
95
  roleplayImage,
96
- siteLanguage
96
+ siteLanguage,
97
+ answerCounts
97
98
  }) {
98
99
  const {
99
100
  classes
@@ -153,7 +154,8 @@ function Chat({
153
154
  handleContinue: handleContinue,
154
155
  currentMessage: currentMessage,
155
156
  roleplayImage: roleplayImage,
156
- siteLanguage: siteLanguage
157
+ siteLanguage: siteLanguage,
158
+ answerCounts: answerCounts
157
159
  }), !hideBottomBar && !viewAttemptMode && /*#__PURE__*/_react.default.createElement(_BottomBar.default, {
158
160
  t: t,
159
161
  inputName: inputName,
@@ -81,7 +81,7 @@ const useStyles = (0, _mui.makeStyles)()((theme, {
81
81
  color: isMyMessage ? isHighlighted ? theme.palette.getContrastText(theme.palette.primary.main) : theme.palette.grey[400] : isHighlighted ? theme.palette.primary.main : theme.palette.grey[600]
82
82
  },
83
83
  "&:hover": {
84
- backgroundColor: isButton ? isMyMessage ? theme.palette.primary.dark : theme.palette.grey[100] : null,
84
+ backgroundColor: isButton ? isMyMessage ? theme.palette.primary.dark : theme.palette.grey[300] : null,
85
85
  borderColor: isButton ? theme.palette.primary.dark : null
86
86
  },
87
87
  "@media print": {
@@ -93,6 +93,42 @@ const useStyles = (0, _mui.makeStyles)()((theme, {
93
93
  boxShadow: "none"
94
94
  }
95
95
  },
96
+ bubbleEnlarge: {
97
+ display: "block",
98
+ backgroundColor: isMyMessage ? theme.palette.primary.main : theme.palette.common.white,
99
+ color: isMyMessage ? theme.palette.getContrastText(theme.palette.primary.main) : theme.palette.mode === "dark" ? theme.palette.primary.dark : theme.palette.primary.main,
100
+ padding: theme.spacing(1, 2),
101
+ borderRadius: theme.spacing(2),
102
+ boxShadow: theme.shadows[2],
103
+ minWidth: 150,
104
+ borderTopLeftRadius: 0,
105
+ borderStyle: "solid",
106
+ borderColor: theme.palette.primary.main,
107
+ borderWidth: "thin",
108
+ transition: isButton ? theme.transitions.create("background-color") : null,
109
+ "& img": {
110
+ paddingTop: theme.spacing(1),
111
+ paddingBottom: theme.spacing(1)
112
+ },
113
+ "& svg": {
114
+ marginTop: theme.spacing(1),
115
+ marginBottom: theme.spacing(1),
116
+ color: isMyMessage ? isHighlighted ? theme.palette.getContrastText(theme.palette.primary.main) : theme.palette.grey[400] : isHighlighted ? theme.palette.primary.main : theme.palette.grey[600]
117
+ },
118
+ "&:hover": {
119
+ boxShadow: isButton ? isMyMessage ? theme.palette.mode === "dark" ? `0px 4px 8px ${theme.palette.primary.main}` : `0px 4px 8px ${theme.palette.primary.dark}` : theme.palette.mode === "dark" ? `0px 4px 8px ${theme.palette.grey[700]}` : `0px 4px 8px ${theme.palette.grey[300]}` : null,
120
+ transform: "scale(1.1)",
121
+ transition: "transform 0.3s ease-in-out"
122
+ },
123
+ "@media print": {
124
+ "-webkit-print-color-adjust": "exact",
125
+ "-moz-print-color-adjust": "exact",
126
+ " -ms-print-color-adjust": "exact",
127
+ "print-color-adjust": "exact",
128
+ "page-break-inside": "avoid",
129
+ boxShadow: "none"
130
+ }
131
+ },
96
132
  additionalInfo: {
97
133
  display: "flex",
98
134
  marginTop: theme.spacing(1),
@@ -347,7 +383,7 @@ function Message({
347
383
  fontSize: "large"
348
384
  })), /*#__PURE__*/_react.default.createElement("div", null, isButton && /*#__PURE__*/_react.default.createElement(_ButtonBase.default, {
349
385
  focusRipple: true,
350
- className: classes.bubble,
386
+ className: classes.bubbleEnlarge,
351
387
  id: messageContainerId,
352
388
  "aria-label": `Option ${accessibilityIndex}`,
353
389
  onClick: () => onClickButton(text)
@@ -56,6 +56,7 @@ function Messages({
56
56
  currentMessage,
57
57
  roleplayImage,
58
58
  siteLanguage,
59
+ answerCounts,
59
60
  ...otherProps
60
61
  }) {
61
62
  const {
@@ -78,7 +79,7 @@ function Messages({
78
79
  }
79
80
  }, 0);
80
81
  }
81
- }, [disableScroll, messages.length, currentMessage]);
82
+ }, [disableScroll, messages.length, currentMessage, isTimeUp]);
82
83
  return /*#__PURE__*/_react.default.createElement("div", {
83
84
  id: "messages",
84
85
  className: classes.root,
@@ -160,7 +161,9 @@ function Messages({
160
161
  setIsAnswered: setIsAnswered,
161
162
  isAnswered: isAnswered,
162
163
  handleContinue: handleContinue,
163
- isCurrentMessage: isCurrentMessage
164
+ isCurrentMessage: isCurrentMessage,
165
+ answerCounts: answerCounts,
166
+ messages: messages
164
167
  }, m, otherProps)), !m?.question && !isLivePlayer && /*#__PURE__*/_react.default.createElement(_Message.default, _extends({
165
168
  languageTag: languageTag,
166
169
  t: t,
@@ -73,13 +73,18 @@ function Answers({
73
73
  setCurrentAnswer,
74
74
  setIsAnswered,
75
75
  isAnswered,
76
- handleContinue
76
+ handleContinue,
77
+ answerCounts,
78
+ messages,
79
+ messageIndex
77
80
  }) {
78
81
  const {
79
82
  classes
80
83
  } = useStyles();
81
- const [selected, setSelected] = _react.default.useState();
82
- const [answeredCorrectly, setAnsweredCorrectly] = _react.default.useState(handleEditQuestion ? true : false);
84
+ const [selected, setSelected] = (0, _react.useState)();
85
+ const [answeredCorrectly, setAnsweredCorrectly] = (0, _react.useState)(handleEditQuestion ? true : false);
86
+ const [totalVotes, setTotalVotes] = (0, _react.useState)(0);
87
+ const [isLoading, setIsLoading] = (0, _react.useState)(true);
83
88
  (0, _react.useEffect)(() => {
84
89
  if (isTimeUp && isLivePlayer) {
85
90
  handleContinue();
@@ -103,10 +108,62 @@ function Answers({
103
108
  }
104
109
  }
105
110
  };
106
- return showResults ? /*#__PURE__*/_react.default.createElement(_material.RadioGroup, {
111
+ (0, _react.useEffect)(() => {
112
+ if (showResults) {
113
+ setTotalVotes(Object.values(answerCounts).reduce((sum, count) => sum + count, 0));
114
+ setIsLoading(false);
115
+ }
116
+ }, [answerCounts, showResults]);
117
+ if (isLoading && showResults) {
118
+ return null;
119
+ }
120
+ return showResults ? messageIndex === messages.length - 1 ? /*#__PURE__*/_react.default.createElement(_material.RadioGroup, {
121
+ className: classes.list
122
+ }, answers.map((value, i) => {
123
+ const votes = answerCounts[value?.text] || 0;
124
+ const percent = totalVotes > 0 ? votes / totalVotes * 100 : 0;
125
+ return /*#__PURE__*/_react.default.createElement(_material.FormControlLabel, {
126
+ key: i,
127
+ label: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, value.text, /*#__PURE__*/_react.default.createElement(_material.Box, {
128
+ sx: {
129
+ mt: 0.5,
130
+ mb: 0.5
131
+ }
132
+ }, /*#__PURE__*/_react.default.createElement(_material.LinearProgress, {
133
+ variant: "determinate",
134
+ value: percent,
135
+ sx: {
136
+ height: 6,
137
+ width: 240
138
+ }
139
+ }), /*#__PURE__*/_react.default.createElement(_material.Typography, {
140
+ variant: "caption",
141
+ sx: {
142
+ mt: 0.5,
143
+ mb: 0.5
144
+ }
145
+ }, t(votes + ` vote${votes === 1 ? "" : "s"}`)))),
146
+ value: value.text,
147
+ control: /*#__PURE__*/_react.default.createElement(_material.Radio, {
148
+ color: "default",
149
+ icon: value.correct ? /*#__PURE__*/_react.default.createElement(_Check.default, {
150
+ className: classes.correct
151
+ }) : /*#__PURE__*/_react.default.createElement(_Cancel.default, {
152
+ className: classes.incorrect
153
+ }),
154
+ checkedIcon: value.correct ? /*#__PURE__*/_react.default.createElement(_Check.default, {
155
+ className: classes.correct
156
+ }) : /*#__PURE__*/_react.default.createElement(_Cancel.default, {
157
+ className: classes.incorrect
158
+ }),
159
+ checked: true
160
+ })
161
+ });
162
+ })) : /*#__PURE__*/_react.default.createElement(_material.RadioGroup, {
107
163
  className: classes.list
108
164
  }, answers.map((value, i) => {
109
165
  return /*#__PURE__*/_react.default.createElement(_material.FormControlLabel, {
166
+ key: i,
110
167
  label: value.text,
111
168
  value: value.text,
112
169
  control: /*#__PURE__*/_react.default.createElement(_material.Radio, {
@@ -147,6 +204,7 @@ function Answers({
147
204
  className: classes.list
148
205
  }, answers.map((value, i) => {
149
206
  return /*#__PURE__*/_react.default.createElement(_material.FormControlLabel, {
207
+ key: i,
150
208
  value: value.text,
151
209
  control: /*#__PURE__*/_react.default.createElement(_material.Radio, {
152
210
  color: "default",
@@ -212,7 +270,9 @@ function Question({
212
270
  setCurrentAnswer,
213
271
  setIsAnswered,
214
272
  isAnswered,
215
- handleContinue
273
+ handleContinue,
274
+ answerCounts,
275
+ messages
216
276
  }) {
217
277
  const {
218
278
  classes
@@ -297,7 +357,12 @@ function Question({
297
357
  onClick: handlePause,
298
358
  startIcon: isPaused ? /*#__PURE__*/_react.default.createElement(_PlayArrow.default, null) : /*#__PURE__*/_react.default.createElement(_Pause.default, null),
299
359
  size: "small"
300
- }, isPaused ? t("resume") : t("pause")))), isLiveGame && !isLivePlayer && isTimeUp && /*#__PURE__*/_react.default.createElement(Answers, {
360
+ }, isPaused ? t("resume") : t("pause")))), isLiveGame && !isLivePlayer && isTimeUp && /*#__PURE__*/_react.default.createElement(_material.Box, {
361
+ sx: {
362
+ marginLeft: "auto",
363
+ marginRight: "auto"
364
+ }
365
+ }, /*#__PURE__*/_react.default.createElement(Answers, {
301
366
  t: t,
302
367
  question: question,
303
368
  answers: answers,
@@ -305,8 +370,11 @@ function Question({
305
370
  handleIncorrectQuestionAnswer: handleIncorrectQuestionAnswer,
306
371
  handleEditQuestion: handleEditQuestion,
307
372
  answerAttempts: answerAttempts,
308
- showResults: true
309
- })), /*#__PURE__*/_react.default.createElement("div", {
373
+ showResults: true,
374
+ answerCounts: answerCounts,
375
+ messages: messages,
376
+ messageIndex: messageIndex
377
+ }))), /*#__PURE__*/_react.default.createElement("div", {
310
378
  className: classes.actions
311
379
  }, moveScriptItem && /*#__PURE__*/_react.default.createElement(_material.ButtonGroup, {
312
380
  color: "inherit",
@@ -9,16 +9,69 @@ var _Question = _interopRequireDefault(require("./Question"));
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
10
  const Template = args => /*#__PURE__*/_react.default.createElement(_Question.default, args);
11
11
  const props = exports.props = {
12
- question: "Question ?",
12
+ answerCounts: {
13
+ "answer 1": 0,
14
+ "answer 2": 7,
15
+ "answer 3": 1
16
+ },
17
+ isLiveGame: true,
18
+ messageIndex: 1,
19
+ messages: [{
20
+ text: "This is a question",
21
+ question: "What is the answer to the Question?",
22
+ answers: [{
23
+ text: "answer 1",
24
+ correct: false,
25
+ percent: 30,
26
+ votes: 0
27
+ }, {
28
+ text: "answer 2",
29
+ correct: true,
30
+ percent: 70,
31
+ votes: 7
32
+ }, {
33
+ text: "answer 3",
34
+ correct: false,
35
+ percent: 0,
36
+ votes: 1
37
+ }]
38
+ }, {
39
+ text: "This is a question",
40
+ question: "What is the answer to the Question?",
41
+ answers: [{
42
+ text: "answer 1",
43
+ correct: false,
44
+ percent: 30,
45
+ votes: 0
46
+ }, {
47
+ text: "answer 2",
48
+ correct: true,
49
+ percent: 70,
50
+ votes: 7
51
+ }, {
52
+ text: "answer 3",
53
+ correct: false,
54
+ percent: 0,
55
+ votes: 1
56
+ }]
57
+ }],
58
+ isTimeUp: true,
59
+ question: "What is the answer to the Question?",
13
60
  answers: [{
14
61
  text: "answer 1",
15
- correct: false
62
+ correct: false,
63
+ percent: 33,
64
+ votes: 3
16
65
  }, {
17
66
  text: "answer 2",
18
- correct: true
67
+ correct: true,
68
+ percent: 66,
69
+ votes: 6
19
70
  }, {
20
71
  text: "answer 3",
21
- correct: false
72
+ correct: false,
73
+ percent: 0,
74
+ votes: 0
22
75
  }]
23
76
  };
24
77
  const story = {
@@ -506,7 +506,8 @@ function Topic({
506
506
  value: completion.percentage
507
507
  }))), /*#__PURE__*/_react.default.createElement(_material.Box, {
508
508
  ml: 1,
509
- fontSize: 14
509
+ fontSize: 14,
510
+ minWidth: 35
510
511
  }, completion && completion.percentage ? completion.percentage.toFixed(0) : 0, "%")))
511
512
  })), /*#__PURE__*/_react.default.createElement(_material.ListItemSecondaryAction, null, isMember && !isCreator && showViewTopicButton && /*#__PURE__*/_react.default.createElement(_material.IconButton, {
512
513
  onClick: handleClick,
@@ -144,6 +144,7 @@ function Game({
144
144
  gameAward,
145
145
  handleTranslate,
146
146
  userImage,
147
+ answerCounts,
147
148
  ...otherProps
148
149
  }) {
149
150
  const {
@@ -455,7 +456,8 @@ function Game({
455
456
  getNualaCelebratingImage: getNualaCelebratingImage,
456
457
  nextScriptLine: nextScriptLine,
457
458
  handleTranslate: handleTranslate,
458
- isFinalScoreDrawerOpen: isFinalScoreDrawerOpen
459
+ isFinalScoreDrawerOpen: isFinalScoreDrawerOpen,
460
+ answerCounts: answerCounts
459
461
  }, otherProps));
460
462
  }
461
463
  })(), gameView === GameViewTypes.Leaderboard && /*#__PURE__*/_react.default.createElement(_material.Box, {
@@ -72,7 +72,8 @@ function LiveStory({
72
72
  isStudentAnswerDrawerOpen,
73
73
  setIsStudentAnswerDrawerOpen,
74
74
  roleplayAnswer,
75
- setRoleplayAnswer
75
+ setRoleplayAnswer,
76
+ answerCounts
76
77
  }) {
77
78
  const {
78
79
  classes
@@ -220,7 +221,8 @@ function LiveStory({
220
221
  isAnswered: isAnswered,
221
222
  handleContinue: handleContinue,
222
223
  currentMessage: currentMessage,
223
- roleplayImage: roleplay.picture
224
+ roleplayImage: roleplay.picture,
225
+ answerCounts: answerCounts
224
226
  })), /*#__PURE__*/_react.default.createElement(_AnswerResult.default, _extends({
225
227
  t: t,
226
228
  open: isCorrectResultOpen
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nualang/nualang-ui-components",
3
- "version": "0.1.1136",
3
+ "version": "0.1.1137",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist",