@nualang/nualang-ui-components 0.1.1167 → 0.1.1168

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.
@@ -18,17 +18,16 @@ var _RecordVoiceOver = _interopRequireDefault(require("@mui/icons-material/Recor
18
18
  var _VoiceOverOff = _interopRequireDefault(require("@mui/icons-material/VoiceOverOff"));
19
19
  var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
20
20
  var _Create = _interopRequireDefault(require("@mui/icons-material/Create"));
21
- var _ArrowUpward = _interopRequireDefault(require("@mui/icons-material/ArrowUpward"));
22
- var _ArrowDownward = _interopRequireDefault(require("@mui/icons-material/ArrowDownward"));
23
21
  var _Button = _interopRequireDefault(require("@mui/material/Button"));
24
- var _ButtonGroup = _interopRequireDefault(require("@mui/material/ButtonGroup"));
25
22
  var _HoverText = _interopRequireDefault(require("../../../Misc/HoverText/HoverText"));
26
23
  var _VoiceMessage = _interopRequireDefault(require("../../VoiceMessage"));
27
24
  var _material = require("@mui/material");
28
25
  var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
26
+ var _DragIndicator = _interopRequireDefault(require("@mui/icons-material/DragIndicator"));
29
27
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
30
28
  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); }
31
29
  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; }
30
+ 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); }
32
31
  const useStyles = (0, _mui.makeStyles)()((theme, {
33
32
  isMyMessage,
34
33
  isButton,
@@ -44,7 +43,8 @@ const useStyles = (0, _mui.makeStyles)()((theme, {
44
43
  },
45
44
  message: {
46
45
  display: "flex",
47
- maxWidth: 500
46
+ maxWidth: 500,
47
+ gap: "3px"
48
48
  },
49
49
  avatar: {
50
50
  [theme.breakpoints.down("md")]: {
@@ -297,7 +297,8 @@ function Message({
297
297
  accessibilityText,
298
298
  accessibilityIndex,
299
299
  isLivePlayer = false,
300
- siteLanguage
300
+ siteLanguage,
301
+ provided
301
302
  }) {
302
303
  const theme = (0, _styles.useTheme)();
303
304
  const messageContainerId = `message${messageIndex}`;
@@ -413,8 +414,13 @@ function Message({
413
414
  languageTag: languageTag
414
415
  }), isListenOnly && /*#__PURE__*/_react.default.createElement(WaveformImage, null)), !isButton && /*#__PURE__*/_react.default.createElement("div", {
415
416
  className: classes.bubble,
416
- id: messageContainerId
417
- }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
417
+ id: messageContainerId,
418
+ style: {
419
+ display: "flex",
420
+ alignItems: "center",
421
+ justifyContent: "space-between"
422
+ }
423
+ }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
418
424
  variant: "subtitle2",
419
425
  component: "h4",
420
426
  gutterBottom: true,
@@ -470,7 +476,7 @@ function Message({
470
476
  label: /*#__PURE__*/_react.default.createElement(_Typography.default, {
471
477
  variant: "body2"
472
478
  }, t("save_recording_to_report"))
473
- })))), /*#__PURE__*/_react.default.createElement("div", {
479
+ }))))), /*#__PURE__*/_react.default.createElement("div", {
474
480
  className: classes.additionalInfo
475
481
  }, !isLivePlayer && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, isCurrentMessagePlaying ? /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
476
482
  title: t("stop_speaking")
@@ -532,18 +538,7 @@ function Message({
532
538
  className: classes.visuallyHidden
533
539
  }, liveMessage))), /*#__PURE__*/_react.default.createElement("div", {
534
540
  className: classes.actions
535
- }, moveScriptItem && /*#__PURE__*/_react.default.createElement(_ButtonGroup.default, {
536
- color: "inherit",
537
- size: "small",
538
- className: classes.button,
539
- fullWidth: true
540
- }, /*#__PURE__*/_react.default.createElement(_Button.default, {
541
- onClick: () => moveScriptItem(messageIndex, messageIndex - 1),
542
- disabled: messageIndex < 1
543
- }, /*#__PURE__*/_react.default.createElement(_ArrowUpward.default, null)), /*#__PURE__*/_react.default.createElement(_Button.default, {
544
- onClick: () => moveScriptItem(messageIndex, messageIndex + 1),
545
- disabled: messageIndex + 1 === messageCount
546
- }, /*#__PURE__*/_react.default.createElement(_ArrowDownward.default, null))), handleEditMessage && /*#__PURE__*/_react.default.createElement(_Button.default, {
541
+ }, handleEditMessage && /*#__PURE__*/_react.default.createElement(_Button.default, {
547
542
  variant: "outlined",
548
543
  className: classes.button,
549
544
  disabled: !handleEditMessage,
@@ -559,5 +554,14 @@ function Message({
559
554
  size: "small",
560
555
  startIcon: /*#__PURE__*/_react.default.createElement(_Delete.default, null),
561
556
  color: "inherit"
562
- }, t("remove"))))));
557
+ }, t("remove")))), /*#__PURE__*/_react.default.createElement("div", null, moveScriptItem && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
558
+ title: t("move_message"),
559
+ enterDelay: 300
560
+ }, /*#__PURE__*/_react.default.createElement(_IconButton.default, _extends({
561
+ size: "large",
562
+ "aria-label": "Drag Message",
563
+ sx: {
564
+ cursor: "grab"
565
+ }
566
+ }, provided ? provided.dragHandleProps : {}), /*#__PURE__*/_react.default.createElement(_DragIndicator.default, null))))));
563
567
  }
@@ -10,6 +10,7 @@ var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
10
  var _Message = _interopRequireDefault(require("./Message"));
11
11
  var _Question = _interopRequireDefault(require("./Question"));
12
12
  var _material = require("@mui/material");
13
+ var _reactBeautifulDnd = require("react-beautiful-dnd");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  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); }
15
16
  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; }
@@ -57,6 +58,7 @@ function Messages({
57
58
  roleplayImage,
58
59
  siteLanguage,
59
60
  answerCounts,
61
+ moveScriptItem,
60
62
  ...otherProps
61
63
  }) {
62
64
  const {
@@ -80,6 +82,9 @@ function Messages({
80
82
  }, 0);
81
83
  }
82
84
  }, [disableScroll, messages.length, currentMessage, isTimeUp]);
85
+ const onDragEnd = result => {
86
+ result.destination && moveScriptItem(result.source.index, result.destination.index);
87
+ };
83
88
  return /*#__PURE__*/_react.default.createElement("div", {
84
89
  id: "messages",
85
90
  className: classes.root,
@@ -90,7 +95,13 @@ function Messages({
90
95
  maxWidth: 800,
91
96
  mx: "auto"
92
97
  }
93
- }, isLiveGame && isLivePlayer && /*#__PURE__*/_react.default.createElement(_Box.default, {
98
+ }, /*#__PURE__*/_react.default.createElement(_reactBeautifulDnd.DragDropContext, {
99
+ onDragEnd: onDragEnd
100
+ }, /*#__PURE__*/_react.default.createElement(_reactBeautifulDnd.Droppable, {
101
+ droppableId: "droppableMessages"
102
+ }, provided => /*#__PURE__*/_react.default.createElement("div", _extends({}, provided.droppableProps, {
103
+ ref: provided.innerRef
104
+ }), isLiveGame && isLivePlayer && /*#__PURE__*/_react.default.createElement(_Box.default, {
94
105
  sx: {
95
106
  display: "flex",
96
107
  flexDirection: "column"
@@ -121,13 +132,45 @@ function Messages({
121
132
  sx: {
122
133
  pb: 5
123
134
  }
124
- }, t("story_description")), messages.map((m, i) => {
125
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isLivePlayer && !m.question && /*#__PURE__*/_react.default.createElement(_Message.default, _extends({
135
+ }, t("story_description"))), messages.map((m, i) => {
136
+ let isCurrentMessage = m === currentMessage;
137
+ return moveScriptItem ? /*#__PURE__*/_react.default.createElement(_reactBeautifulDnd.Draggable, {
138
+ key: i,
139
+ draggableId: `message-${i}`,
140
+ index: i
141
+ }, (provided, snapshot) => /*#__PURE__*/_react.default.createElement("div", _extends({
142
+ ref: provided.innerRef
143
+ }, provided.draggableProps, {
144
+ style: {
145
+ ...provided.draggableProps.style,
146
+ opacity: snapshot.isDragging ? 0.8 : 1
147
+ }
148
+ }), m?.question && !isLivePlayer ? /*#__PURE__*/_react.default.createElement(_Question.default, _extends({
149
+ t: t,
126
150
  languageTag: languageTag,
151
+ key: `messx_${i}`,
152
+ messageIndex: i,
153
+ messageCount: messages.length,
154
+ answerAttempts: answerAttempts,
155
+ isLiveGame: isLiveGame,
156
+ isLivePlayer: isLivePlayer,
157
+ isTimeUp: isCurrentMessage ? isTimeUp : true,
158
+ time: time,
159
+ handleTimeUp: handleTimeUp,
160
+ setCurrentAnswer: setCurrentAnswer,
161
+ setIsAnswered: setIsAnswered,
162
+ isAnswered: isAnswered,
163
+ handleContinue: handleContinue,
164
+ isCurrentMessage: isCurrentMessage,
165
+ answerCounts: answerCounts,
166
+ messages: messages,
167
+ moveScriptItem: moveScriptItem,
168
+ provided: provided
169
+ }, m, otherProps)) : /*#__PURE__*/_react.default.createElement(_Message.default, _extends({
127
170
  t: t,
171
+ languageTag: languageTag,
128
172
  key: `messy_${i}`,
129
173
  disableTranslation: disableTranslation,
130
- disableHover: disableHover,
131
174
  messageIndex: i,
132
175
  voiceSpeed: voiceSpeed,
133
176
  messageCount: messages.length,
@@ -142,11 +185,10 @@ function Messages({
142
185
  gameId: gameId,
143
186
  speak: speak,
144
187
  isLivePlayer: isLivePlayer,
145
- siteLanguage: siteLanguage
146
- }, m, otherProps)));
147
- })), messages.map((m, i) => {
148
- let isCurrentMessage = m === currentMessage;
149
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, m?.question && !isLivePlayer && /*#__PURE__*/_react.default.createElement(_Question.default, _extends({
188
+ siteLanguage: siteLanguage,
189
+ moveScriptItem: moveScriptItem,
190
+ provided: provided
191
+ }, m, otherProps)))) : /*#__PURE__*/_react.default.createElement("div", null, m?.question && !isLivePlayer ? /*#__PURE__*/_react.default.createElement(_Question.default, _extends({
150
192
  languageTag: languageTag,
151
193
  key: `messx_${i}`,
152
194
  messageIndex: i,
@@ -164,9 +206,8 @@ function Messages({
164
206
  isCurrentMessage: isCurrentMessage,
165
207
  answerCounts: answerCounts,
166
208
  messages: messages
167
- }, m, otherProps)), !m?.question && !isLivePlayer && /*#__PURE__*/_react.default.createElement(_Message.default, _extends({
209
+ }, m, otherProps)) : /*#__PURE__*/_react.default.createElement(_Message.default, _extends({
168
210
  languageTag: languageTag,
169
- t: t,
170
211
  key: `messy_${i}`,
171
212
  disableTranslation: disableTranslation,
172
213
  messageIndex: i,
@@ -185,6 +226,6 @@ function Messages({
185
226
  isLivePlayer: isLivePlayer,
186
227
  siteLanguage: siteLanguage
187
228
  }, m, otherProps)));
188
- })), afterElements);
229
+ }), provided.placeholder)))), afterElements);
189
230
  }
190
231
  var _default = exports.default = /*#__PURE__*/_react.default.memo(Messages);
@@ -11,17 +11,17 @@ var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
11
11
  var _Cancel = _interopRequireDefault(require("@mui/icons-material/Cancel"));
12
12
  var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
13
13
  var _Create = _interopRequireDefault(require("@mui/icons-material/Create"));
14
- var _ArrowUpward = _interopRequireDefault(require("@mui/icons-material/ArrowUpward"));
15
- var _ArrowDownward = _interopRequireDefault(require("@mui/icons-material/ArrowDownward"));
16
14
  var _Circle = _interopRequireDefault(require("@mui/icons-material/Circle"));
17
15
  var _reactCountdownCircleTimer = require("react-countdown-circle-timer");
18
16
  var _styles = require("@mui/material/styles");
19
17
  var _material = require("@mui/material");
20
18
  var _PlayArrow = _interopRequireDefault(require("@mui/icons-material/PlayArrow"));
21
19
  var _Pause = _interopRequireDefault(require("@mui/icons-material/Pause"));
20
+ var _DragIndicator = _interopRequireDefault(require("@mui/icons-material/DragIndicator"));
22
21
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
22
  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); }
24
23
  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; }
24
+ 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); }
25
25
  // utils
26
26
  // import { shuffle } from "../../../utils/index";
27
27
 
@@ -272,7 +272,8 @@ function Question({
272
272
  isAnswered,
273
273
  handleContinue,
274
274
  answerCounts,
275
- messages
275
+ messages,
276
+ provided
276
277
  }) {
277
278
  const {
278
279
  classes
@@ -300,6 +301,11 @@ function Question({
300
301
  className: classes.root
301
302
  }, /*#__PURE__*/_react.default.createElement("div", {
302
303
  className: classes.question
304
+ }, /*#__PURE__*/_react.default.createElement("div", {
305
+ style: {
306
+ display: "flex",
307
+ alignItems: "center"
308
+ }
303
309
  }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
304
310
  container: true,
305
311
  justifyContent: "center",
@@ -374,20 +380,18 @@ function Question({
374
380
  answerCounts: answerCounts,
375
381
  messages: messages,
376
382
  messageIndex: messageIndex
377
- }))), /*#__PURE__*/_react.default.createElement("div", {
383
+ }))), moveScriptItem && /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
384
+ title: t("move_question"),
385
+ enterDelay: 300
386
+ }, /*#__PURE__*/_react.default.createElement(_material.IconButton, _extends({
387
+ size: "large",
388
+ "aria-label": "Drag Message",
389
+ sx: {
390
+ cursor: "grab"
391
+ }
392
+ }, provided ? provided.dragHandleProps : {}), /*#__PURE__*/_react.default.createElement(_DragIndicator.default, null)))), /*#__PURE__*/_react.default.createElement("div", {
378
393
  className: classes.actions
379
- }, moveScriptItem && /*#__PURE__*/_react.default.createElement(_material.ButtonGroup, {
380
- color: "inherit",
381
- size: "small",
382
- className: classes.button,
383
- fullWidth: true
384
- }, /*#__PURE__*/_react.default.createElement(_material.Button, {
385
- onClick: () => moveScriptItem(messageIndex, messageIndex - 1),
386
- disabled: messageIndex < 1
387
- }, /*#__PURE__*/_react.default.createElement(_ArrowUpward.default, null)), /*#__PURE__*/_react.default.createElement(_material.Button, {
388
- onClick: () => moveScriptItem(messageIndex, messageIndex + 1),
389
- disabled: messageIndex + 1 === messageCount
390
- }, /*#__PURE__*/_react.default.createElement(_ArrowDownward.default, null))), handleEditQuestion && /*#__PURE__*/_react.default.createElement(_material.Button, {
394
+ }, handleEditQuestion && /*#__PURE__*/_react.default.createElement(_material.Button, {
391
395
  onClick: () => handleEditQuestion(messageIndex),
392
396
  variant: "outlined",
393
397
  className: classes.button,
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactRouterDom = require("react-router-dom");
9
- var _Hidden = _interopRequireDefault(require("@mui/material/Hidden"));
10
- var _Button = _interopRequireDefault(require("@mui/material/Button"));
11
9
  var _DefaultColourButton = _interopRequireDefault(require("../../Misc/DefaultColourButton/DefaultColourButton"));
12
10
  var _styles = require("@mui/material/styles");
13
11
  var _mui = require("tss-react/mui");
@@ -21,7 +19,12 @@ var _WhatsNew = _interopRequireDefault(require("../../Misc/WhatsNew/WhatsNew"));
21
19
  var _ThemeToggle = _interopRequireDefault(require("../../Misc/ThemeToggle"));
22
20
  var _SignOut = _interopRequireDefault(require("../../Misc/SignOut"));
23
21
  var _Snackbar = _interopRequireDefault(require("../../Misc/Snackbar"));
22
+ var _School = _interopRequireDefault(require("@mui/icons-material/School"));
23
+ var _BubbleChart = _interopRequireDefault(require("@mui/icons-material/BubbleChart"));
24
+ var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
25
+ var _UpgradeSubscription = _interopRequireDefault(require("../../Dialogs/UpgradeSubscription/UpgradeSubscription"));
24
26
  var _nav = _interopRequireDefault(require("../../Navigation/_nav"));
27
+ var _material = require("@mui/material");
25
28
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
29
  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); }
27
30
  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; }
@@ -85,6 +88,17 @@ function App({
85
88
  const isLgScreen = (0, _useMediaQuery.default)(theme.breakpoints.up("md"));
86
89
  const [hideSkipNavigation, setHideSkipNavigation] = (0, _react.useState)(true);
87
90
  const [isAppContainerLoading, setIsAppContainerLoading] = (0, _react.useState)(true);
91
+ const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
92
+ const [isUpgradeSubscriptionOpen, setIsUpgradeSubscriptionOpen] = (0, _react.useState)(false);
93
+ const handleOpenUpgradeSubscriptionModal = () => {
94
+ setIsUpgradeSubscriptionOpen(true);
95
+ };
96
+ const handleCloseUpgradeSubcriptionModal = () => {
97
+ setIsUpgradeSubscriptionOpen(false);
98
+ };
99
+ const handleSubscriptionPage = () => {
100
+ window.open(upgradePlanURL, "_blank");
101
+ };
88
102
  const {
89
103
  classes
90
104
  } = useStyles({
@@ -92,6 +106,8 @@ function App({
92
106
  isLgScreen,
93
107
  isAppContainerLoading
94
108
  });
109
+ const isCreateMenuOpen = Boolean(anchorEl);
110
+ const navigate = (0, _reactRouterDom.useNavigate)();
95
111
  (0, _react.useEffect)(() => {
96
112
  const isSidebarCollapsed = localStorage.getItem("nualang-is-sidebar-collapsed");
97
113
  if (isSidebarCollapsed && isSidebarCollapsed === "true") {
@@ -104,6 +120,24 @@ function App({
104
120
  setIsCollapsed(newVal);
105
121
  localStorage.setItem("nualang-is-sidebar-collapsed", newVal.toString());
106
122
  };
123
+ const handleClickCreate = event => {
124
+ setAnchorEl(event.currentTarget);
125
+ };
126
+ const handleCloseCreate = () => {
127
+ setAnchorEl(null);
128
+ };
129
+ const handleCreateClassroom = () => {
130
+ if (subscription.isPaidUser) {
131
+ navigate("/classrooms/create");
132
+ } else {
133
+ handleOpenUpgradeSubscriptionModal();
134
+ }
135
+ handleCloseCreate();
136
+ };
137
+ const handleCreateCourse = () => {
138
+ navigate("/courses/create");
139
+ handleCloseCreate();
140
+ };
107
141
  const hiddenStyle = {
108
142
  position: "absolute",
109
143
  left: "-10000px",
@@ -152,15 +186,36 @@ function App({
152
186
  sx: {
153
187
  fontSize: isLgScreen ? null : 12
154
188
  }
155
- }, t("upgrade_plan")), isLgScreen && /*#__PURE__*/_react.default.createElement(_WhatsNew.default, {
189
+ }, t("upgrade_plan")), user && user["custom:role"] === "teach" && (isLgScreen ? /*#__PURE__*/_react.default.createElement(_material.Button, {
190
+ variant: "contained",
191
+ onClick: handleClickCreate,
192
+ startIcon: /*#__PURE__*/_react.default.createElement(_Add.default, null),
193
+ color: "secondary"
194
+ }, t("create")) : /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
195
+ title: t("create"),
196
+ enterDelay: 300
197
+ }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
198
+ color: "inherit",
199
+ "aria-label": t("create"),
200
+ "aria-haspopup": "true",
201
+ onClick: handleClickCreate
202
+ }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), isLgScreen && /*#__PURE__*/_react.default.createElement(_WhatsNew.default, {
156
203
  t: t,
157
204
  whatsNewMarkdown: whatsNewMarkdown,
158
205
  whatsNewDate: whatsNewDate
159
- }), /*#__PURE__*/_react.default.createElement(_LanguageSelector.default, {
206
+ }), /*#__PURE__*/_react.default.createElement(_material.Menu, {
207
+ anchorEl: anchorEl,
208
+ open: isCreateMenuOpen,
209
+ onClose: handleCloseCreate
210
+ }, /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
211
+ onClick: handleCreateClassroom
212
+ }, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_School.default, null)), /*#__PURE__*/_react.default.createElement(_material.ListItemText, null, t("classroom"))), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
213
+ onClick: handleCreateCourse
214
+ }, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_BubbleChart.default, null)), /*#__PURE__*/_react.default.createElement(_material.ListItemText, null, t("course")))), /*#__PURE__*/_react.default.createElement(_LanguageSelector.default, {
160
215
  t: t,
161
216
  currentLanguage: currentLanguage,
162
217
  handleChangeLanguage: handleChangeLanguage
163
- }), /*#__PURE__*/_react.default.createElement(_Hidden.default, {
218
+ }), /*#__PURE__*/_react.default.createElement(_material.Hidden, {
164
219
  smDown: true,
165
220
  implementation: "js"
166
221
  }, /*#__PURE__*/_react.default.createElement(_ThemeToggle.default, {
@@ -180,7 +235,7 @@ function App({
180
235
  color: "inherit",
181
236
  component: "a",
182
237
  href: `${window.location.search ? `${window.location.search}&action=signIn` : "?action=signIn"}`
183
- }, t("sign_in")), /*#__PURE__*/_react.default.createElement(_Button.default, {
238
+ }, t("sign_in")), /*#__PURE__*/_react.default.createElement(_material.Button, {
184
239
  color: "secondary",
185
240
  variant: "contained",
186
241
  component: "a",
@@ -216,6 +271,13 @@ function App({
216
271
  closeSnackbar: closeSnackbar,
217
272
  snackbarMessage: snackbarMessage,
218
273
  snackbarType: snackbarType
274
+ }), /*#__PURE__*/_react.default.createElement(_UpgradeSubscription.default, {
275
+ key: "UpgradeSubscription",
276
+ t: t,
277
+ open: isUpgradeSubscriptionOpen,
278
+ handleClose: handleCloseUpgradeSubcriptionModal,
279
+ onConfirm: handleSubscriptionPage,
280
+ subscription: subscription
219
281
  }));
220
282
  }
221
283
  var _default = exports.default = App;
@@ -302,6 +302,38 @@ function Bot({
302
302
  setNotEnoughMessages(false);
303
303
  }
304
304
  }, [botMessages]);
305
+ const getBotRiveScriptEndingText = rs => {
306
+ //variables names as we have it in each riveScript template.
307
+ const botEndVarNames = ["ending", "correctfinal", "incorrectfinal", "endMessage"];
308
+ const lines = rs.split("\n");
309
+ const botEndingTextArray = [];
310
+ for (let line of lines) {
311
+ for (let varName of botEndVarNames) {
312
+ //looking to see if any of the variables names from the array exist in the current bot riveScript
313
+ const varPattern = new RegExp(`^! var ${varName} = (.+)$`);
314
+ const match = line.match(varPattern);
315
+ if (match) {
316
+ botEndingTextArray.push(match[1].trim());
317
+ }
318
+ }
319
+ }
320
+ //returning the ending variable text(s) of the bot e.g. ['The conversation has ended.']
321
+ return botEndingTextArray.length > 0 ? botEndingTextArray : null;
322
+ };
323
+ (0, _react.useEffect)(() => {
324
+ if (bot && bot.riveFile) {
325
+ const botEndingTextArray = getBotRiveScriptEndingText(bot.riveFile);
326
+ const normalizedCurrentPhrase = currentPhrase.trim().normalize();
327
+ const normalizedEndingVars = botEndingTextArray.map(varString => varString.trim().normalize());
328
+
329
+ //Checking if the current phrase text and the bot end text is the same
330
+ if (normalizedEndingVars.includes(normalizedCurrentPhrase)) {
331
+ setTimeout(() => {
332
+ handleCompleteExercise();
333
+ }, 2000);
334
+ }
335
+ }
336
+ }, [currentPhrase, bot]);
305
337
  (0, _react.useEffect)(() => {
306
338
  if (open && !run && !localStorage.getItem(`bot-exercise-tour-completed`)) {
307
339
  setJoyrideState(prevState => ({
@@ -40,7 +40,9 @@ function MeetingForm({
40
40
  editMeetingImages,
41
41
  meetingLink,
42
42
  backgroundImages = [],
43
- meetingImages = []
43
+ meetingImages = [],
44
+ meetingTime,
45
+ meetingDate
44
46
  } = values;
45
47
  const [selectedSample, setSelectedSample] = (0, _react.useState)("");
46
48
  const [showForm, setShowForm] = (0, _react.useState)(false);
@@ -52,8 +54,8 @@ function MeetingForm({
52
54
  if (currentDateTime.add(1, "hour").date() !== currentDateTime.date()) {
53
55
  defaultMeetingDate = currentDateTime.add(1, "hour").format("MM/DD/YYYY");
54
56
  }
55
- const [meetingDate, setMeetingDate] = (0, _react.useState)(defaultMeetingDate);
56
- const [meetingTime, setMeetingTime] = (0, _react.useState)(defaultMeetingTime);
57
+ const [newMeetingDate, setNewMeetingDate] = (0, _react.useState)(defaultMeetingDate);
58
+ const [newMeetingTime, setNewMeetingTime] = (0, _react.useState)(defaultMeetingTime);
57
59
  const [initialBackgroundImages, setInitialBackgroundImages] = (0, _react.useState)([]);
58
60
  const [initialMeetingImages, setInitialMeetingImages] = (0, _react.useState)([]);
59
61
  (0, _react.useEffect)(() => {
@@ -72,16 +74,16 @@ function MeetingForm({
72
74
  handleChange({
73
75
  target: {
74
76
  name: "meetingDate",
75
- value: meetingDate
77
+ value: newMeetingDate
76
78
  }
77
79
  });
78
80
  handleChange({
79
81
  target: {
80
82
  name: "meetingTime",
81
- value: meetingTime
83
+ value: newMeetingTime
82
84
  }
83
85
  });
84
- }, [meetingDate, meetingTime, handleChange]);
86
+ }, [newMeetingDate, newMeetingTime, handleChange]);
85
87
  const onChange = event => {
86
88
  handleChange({
87
89
  target: {
@@ -150,6 +152,7 @@ function MeetingForm({
150
152
  setInitialMeetingImages([]);
151
153
  }
152
154
  };
155
+ const dateTimePlaceholder = meetingTime && meetingDate ? (0, _dayjs.default)(meetingDate + " " + meetingTime) : (0, _dayjs.default)(defaultMeetingDate + " " + defaultMeetingTime);
153
156
  return /*#__PURE__*/_react.default.createElement(_material.Grid, {
154
157
  container: true,
155
158
  spacing: 2
@@ -352,13 +355,13 @@ function MeetingForm({
352
355
  components: ["DateTimePicker", "DateTimePicker"]
353
356
  }, /*#__PURE__*/_react.default.createElement(_DateTimePicker.DateTimePicker, {
354
357
  label: t("due_date"),
355
- value: (0, _dayjs.default)(defaultMeetingDate + " " + defaultMeetingTime),
358
+ value: dateTimePlaceholder,
356
359
  onChange: newValue => {
357
360
  const datePickerValue = (0, _dayjs.default)(newValue);
358
361
  const date = datePickerValue.format("MM/DD/YYYY");
359
362
  const time = datePickerValue.format("h:mm A");
360
- setMeetingDate(date);
361
- setMeetingTime(time);
363
+ setNewMeetingDate(date);
364
+ setNewMeetingTime(time);
362
365
  }
363
366
  }))))));
364
367
  }
@@ -45,6 +45,7 @@ function Classrooms({
45
45
  role,
46
46
  learnClassrooms = [],
47
47
  teachClassrooms = [],
48
+ archivedClassrooms = [],
48
49
  isLoading,
49
50
  placeholderImageUrl,
50
51
  singleLineGrid = false,
@@ -84,20 +85,16 @@ function Classrooms({
84
85
  window.open(`${mainSiteUrl}/pricing/app`, "_blank");
85
86
  };
86
87
  const tabs = [{
87
- label: `${t("learn")} ${isLoading ? "" : `(${learnClassrooms.length})`}`,
88
- id: "Learn"
88
+ label: `${t("active")} ${isLoading ? "" : `(${teachClassrooms.length})`}`,
89
+ id: "active"
89
90
  }, {
90
- label: `${t("teach")} ${isLoading ? "" : `(${teachClassrooms.length})`}`,
91
- id: "Teach"
91
+ label: `${t("archived")} ${isLoading ? "" : `(${archivedClassrooms.length})`}`,
92
+ id: "archived"
92
93
  }];
93
- let initialTabValue;
94
+ let initialTabValue = 0;
94
95
  if (window.location.hash) {
95
96
  const selectedTab = window.location.hash;
96
97
  initialTabValue = tabs.findIndex(tab => tab.id === selectedTab.replace("#", ""));
97
- } else if (role === "teach") {
98
- initialTabValue = 1; // Set initial tab to "Teach"
99
- } else {
100
- initialTabValue = learnClassrooms.length === 0 && teachClassrooms.length > 0 ? 1 : 0;
101
98
  }
102
99
  return /*#__PURE__*/_react.default.createElement("div", {
103
100
  className: classes.root
@@ -115,28 +112,18 @@ function Classrooms({
115
112
  "aria-label": t("find_classroom"),
116
113
  color: "inherit",
117
114
  size: "large"
118
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
119
- title: t("create_classroom")
120
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
121
- "data-cy": "add-classroom-fab",
122
- onClick: authenticated ? subscription.isPaidUser ? handleCreateClassroom : handleOpenUpgradeSubscriptionModal : () => {
123
- handleSignIn();
124
- },
125
- "aria-label": t("create_classroom"),
126
- color: "inherit",
127
- size: "large"
128
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_ResponsiveTabs.default, {
115
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), role === "teach" ? /*#__PURE__*/_react.default.createElement(_ResponsiveTabs.default, {
129
116
  t: t,
130
117
  tabs: tabs,
131
118
  centered: true,
132
119
  initialValue: initialTabValue
133
120
  }, /*#__PURE__*/_react.default.createElement(_material.Box, {
134
121
  py: 1
135
- }, isLoading || learnClassrooms.length > 0 ? /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
122
+ }, isLoading || teachClassrooms.length > 0 ? /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
136
123
  t: t,
137
124
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
138
125
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
139
- classrooms: Array.isArray(learnClassrooms) && learnClassrooms.length ? learnClassrooms : null,
126
+ classrooms: Array.isArray(teachClassrooms) && teachClassrooms.length ? teachClassrooms : null,
140
127
  handleJoinClassroom: handleJoinClassroom,
141
128
  handleLeaveClassroom: handleLeaveClassroom,
142
129
  handleViewClassroom: handleViewClassroom,
@@ -159,17 +146,17 @@ function Classrooms({
159
146
  placeholderImageUrl: placeholderImageUrl,
160
147
  title: /*#__PURE__*/_react.default.createElement(_material.Typography, {
161
148
  className: classes.title
162
- }, t("learn_classrooms_title")),
163
- description: t("learn_classrooms_desc"),
149
+ }, t("teach_classrooms_title")),
150
+ description: t("teach_classrooms_desc"),
164
151
  handleSearchClassrooms: handleSearchClassrooms,
165
152
  mainSiteUrl: mainSiteUrl
166
153
  }))), /*#__PURE__*/_react.default.createElement(_material.Box, {
167
154
  py: 1
168
- }, isLoading || teachClassrooms.length > 0 ? /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
155
+ }, isLoading || archivedClassrooms.length > 0 ? /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
169
156
  t: t,
170
157
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
171
158
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
172
- classrooms: Array.isArray(teachClassrooms) && teachClassrooms.length ? teachClassrooms : null,
159
+ classrooms: Array.isArray(archivedClassrooms) && archivedClassrooms.length ? archivedClassrooms : null,
173
160
  handleJoinClassroom: handleJoinClassroom,
174
161
  handleLeaveClassroom: handleLeaveClassroom,
175
162
  handleViewClassroom: handleViewClassroom,
@@ -191,11 +178,44 @@ function Classrooms({
191
178
  placeholderImageUrl: placeholderImageUrl,
192
179
  title: /*#__PURE__*/_react.default.createElement(_material.Typography, {
193
180
  className: classes.title
194
- }, t("teach_classrooms_title")),
195
- description: t("teach_classrooms_desc"),
196
- handleCreateClassroom: handleCreateClassroom,
181
+ }, t("archived_classrooms_title")),
182
+ description: t("archived_classrooms_desc"),
183
+ handleCreateClassroom: null,
197
184
  subscription: subscription
198
- })))), /*#__PURE__*/_react.default.createElement(_UpgradeSubscription.default, {
185
+ })))) : /*#__PURE__*/_react.default.createElement(_material.Box, {
186
+ py: 1
187
+ }, isLoading || learnClassrooms.length > 0 ? /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
188
+ t: t,
189
+ reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
190
+ memberPlaceholderImageUrl: memberPlaceholderImageUrl,
191
+ classrooms: Array.isArray(learnClassrooms) && learnClassrooms.length ? learnClassrooms : null,
192
+ handleJoinClassroom: handleJoinClassroom,
193
+ handleLeaveClassroom: handleLeaveClassroom,
194
+ handleViewClassroom: handleViewClassroom,
195
+ membersProps: membersProps,
196
+ getMemberDetails: getMemberDetails,
197
+ getMemberInfo: getMemberInfo,
198
+ getUserReviews: getUserReviews,
199
+ singleLineGrid: singleLineGrid,
200
+ singleLineGridCols: singleLineGridCols,
201
+ getClassroomReviews: getClassroomReviews,
202
+ getClassroomMember: getClassroomMember,
203
+ getClassroomMembers: getClassroomMembers,
204
+ username: username,
205
+ handleViewUserProfile: handleViewUserProfile,
206
+ cardTitleComponent: "h2"
207
+ }) : /*#__PURE__*/_react.default.createElement(_material.Box, {
208
+ py: 2
209
+ }, /*#__PURE__*/_react.default.createElement(_Classrooms2.default, {
210
+ t: t,
211
+ placeholderImageUrl: placeholderImageUrl,
212
+ title: /*#__PURE__*/_react.default.createElement(_material.Typography, {
213
+ className: classes.title
214
+ }, t("learn_classrooms_title")),
215
+ description: t("learn_classrooms_desc"),
216
+ handleSearchClassrooms: handleSearchClassrooms,
217
+ mainSiteUrl: mainSiteUrl
218
+ }))), /*#__PURE__*/_react.default.createElement(_UpgradeSubscription.default, {
199
219
  key: "UpgradeSubscription",
200
220
  t: t,
201
221
  open: isUpgradeSubscriptionOpen,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.props = exports.default = exports.SingleLineGrid = exports.NotFoundWithoutSub = exports.NotFoundWithSub = exports.Loading = exports.Loaded = void 0;
6
+ exports.props = exports.default = exports.Teacher = exports.Student = exports.SingleLineGrid = exports.NotFoundWithoutSub = exports.NotFoundWithSub = exports.Loading = exports.Loaded = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _Classrooms = _interopRequireDefault(require("./Classrooms"));
9
9
  var _Classrooms2 = require("../../Lists/Classrooms/Classrooms.stories");
@@ -13,6 +13,7 @@ const Template = args => /*#__PURE__*/_react.default.createElement(_Classrooms.d
13
13
  const props = exports.props = {
14
14
  learnClassrooms: [],
15
15
  teachClassrooms: [],
16
+ archivedClassrooms: [],
16
17
  isLoading: false,
17
18
  getMemberDetails: _Members.getMemberDetails,
18
19
  subscription: {
@@ -59,4 +60,17 @@ SingleLineGrid.args = {
59
60
  singleLineGrid: true,
60
61
  singleLineGridCols: 4
61
62
  };
62
- SingleLineGrid.storyName = "loaded - single line grid";
63
+ SingleLineGrid.storyName = "loaded - single line grid";
64
+ const Teacher = exports.Teacher = Template.bind({});
65
+ Teacher.args = {
66
+ ...props,
67
+ role: "teach",
68
+ teachClassrooms: _Classrooms2.classrooms,
69
+ archivedClassrooms: _Classrooms2.classrooms
70
+ };
71
+ const Student = exports.Student = Template.bind({});
72
+ Student.args = {
73
+ ...props,
74
+ role: "learn",
75
+ learnClassrooms: _Classrooms2.classrooms
76
+ };
@@ -161,13 +161,7 @@ function SearchFilters({
161
161
  item: true,
162
162
  xs: 12,
163
163
  sm: 2.5
164
- }, /*#__PURE__*/_react.default.createElement(_material.Button, {
165
- onClick: subscription.isPaidUser ? handleCreateClassroom : handleOpenUpgradeSubscriptionModal,
166
- variant: "contained",
167
- color: "primary",
168
- endIcon: /*#__PURE__*/_react.default.createElement(_Add.default, null),
169
- fullWidth: true
170
- }, t("create_classroom")), /*#__PURE__*/_react.default.createElement(_UpgradeSubscription.default, {
164
+ }, /*#__PURE__*/_react.default.createElement(_UpgradeSubscription.default, {
171
165
  key: "UpgradeSubscription",
172
166
  t: t,
173
167
  open: isUpgradeSubscriptionOpen,
@@ -1049,7 +1049,13 @@ function Classroom({
1049
1049
  display: "flex",
1050
1050
  alignItems: "center",
1051
1051
  mt: 2,
1052
- mb: 1
1052
+ mb: 1,
1053
+ sx: {
1054
+ [theme.breakpoints.down("md")]: {
1055
+ flexWrap: "wrap",
1056
+ gap: 1
1057
+ }
1058
+ }
1053
1059
  }, isArchived && isCreator && /*#__PURE__*/_react.default.createElement(_material.Box, {
1054
1060
  mr: 1
1055
1061
  }, /*#__PURE__*/_react.default.createElement(_DefaultColourButton.default, {
@@ -73,20 +73,20 @@ function Courses({
73
73
  classes
74
74
  } = useStyles();
75
75
  const tabs = [{
76
- label: `${t("learn")} ${isLoading ? "" : `(${learnCourses.length})`}`,
77
- id: "Learn"
76
+ label: `${t("created")} ${isLoading ? "" : `(${teachCourses.length})`}`,
77
+ id: "Created"
78
78
  }, {
79
- label: `${t("teach")} ${isLoading ? "" : `(${teachCourses.length})`}`,
80
- id: "Teach"
79
+ label: `${t("joined")} ${isLoading ? "" : `(${learnCourses.length})`}`,
80
+ id: "Joined"
81
81
  }];
82
82
  let initialTabValue;
83
83
  if (window.location.hash) {
84
84
  const selectedTab = window.location.hash;
85
85
  initialTabValue = tabs.findIndex(tab => tab.id === selectedTab.replace("#", ""));
86
86
  } else if (role === "teach") {
87
- initialTabValue = 1; // Set initial tab to "Teach"
87
+ initialTabValue = 0; // Set initial tab to "Created"
88
88
  } else {
89
- initialTabValue = learnCourses.length === 0 && teachCourses.length > 0 ? 1 : 0;
89
+ initialTabValue = learnCourses.length > 0 && teachCourses.length === 0 ? 1 : 0;
90
90
  }
91
91
  return /*#__PURE__*/_react.default.createElement("div", {
92
92
  className: classes.root
@@ -106,40 +106,31 @@ function Courses({
106
106
  "data-cy": "search-course-fab",
107
107
  size: "large",
108
108
  role: "link"
109
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
110
- title: t("create_course")
111
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
112
- onClick: handleCreateCourse,
113
- "aria-label": t("create_course"),
114
- color: "inherit",
115
- "data-cy": "add-course-fab",
116
- size: "large",
117
- role: "link"
118
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_ResponsiveTabs.default, {
109
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_ResponsiveTabs.default, {
119
110
  t: t,
120
111
  tabs: tabs,
121
112
  centered: true,
122
113
  initialValue: initialTabValue
123
114
  }, /*#__PURE__*/_react.default.createElement(_material.Box, {
124
115
  py: 1
125
- }, isLoading || learnCourses.length > 0 ? /*#__PURE__*/_react.default.createElement(_Courses.default, {
116
+ }, isLoading || teachCourses.length > 0 ? /*#__PURE__*/_react.default.createElement(_Courses.default, {
126
117
  t: t,
127
- courses: learnCourses !== undefined && Array.isArray(learnCourses) && learnCourses.length ? learnCourses : null,
118
+ courses: Array.isArray(teachCourses) && teachCourses.length ? teachCourses : null,
128
119
  completions: completions,
129
120
  handleStartCourse: handleStartCourse,
130
121
  handleLeaveCourse: handleLeaveCourse,
122
+ handleViewCourseTopic: handleViewCourseTopic,
131
123
  handleViewCourse: handleViewCourse,
132
124
  handleViewUserProfile: handleViewUserProfile,
133
125
  membersProps: membersProps,
134
- handleViewCourseTopic: handleViewCourseTopic,
135
126
  getMemberDetails: getMemberDetails,
136
127
  getMemberInfo: getMemberInfo,
137
128
  getUserReviews: getUserReviews,
138
129
  avatars: avatars,
139
130
  singleLineGrid: singleLineGrid,
140
131
  singleLineGridCols: singleLineGridCols,
141
- reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
142
132
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
133
+ reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
143
134
  getCourseSections: getCourseSections,
144
135
  getCourseReviews: getCourseReviews,
145
136
  getCourseMember: getCourseMember,
@@ -155,29 +146,29 @@ function Courses({
155
146
  placeholderImageUrl: placeholderImageUrl,
156
147
  title: /*#__PURE__*/_react.default.createElement(_material.Typography, {
157
148
  className: classes.title
158
- }, t("learn_courses_title")),
159
- description: t("learn_courses_desc"),
160
- handleSearchCourses: handleSearchCourses
149
+ }, t("teach_courses_title")),
150
+ description: t("teach_courses_desc"),
151
+ handleCreateCourse: handleCreateCourse
161
152
  }))), /*#__PURE__*/_react.default.createElement(_material.Box, {
162
153
  py: 1
163
- }, isLoading || teachCourses.length > 0 ? /*#__PURE__*/_react.default.createElement(_Courses.default, {
154
+ }, isLoading || learnCourses.length > 0 ? /*#__PURE__*/_react.default.createElement(_Courses.default, {
164
155
  t: t,
165
- courses: Array.isArray(teachCourses) && teachCourses.length ? teachCourses : null,
156
+ courses: Array.isArray(learnCourses) && learnCourses.length ? learnCourses : null,
166
157
  completions: completions,
167
158
  handleStartCourse: handleStartCourse,
168
159
  handleLeaveCourse: handleLeaveCourse,
169
- handleViewCourseTopic: handleViewCourseTopic,
170
160
  handleViewCourse: handleViewCourse,
171
161
  handleViewUserProfile: handleViewUserProfile,
172
162
  membersProps: membersProps,
163
+ handleViewCourseTopic: handleViewCourseTopic,
173
164
  getMemberDetails: getMemberDetails,
174
165
  getMemberInfo: getMemberInfo,
175
166
  getUserReviews: getUserReviews,
176
167
  avatars: avatars,
177
168
  singleLineGrid: singleLineGrid,
178
169
  singleLineGridCols: singleLineGridCols,
179
- memberPlaceholderImageUrl: memberPlaceholderImageUrl,
180
170
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
171
+ memberPlaceholderImageUrl: memberPlaceholderImageUrl,
181
172
  getCourseSections: getCourseSections,
182
173
  getCourseReviews: getCourseReviews,
183
174
  getCourseMember: getCourseMember,
@@ -193,8 +184,8 @@ function Courses({
193
184
  placeholderImageUrl: placeholderImageUrl,
194
185
  title: /*#__PURE__*/_react.default.createElement(_material.Typography, {
195
186
  className: classes.title
196
- }, t("teach_courses_title")),
197
- description: t("teach_courses_desc"),
198
- handleCreateCourse: handleCreateCourse
187
+ }, t("learn_courses_title")),
188
+ description: t("learn_courses_desc"),
189
+ handleSearchCourses: handleSearchCourses
199
190
  })))));
200
191
  }
@@ -203,23 +203,94 @@ function SearchFilters({
203
203
  }))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
204
204
  item: true,
205
205
  xs: 12,
206
- md: 2.5
207
- }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
208
- container: true,
209
- direction: "row",
210
- alignItems: "center",
211
- spacing: 1
212
- }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
206
+ sm: 12,
207
+ md: 2
208
+ }, /*#__PURE__*/_react.default.createElement(_LanguageSelector.default, {
209
+ id: "forLang",
210
+ name: "forLang",
211
+ label: t("speakers_of"),
212
+ margin: "dense",
213
+ variant: "outlined",
214
+ fullWidth: true,
215
+ t: t,
216
+ languages: forLanguageOptions,
217
+ value: forLang,
218
+ onChange: handleFilterChange
219
+ })), /*#__PURE__*/_react.default.createElement(_material.Grid, {
220
+ item: true,
221
+ xs: 12,
222
+ sm: 12,
223
+ md: 2
224
+ }, /*#__PURE__*/_react.default.createElement(_material.TextField, {
225
+ select: true,
226
+ id: "difficulty",
227
+ name: "difficulty",
228
+ "data-cy": "difficulty",
229
+ label: t("difficulty"),
230
+ value: difficulty,
231
+ onChange: handleFilterChange,
232
+ margin: "dense",
233
+ variant: "outlined",
234
+ fullWidth: true
235
+ }, difficultyOptions)), /*#__PURE__*/_react.default.createElement(_material.Grid, {
236
+ item: true,
237
+ xs: 12,
238
+ sm: 12,
239
+ md: 2
240
+ }, /*#__PURE__*/_react.default.createElement(_SortBySelector.default, {
241
+ id: "sortBy",
242
+ name: "sort",
243
+ label: t("sort"),
244
+ margin: "dense",
245
+ variant: "outlined",
246
+ fullWidth: true,
247
+ t: t,
248
+ value: sort,
249
+ onChange: handleFilterChange,
250
+ sortByOptions: sortByOptions,
251
+ disabled: (!learnLang || learnLang === "all") && (!forLang || forLang === "all")
252
+ })), /*#__PURE__*/_react.default.createElement(_material.Grid, {
213
253
  item: true,
214
- xs: 12
215
- }, /*#__PURE__*/_react.default.createElement(_material.Button, {
216
- onClick: handleCreateCourse,
217
- variant: "contained",
218
- color: "primary",
219
- endIcon: /*#__PURE__*/_react.default.createElement(_Add.default, null),
254
+ xs: 12,
255
+ sm: 12,
256
+ md: searchText ? 3.35 : 2.5,
257
+ sx: theme => ({
258
+ transition: theme.transitions.create("all", {
259
+ easing: theme.transitions.easing.sharp,
260
+ duration: theme.transitions.duration.leavingScreen
261
+ })
262
+ })
263
+ }, /*#__PURE__*/_react.default.createElement(_material.TextField, {
264
+ id: "search",
265
+ name: "search",
266
+ "data-cy": "search",
267
+ label: t("search"),
268
+ value: searchText,
269
+ onChange: ev => setSearchText(ev.target.value),
270
+ margin: "dense",
271
+ variant: "outlined",
220
272
  fullWidth: true,
221
- role: "link"
222
- }, t("create_course"))))))));
273
+ InputProps: {
274
+ endAdornment: /*#__PURE__*/_react.default.createElement(_material.InputAdornment, {
275
+ position: "end",
276
+ "aria-label": t("find_bot"),
277
+ color: "inherit",
278
+ "data-cy": "search-bot",
279
+ size: "large"
280
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null))
281
+ }
282
+ })), /*#__PURE__*/_react.default.createElement(_material.Grid, {
283
+ item: true,
284
+ xs: 12,
285
+ sm: 12,
286
+ md: searchText ? 0.15 : 1,
287
+ sx: theme => ({
288
+ transition: theme.transitions.create("all", {
289
+ easing: theme.transitions.easing.sharp,
290
+ duration: theme.transitions.duration.leavingScreen
291
+ })
292
+ })
293
+ }))));
223
294
  }
224
295
  function SearchCourses({
225
296
  t = text => text,
@@ -783,8 +783,10 @@ function Course({
783
783
  mt: 2,
784
784
  mb: 1,
785
785
  sx: {
786
- flexWrap: "wrap",
787
- gap: 1
786
+ [theme.breakpoints.down("md")]: {
787
+ flexWrap: "wrap",
788
+ gap: 1
789
+ }
788
790
  }
789
791
  }, !isMember && !isCreator && /*#__PURE__*/_react.default.createElement(_material.Box, {
790
792
  mr: 1
@@ -925,8 +925,10 @@ function Topic({
925
925
  mt: 2,
926
926
  mb: 1,
927
927
  sx: {
928
- flexWrap: "wrap",
929
- gap: 1
928
+ [theme.breakpoints.down("md")]: {
929
+ flexWrap: "wrap",
930
+ gap: 1
931
+ }
930
932
  }
931
933
  }, videoUrl && (isMember || isCreator) && /*#__PURE__*/_react.default.createElement(_material.Box, {
932
934
  mr: 1
@@ -80,7 +80,6 @@ function Dashboard({
80
80
  getMemberInfo,
81
81
  getUserReviews,
82
82
  handleSearchCourses,
83
- handleCreateCourse,
84
83
  handleSearchRoleplays,
85
84
  handleCreateRoleplay,
86
85
  handleSearchBots,
@@ -171,10 +170,7 @@ function Dashboard({
171
170
  }, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_Forum.default, null)), t("roleplay")), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
172
171
  onClick: handleCreateBot,
173
172
  role: "link"
174
- }, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_Face.default, null)), t("bot")), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
175
- onClick: handleCreateCourse,
176
- role: "link"
177
- }, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_BubbleChart.default, null)), t("course")))))), isPopularCoursesLoading || popularCourses.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
173
+ }, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_Face.default, null)), t("bot")))))), isPopularCoursesLoading || popularCourses.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
178
174
  pb: 2
179
175
  }, /*#__PURE__*/_react.default.createElement("div", {
180
176
  className: classes.header
@@ -196,16 +192,7 @@ function Dashboard({
196
192
  "data-cy": "search-course-fab",
197
193
  size: "large",
198
194
  role: "link"
199
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
200
- title: t("create_course")
201
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
202
- onClick: handleCreateCourse,
203
- "aria-label": t("create_course"),
204
- color: "inherit",
205
- "data-cy": "add-course-fab",
206
- size: "large",
207
- role: "link"
208
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
195
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
209
196
  t: t,
210
197
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
211
198
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
@@ -254,16 +241,7 @@ function Dashboard({
254
241
  "data-cy": "search-course-fab",
255
242
  size: "large",
256
243
  role: "link"
257
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
258
- title: t("create_course")
259
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
260
- onClick: handleCreateCourse,
261
- "aria-label": t("create_course"),
262
- color: "inherit",
263
- "data-cy": "add-course-fab",
264
- size: "large",
265
- role: "link"
266
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
244
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
267
245
  t: t,
268
246
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
269
247
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
@@ -312,16 +290,7 @@ function Dashboard({
312
290
  "data-cy": "search-course-fab",
313
291
  size: "large",
314
292
  role: "link"
315
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
316
- title: t("create_course")
317
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
318
- onClick: handleCreateCourse,
319
- "aria-label": t("create_course"),
320
- color: "inherit",
321
- "data-cy": "add-course-fab",
322
- size: "large",
323
- role: "link"
324
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
293
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
325
294
  t: t,
326
295
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
327
296
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
@@ -75,7 +75,6 @@ function Profile({
75
75
  getMemberInfo,
76
76
  getUserReviews,
77
77
  handleSearchCourses,
78
- handleCreateCourse,
79
78
  handleSearchRoleplays,
80
79
  handleCreateRoleplay,
81
80
  handleSearchBots,
@@ -336,16 +335,7 @@ function Profile({
336
335
  "data-cy": "search-course-fab",
337
336
  size: "large",
338
337
  role: "link"
339
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
340
- title: t("create_course")
341
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
342
- onClick: handleCreateCourse,
343
- "aria-label": t("create_course"),
344
- color: "inherit",
345
- "data-cy": "add-course-fab",
346
- size: "large",
347
- role: "link"
348
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
338
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
349
339
  t: t,
350
340
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
351
341
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
@@ -393,15 +383,7 @@ function Profile({
393
383
  color: "inherit",
394
384
  "data-cy": "search-classroom-fab",
395
385
  size: "large"
396
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
397
- title: t("create_classroom")
398
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
399
- onClick: handleCreateClassroom,
400
- "aria-label": t("create_classroom"),
401
- color: "inherit",
402
- "data-cy": "add-classroom-fab",
403
- size: "large"
404
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
386
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
405
387
  t: t,
406
388
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
407
389
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
@@ -534,16 +516,7 @@ function Profile({
534
516
  color: "inherit",
535
517
  "data-cy": "search-course-fab",
536
518
  size: "large"
537
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
538
- title: t("create_course")
539
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
540
- onClick: handleCreateCourse,
541
- "aria-label": t("create_course"),
542
- color: "inherit",
543
- "data-cy": "add-course-fab",
544
- size: "large",
545
- role: "link"
546
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
519
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Courses.default, {
547
520
  t: t,
548
521
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
549
522
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
@@ -591,15 +564,7 @@ function Profile({
591
564
  color: "inherit",
592
565
  "data-cy": "search-classroom-fab",
593
566
  size: "large"
594
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
595
- title: t("create_classroom")
596
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
597
- onClick: handleCreateClassroom,
598
- "aria-label": t("create_classroom"),
599
- color: "inherit",
600
- "data-cy": "add-classroom-fab",
601
- size: "large"
602
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
567
+ }, /*#__PURE__*/_react.default.createElement(_Search.default, null)))), /*#__PURE__*/_react.default.createElement(_Classrooms.default, {
603
568
  t: t,
604
569
  reviewPlaceholderImageUrl: reviewPlaceholderImageUrl,
605
570
  memberPlaceholderImageUrl: memberPlaceholderImageUrl,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nualang/nualang-ui-components",
3
- "version": "0.1.1167",
3
+ "version": "0.1.1168",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist",