@nualang/nualang-ui-components 0.1.1154 → 0.1.1156

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.
Files changed (103) hide show
  1. package/dist/Cards/CardElements/CardVisibility/CardVisibility.js +23 -12
  2. package/dist/Cards/CardElements/index.js +10 -1
  3. package/dist/Cards/Course/Course.js +21 -12
  4. package/dist/Cards/Course/Course.stories.js +2 -1
  5. package/dist/Cards/LoadingCard/LoadingCard.js +38 -0
  6. package/dist/Cards/LoadingCard/LoadingCard.stories.js +23 -0
  7. package/dist/Cards/RecordingCard/RecordingCard.js +135 -0
  8. package/dist/Cards/RecordingCard/RecordingCard.stories.js +74 -0
  9. package/dist/Cards/ScheduleCard/ScheduleCard.js +91 -0
  10. package/dist/Cards/ScheduleCard/ScheduleCard.stories.js +60 -0
  11. package/dist/Cards/SubmissionsCard/SubmissionsCard.js +119 -0
  12. package/dist/Cards/SubmissionsCard/SubmissionsCard.stories.js +61 -0
  13. package/dist/Charts/Bar/TotalGrades/TotalGrades.js +117 -0
  14. package/dist/Charts/Bar/TotalGrades/TotalGrades.stories.js +116 -0
  15. package/dist/Charts/Bar/TotalGrades/package.json +6 -0
  16. package/dist/Charts/Doughnut/RecordingAttendance/RecordingAttendance.js +100 -0
  17. package/dist/Charts/Doughnut/RecordingAttendance/RecordingAttendance.stories.js +56 -0
  18. package/dist/Charts/Doughnut/SubmittedRecordings/SubmittedRecordings.js +87 -0
  19. package/dist/Charts/Doughnut/SubmittedRecordings/SubmittedRecordings.stories.js +54 -0
  20. package/dist/Dialogs/ConfirmDeleteDiscussion/ConfirmDeleteDiscussion.js +38 -0
  21. package/dist/Dialogs/ConfirmDeleteDiscussion/ConfirmDeleteDiscussion.stories.js +27 -0
  22. package/dist/Dialogs/ConfirmDialog/ConfirmDialog.js +64 -2
  23. package/dist/Dialogs/ConfirmDialog/ConfirmDialog.stories.js +2 -0
  24. package/dist/Dialogs/CourseOutline/CourseOutline.js +3 -1
  25. package/dist/Dialogs/CreateQuestion/CreateQuestion.js +3 -2
  26. package/dist/Dialogs/FeedbackDialog/FeedbackDialog.js +128 -0
  27. package/dist/Dialogs/FeedbackDialog/FeedbackDialog.stories.js +46 -0
  28. package/dist/Dialogs/FeedbackInfoDialog/FeedbackInfoDialog.js +39 -0
  29. package/dist/Dialogs/FeedbackInfoDialog/FeedbackInfoDialog.stories.js +34 -0
  30. package/dist/Dialogs/GenerateBot/GenerateBot.js +326 -0
  31. package/dist/Dialogs/GenerateBot/GenerateBot.stories.js +69 -0
  32. package/dist/Dialogs/GenerateBot/package.json +6 -0
  33. package/dist/Dialogs/GeneratePhrases/GeneratePhrases.js +244 -0
  34. package/dist/Dialogs/GeneratePhrases/package.json +6 -0
  35. package/dist/Dialogs/GenerateRoleplay/GenerateRoleplay.js +103 -71
  36. package/dist/Dialogs/ImageLibraryDialog/ImageLibraryDialog.js +37 -0
  37. package/dist/Dialogs/ImageLibraryDialog/ImageLibraryDialog.stories.js +25 -0
  38. package/dist/Dialogs/Members/Members.js +3 -1
  39. package/dist/Dialogs/PDFViewer/pdf24.pdf +0 -0
  40. package/dist/Dialogs/RecordingDialog/RecordingDialog.js +188 -0
  41. package/dist/Dialogs/RecordingDialog/RecordingDialog.stories.js +52 -0
  42. package/dist/Editors/Bot/Bot.js +22 -2
  43. package/dist/Editors/Bot/Editor/Editor.js +51 -3
  44. package/dist/Editors/Phrases/Phrases.js +35 -3
  45. package/dist/Editors/Roleplay/Roleplay.js +6 -1
  46. package/dist/Forms/ChipInput/ChipInput.js +2 -2
  47. package/dist/Forms/CreateClassroom/Steps/ClassroomSettings/ClassroomSettings.js +4 -2
  48. package/dist/Forms/CreateMeetingMultiStepForm/CreateMeetingMultiStepForm.js +64 -0
  49. package/dist/Forms/CreateMeetingMultiStepForm/CreateMeetingMultiStepForm.stories.js +80 -0
  50. package/dist/Forms/CreateMeetingMultiStepForm/GroupAssignment.js +392 -0
  51. package/dist/Forms/CreateMeetingMultiStepForm/MeetingForm.js +367 -0
  52. package/dist/Forms/CreateMeetingMultiStepForm/images/input1.js +8 -0
  53. package/dist/Forms/CreateMeetingMultiStepForm/images/input5.js +8 -0
  54. package/dist/Forms/CreateMeetingMultiStepForm/images/mode1.js +8 -0
  55. package/dist/Forms/CreateMeetingMultiStepForm/images/mode2.js +8 -0
  56. package/dist/Forms/CreateMeetingMultiStepForm/sampleTemplates.js +54 -0
  57. package/dist/Forms/CreateTopic/Steps/TopicInformation/TopicInformation.js +22 -0
  58. package/dist/Forms/DiscussImageSelector/ImageSelector.js +296 -0
  59. package/dist/Forms/DiscussImageSelector/ImageSelector.stories.js +24 -0
  60. package/dist/Forms/DiscussImageSelector/package.json +6 -0
  61. package/dist/Forms/DiscussMultiStepFormDialog/MultiStepFormDialog.js +351 -0
  62. package/dist/Forms/DiscussMultiStepFormDialog/MultiStepFormDialog.stories.js +28 -0
  63. package/dist/Forms/DiscussMultiStepFormDialog/package.json +6 -0
  64. package/dist/Forms/FeedbackForm/FeedbackForm.js +875 -0
  65. package/dist/Forms/FeedbackForm/FeedbackForm.stories.js +47 -0
  66. package/dist/Forms/FeedbackInfo/FeedbackInfo.js +213 -0
  67. package/dist/Forms/FeedbackInfo/FeedbackInfo.stories.js +35 -0
  68. package/dist/Forms/RecordingInfo/RecordingInfo.js +60 -0
  69. package/dist/Forms/RecordingInfo/RecordingInfo.stories.js +27 -0
  70. package/dist/Forms/UpdateClassroom/UpdateClassroom.js +7 -5
  71. package/dist/Forms/UpdateTopic/UpdateTopic.js +4 -1
  72. package/dist/Lists/CourseOutline/CourseOutline.js +54 -126
  73. package/dist/Lists/CourseOutline/CourseOutline.stories.js +1 -0
  74. package/dist/Lists/Courses/Courses.js +6 -8
  75. package/dist/Lists/Exercises/Exercises.js +89 -36
  76. package/dist/Lists/Members/Members.js +11 -6
  77. package/dist/Lists/Phrases/Phrases.js +6 -5
  78. package/dist/Misc/MedalSelector/BronzeMedal.js +108 -108
  79. package/dist/Misc/MedalSelector/SilverMedal.js +288 -288
  80. package/dist/Misc/Snackbar/Snackbar.js +7 -16
  81. package/dist/Navigation/ResponsiveTabs/ResponsiveTabs.js +4 -2
  82. package/dist/Screens/Activity/Activity.js +1 -1
  83. package/dist/Screens/Classrooms/ViewClassroom/ViewClassroom.js +104 -32
  84. package/dist/Screens/Courses/SearchCourses/SearchCourses.js +25 -3
  85. package/dist/Screens/Courses/ViewCourse/ViewCourse.js +62 -49
  86. package/dist/Screens/Courses/ViewCourse/ViewTopic/ViewTopic.js +54 -38
  87. package/dist/Tables/CreatedDiscussionsTable/CreatedDiscussionsTable.js +146 -0
  88. package/dist/Tables/CreatedDiscussionsTable/CreatedDiscussionsTable.stories.js +507 -0
  89. package/dist/Tables/MeetingPrompstList/MeetingPromptsList.js +208 -0
  90. package/dist/Tables/MeetingPrompstList/MeetingPromptsList.stories.js +568 -0
  91. package/dist/Tables/Progress/Progress.js +92 -72
  92. package/dist/Tables/Progress/ProgressTable.js +1 -1
  93. package/dist/Tables/RecordingListCards/RecordingListCards.js +180 -0
  94. package/dist/Tables/RecordingListCards/RecordingListCards.stories.js +176 -0
  95. package/dist/Tables/ScheduleListCards/ScheduleListCards.js +174 -0
  96. package/dist/Tables/ScheduleListCards/ScheduleListCards.stories.js +123 -0
  97. package/dist/Tables/SubmissionsTableCards/SubmissionsTableCards.js +172 -0
  98. package/dist/Tables/SubmissionsTableCards/SubmissionsTableCards.stories.js +133 -0
  99. package/dist/hooks/useConfirm.js +3 -1
  100. package/dist/img/aaron-square.jpg +0 -0
  101. package/dist/img/stars1.svg +44 -0
  102. package/dist/img/stars2.svg +30 -0
  103. package/package.json +2 -2
@@ -11,23 +11,38 @@ var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
11
11
  var _Public = _interopRequireDefault(require("@mui/icons-material/Public"));
12
12
  var _VpnLock = _interopRequireDefault(require("@mui/icons-material/VpnLock"));
13
13
  var _colors = require("@mui/material/colors");
14
+ var _Archive = _interopRequireDefault(require("@mui/icons-material/Archive"));
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  function CardVisibility({
16
- t,
17
- visibility
17
+ t = text => text,
18
+ visibility = ""
18
19
  }) {
19
20
  const isPublic = visibility === "public";
21
+ let icon;
22
+ let color;
23
+ if (visibility === "public") {
24
+ icon = /*#__PURE__*/_react.default.createElement(_Public.default, {
25
+ fontSize: "small"
26
+ });
27
+ color = "success";
28
+ } else if (visibility === "private") {
29
+ icon = /*#__PURE__*/_react.default.createElement(_VpnLock.default, {
30
+ fontSize: "small"
31
+ });
32
+ color = "info";
33
+ } else if (visibility === "archived") {
34
+ icon = /*#__PURE__*/_react.default.createElement(_Archive.default, {
35
+ fontSize: "small"
36
+ });
37
+ color = "secondary";
38
+ }
20
39
  return /*#__PURE__*/_react.default.createElement(_Box.default, {
21
40
  sx: {
22
41
  position: "relative"
23
42
  }
24
43
  }, /*#__PURE__*/_react.default.createElement(_Chip.default, {
25
- color: isPublic ? "success" : "info",
26
- icon: isPublic ? /*#__PURE__*/_react.default.createElement(_Public.default, {
27
- fontSize: "small"
28
- }) : /*#__PURE__*/_react.default.createElement(_VpnLock.default, {
29
- fontSize: "small"
30
- }),
44
+ color: color,
45
+ icon: icon,
31
46
  label: t(visibility),
32
47
  sx: theme => ({
33
48
  position: "absolute",
@@ -47,8 +62,4 @@ function CardVisibility({
47
62
  CardVisibility.propTypes = {
48
63
  visibility: _propTypes.default.string.isRequired
49
64
  };
50
- CardVisibility.defaultProps = {
51
- t: t => t,
52
- visibility: ""
53
- };
54
65
  var _default = exports.default = CardVisibility;
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "CardVisibility", {
17
17
  return _CardVisibility.default;
18
18
  }
19
19
  });
20
- exports.classes = void 0;
20
+ exports.classes = exports.LoadingCardContainer = void 0;
21
21
  var _react = _interopRequireDefault(require("react"));
22
22
  var _material = require("@mui/material");
23
23
  var _system = require("@mui/system");
@@ -152,6 +152,15 @@ const CardMenuIcon = exports.CardMenuIcon = (0, _system.styled)("div")(({
152
152
  justifyContent: "center",
153
153
  marginRight: theme.spacing(2)
154
154
  }));
155
+ const LoadingCardContainer = exports.LoadingCardContainer = (0, _system.styled)(_material.Card)(({
156
+ theme
157
+ }) => ({
158
+ textAlign: "left",
159
+ color: theme.palette.text.secondary,
160
+ display: "flex",
161
+ flexDirection: "column",
162
+ borderRadius: theme.spacing(2)
163
+ }));
155
164
  const classes = exports.classes = {
156
165
  media: {
157
166
  height: 0,
@@ -59,7 +59,8 @@ function OverflowMenu({
59
59
  course,
60
60
  reviewsEnabled,
61
61
  reviewCount,
62
- classroomId
62
+ classroomId,
63
+ isClassroomArchived = false
63
64
  }) {
64
65
  return /*#__PURE__*/_react.default.createElement(_material.Menu, {
65
66
  id: `card-menu-${courseId}`,
@@ -79,11 +80,11 @@ function OverflowMenu({
79
80
  onClick: startCourse
80
81
  }, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_ExitToApp.default, {
81
82
  fontSize: "small"
82
- })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("start_course"))), !isCreator && isMember && !isAdmin && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
83
+ })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("start_course"))), !isCreator && isMember && !isAdmin && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
83
84
  onClick: leaveCourse
84
85
  }, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_ExitToApp.default, {
85
86
  fontSize: "small"
86
- })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("leave_course"))), isCreator && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
87
+ })), /*#__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, {
87
88
  onClick: viewCourse
88
89
  }, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_Edit.default, {
89
90
  fontSize: "small"
@@ -94,11 +95,11 @@ function OverflowMenu({
94
95
  }
95
96
  }, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_FileCopy.default, {
96
97
  fontSize: "small"
97
- })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("duplicate_course")))), handleRemoveCourse && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
98
+ })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("duplicate_course")))), handleRemoveCourse && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
98
99
  onClick: () => handleRemoveCourse(courseId)
99
100
  }, /*#__PURE__*/_react.default.createElement(_CardElements.CardMenuIcon, null, /*#__PURE__*/_react.default.createElement(_Close.default, {
100
101
  fontSize: "small"
101
- })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("remove_course"))), classroomId && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
102
+ })), /*#__PURE__*/_react.default.createElement(_material.Typography, null, t("remove_course"))), classroomId && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
102
103
  onClick: () => {
103
104
  localStorage.setItem("focusCourseSettings", true);
104
105
  window.location.hash = "Settings";
@@ -182,7 +183,8 @@ function CourseCard({
182
183
  handleDuplicateCourse,
183
184
  ariaText = "",
184
185
  classroomId,
185
- cardTitleComponent = "h2"
186
+ cardTitleComponent = "h2",
187
+ isClassroomArchived = false
186
188
  }) {
187
189
  const [placeholderRef, visible] = (0, _reactIntersectionObserver.useInView)({
188
190
  rootMargin: "320px",
@@ -332,7 +334,12 @@ function CourseCard({
332
334
  sx: disableRaised ? {} : _CardElements.classes.hover,
333
335
  raised: disableRaised ? false : anchorEl || isOutlineOpen,
334
336
  "data-cy": "course-card"
335
- }, /*#__PURE__*/_react.default.createElement(_CardElements.CardTop, null, /*#__PURE__*/_react.default.createElement(_material.CardActionArea, {
337
+ }, /*#__PURE__*/_react.default.createElement(_CardElements.CardTop, null, isClassroomArchived ? /*#__PURE__*/_react.default.createElement(_ProgressiveCardMedia.default, {
338
+ sx: _CardElements.classes.media,
339
+ highQualitySrc: visible || !pictureXs ? cardPicture || picture || _index.default.course : null,
340
+ lowQualitySrc: pictureXs,
341
+ placeholderRef: placeholderRef
342
+ }) : /*#__PURE__*/_react.default.createElement(_material.CardActionArea, {
336
343
  onClick: handleClickImage,
337
344
  role: "link",
338
345
  "aria-label": `${ariaText} ${courseName}`
@@ -385,7 +392,7 @@ function CourseCard({
385
392
  action: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, selectable && /*#__PURE__*/_react.default.createElement(_material.Checkbox, {
386
393
  checked: checked,
387
394
  onChange: handleCheckboxClick
388
- }), !disableActions && /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
395
+ }), !disableActions && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
389
396
  title: `${courseName} ${t("more_options")}`
390
397
  }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
391
398
  onClick: handleClickOpenMenu,
@@ -459,7 +466,7 @@ function CourseCard({
459
466
  variant: "outlined",
460
467
  disabled: checked,
461
468
  "aria-label": "Select Course"
462
- }, checked ? t("selected") : t("select")), isCreator && !selectable && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
469
+ }, checked ? t("selected") : t("select")), isCreator && !selectable && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_material.Button, {
463
470
  onClick: viewCourse,
464
471
  color: "primary",
465
472
  variant: "outlined",
@@ -470,7 +477,7 @@ function CourseCard({
470
477
  color: "primary",
471
478
  disabled: disableActions,
472
479
  "aria-label": `View Outline: ${courseName}`
473
- }, t("view_outline"))), !isCreator && isMember && !selectable && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
480
+ }, t("view_outline"))), !isCreator && isMember && !selectable && !isClassroomArchived && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
474
481
  onClick: viewCourse,
475
482
  color: "primary",
476
483
  variant: "outlined",
@@ -510,7 +517,8 @@ function CourseCard({
510
517
  handleDuplicateCourse: handleDuplicateCourse,
511
518
  course: course,
512
519
  reviewsEnabled: reviewsEnabled,
513
- reviewCount: reviewCount
520
+ reviewCount: reviewCount,
521
+ isClassroomArchived: isClassroomArchived
514
522
  }), /*#__PURE__*/_react.default.createElement(_Reviews.default, {
515
523
  t: t,
516
524
  dialogTitle: courseName,
@@ -539,7 +547,8 @@ function CourseCard({
539
547
  sections: sectionsQuery.isSuccess ? sectionsQuery.data.Items : [],
540
548
  isLoading: sectionsQuery.isLoading,
541
549
  isMember: isMember,
542
- completions: completions
550
+ completions: completions,
551
+ isClassroomArchived: isClassroomArchived
543
552
  }));
544
553
  }
545
554
  function Course(props) {
@@ -207,7 +207,8 @@ const course = exports.course = {
207
207
  collaborators: ["joe.blogs@fathomtech.io"],
208
208
  picture: `https://picsum.photos/id/1/1000/600`,
209
209
  pictureXs: `https://picsum.photos/id/1/16`,
210
- exerciseStartTotal: 1200
210
+ exerciseStartTotal: 1200,
211
+ isClassroomArchived: false
211
212
  };
212
213
  const props = exports.props = {
213
214
  course,
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _material = require("@mui/material");
9
+ var _Skeleton = _interopRequireDefault(require("@mui/material/Skeleton"));
10
+ var _Person = _interopRequireDefault(require("@mui/icons-material/Person"));
11
+ var _CardElements = require("../CardElements");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function LoadingCard() {
14
+ return /*#__PURE__*/_react.default.createElement(_CardElements.LoadingCardContainer, {
15
+ sx: {
16
+ marginBottom: 3
17
+ }
18
+ }, /*#__PURE__*/_react.default.createElement(_CardElements.CardTop, {
19
+ sx: {
20
+ paddingTop: "5%"
21
+ }
22
+ }, /*#__PURE__*/_react.default.createElement(_material.CardActionArea, null, /*#__PURE__*/_react.default.createElement(_CardElements.CardAvatar, {
23
+ sx: theme => ({
24
+ backgroundColor: theme.palette.mode === "dark" ? "#ffffff" : "#bdbdbd",
25
+ color: theme.palette.mode === "dark" ? theme.palette.background.default : "white"
26
+ })
27
+ }, /*#__PURE__*/_react.default.createElement(_Person.default, {
28
+ fontSize: "large"
29
+ })))), /*#__PURE__*/_react.default.createElement(_CardElements.CardContent, null, /*#__PURE__*/_react.default.createElement(_material.Typography, {
30
+ variant: "body1",
31
+ color: "textSecondary",
32
+ component: "div"
33
+ }, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
34
+ variant: "text",
35
+ height: 72
36
+ }))));
37
+ }
38
+ var _default = exports.default = LoadingCard;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.props = exports.default = exports.Default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _LoadingCard = _interopRequireDefault(require("./LoadingCard"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const Template = args => /*#__PURE__*/_react.default.createElement(_LoadingCard.default, args);
11
+ var _default = exports.default = {
12
+ title: "Cards/LoadingCard",
13
+ excludeStories: ["props", "image"],
14
+ component: _LoadingCard.default
15
+ };
16
+ const props = exports.props = {
17
+ image: ""
18
+ };
19
+ const Default = exports.Default = Template.bind({});
20
+ Default.args = {
21
+ ...props
22
+ };
23
+ Default.storyName = "default";
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = RecordingCard;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
9
+ var _Avatar = _interopRequireDefault(require("@mui/material/Avatar"));
10
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
11
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
+ var _material = require("@mui/material");
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function RecordingCard({
16
+ recordingsListData = {},
17
+ handleView = () => {},
18
+ handleViewFeedback = () => {},
19
+ userData = {},
20
+ t = x => x
21
+ }) {
22
+ const selectedMembers = userData?.filter(o1 => [recordingsListData?.userIds].flat().some(o2 => o1?.memberId === o2));
23
+ function formatDateToMMDDYYYY(isoTimestamp) {
24
+ const date = new Date(isoTimestamp);
25
+ const month = String(date.getMonth() + 1).padStart(2, "0");
26
+ const day = String(date.getDate()).padStart(2, "0");
27
+ const year = date.getFullYear();
28
+ return `${month}/${day}/${year}`;
29
+ }
30
+ function formatDateTime(isoTimestamp) {
31
+ const date = new Date(isoTimestamp);
32
+ const hours = date.getHours();
33
+ const minutes = String(date.getMinutes()).padStart(2, "0");
34
+ const period = hours >= 12 ? "PM" : "AM";
35
+ const formattedHours = (hours % 12 === 0 ? 12 : hours % 12).toString().padStart(2, "0");
36
+ return `${formattedHours}:${minutes} ${period}`;
37
+ }
38
+ const attendedMembers = selectedMembers.filter(attendee => recordingsListData?.joinedMembers?.includes(attendee?.memberId));
39
+ const notAttendedMembers = selectedMembers.filter(attendee => !recordingsListData?.joinedMembers?.includes(attendee?.memberId));
40
+ return /*#__PURE__*/_react.default.createElement(_material.Card, {
41
+ sx: {
42
+ display: "flex",
43
+ marginBottom: 2,
44
+ boxShadow: 3
45
+ }
46
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
47
+ container: true,
48
+ alignItems: "center"
49
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
50
+ item: true,
51
+ xs: 8
52
+ }, /*#__PURE__*/_react.default.createElement(_material.CardContent, null, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Box.default, {
53
+ sx: {
54
+ display: "flex",
55
+ alignItems: "center"
56
+ }
57
+ }, /*#__PURE__*/_react.default.createElement(_material.Stack, {
58
+ direction: "row",
59
+ spacing: 2
60
+ }, attendedMembers.map(attendee => /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
61
+ title: `${attendee?.username} - Present`,
62
+ key: attendee?.memberId
63
+ }, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
64
+ alt: attendee?.username,
65
+ src: attendee?.userImage
66
+ })))), notAttendedMembers.length > 0 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Divider, {
67
+ orientation: "vertical",
68
+ flexItem: true,
69
+ sx: {
70
+ marginLeft: 2,
71
+ marginRight: 2
72
+ }
73
+ }), /*#__PURE__*/_react.default.createElement(_material.Stack, {
74
+ direction: "row",
75
+ spacing: 2
76
+ }, notAttendedMembers.map(attendee => /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
77
+ title: `${attendee?.username} - Not Present`,
78
+ key: attendee?.memberId
79
+ }, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
80
+ alt: attendee?.username,
81
+ src: attendee?.userImage,
82
+ sx: {
83
+ filter: "grayscale(100%)"
84
+ }
85
+ })))))), /*#__PURE__*/_react.default.createElement(_Box.default, {
86
+ sx: {
87
+ paddingTop: 1
88
+ }
89
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
90
+ fontWeight: "bold"
91
+ }, recordingsListData.meetingTopic)), /*#__PURE__*/_react.default.createElement(_Box.default, {
92
+ sx: {
93
+ paddingTop: 1
94
+ }
95
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
96
+ sx: {
97
+ whiteSpace: "nowrap",
98
+ overflow: "hidden",
99
+ textOverflow: "ellipsis",
100
+ width: "100%"
101
+ }
102
+ }, recordingsListData.meetingPrompt)), /*#__PURE__*/_react.default.createElement(_Typography.default, null, formatDateToMMDDYYYY(recordingsListData.timestamp), " \u2022", " ", formatDateTime(recordingsListData.timestamp))))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
103
+ item: true,
104
+ xs: 2,
105
+ sx: {
106
+ display: "flex",
107
+ justifyContent: "center"
108
+ }
109
+ }, /*#__PURE__*/_react.default.createElement(_material.CardActions, null, recordingsListData?.gradingOption && /*#__PURE__*/_react.default.createElement(_material.Button, {
110
+ color: "primary",
111
+ onClick: handleViewFeedback,
112
+ "aria-label": `Feedback, Recorded Discussion: ${recordingsListData.meetingTopic}`
113
+ }, t("feedback")))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
114
+ item: true,
115
+ xs: 2,
116
+ sx: {
117
+ display: "flex",
118
+ justifyContent: "center",
119
+ width: "20px",
120
+ textOverflow: "ellipsis"
121
+ }
122
+ }, /*#__PURE__*/_react.default.createElement(_material.CardActions, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
123
+ color: "primary",
124
+ onClick: handleView,
125
+ "aria-label": `View, Recorded Discussion: ${recordingsListData.meetingTopic}`
126
+ }, t("view"))))));
127
+ }
128
+ RecordingCard.propTypes = {
129
+ recordingFeedback: _propTypes.default.object,
130
+ recordingsListData: _propTypes.default.object,
131
+ userData: _propTypes.default.object,
132
+ handleView: _propTypes.default.func,
133
+ t: _propTypes.default.func,
134
+ handleViewFeedback: _propTypes.default.func
135
+ };
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.props = exports.default = exports.Loading = exports.Default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _RecordingCard = _interopRequireDefault(require("./RecordingCard"));
9
+ var _aaronSquare = _interopRequireDefault(require("../../img/aaron-square.jpg"));
10
+ var _test = _interopRequireDefault(require("../../../videos/test1.mp4"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const Template = args => /*#__PURE__*/_react.default.createElement(_RecordingCard.default, args);
13
+ const props = exports.props = {
14
+ handleSubmit: () => {},
15
+ userData: [{
16
+ memberId: "1",
17
+ username: "Aaron",
18
+ userImage: _aaronSquare.default
19
+ }, {
20
+ memberId: "2",
21
+ username: "Connor",
22
+ userImage: _aaronSquare.default
23
+ }, {
24
+ memberId: "3",
25
+ username: "Stephen",
26
+ userImage: _aaronSquare.default
27
+ }, {
28
+ memberId: "4",
29
+ username: "John",
30
+ userImage: _aaronSquare.default
31
+ }],
32
+ recordingsListData: {
33
+ meetingTopic: "Going to the beach",
34
+ gradingOption: "Individual Grade",
35
+ meetingPrompt: "talk about your adventures on the beach qwe qwe qwe qwe sdf th qw",
36
+ emails: ["aaron.cullen@fathomtech.io", "connor.cawley@fathomtech.io", "stephen.kelly@fathomtech.io", "stephen.kelly@fathomtech.io", "stephen.kelly@fathomtech.io", "stephen.kelly@fathomtech.io", "stephen.kelly@fathomtech.io"],
37
+ meetingID: "12345678abcdefgh",
38
+ videoUrl: _test.default,
39
+ feedbackPerformance: "Novice Low",
40
+ feedbackText: "Well done, great use of vocabulary",
41
+ timestamp: "2023-08-18T13:15:56.511Z",
42
+ meetingMembers: ["1", "2", "3", "4"],
43
+ attendees: [{
44
+ name: "Aaron",
45
+ image: _aaronSquare.default
46
+ }, {
47
+ name: "Connor",
48
+ image: _aaronSquare.default
49
+ }, {
50
+ name: "Stephen",
51
+ image: _aaronSquare.default
52
+ }, {
53
+ name: "John",
54
+ image: _aaronSquare.default
55
+ }]
56
+ }
57
+ };
58
+ var _default = exports.default = {
59
+ title: "Cards/RecordingCard",
60
+ excludeStories: ["props"],
61
+ component: _RecordingCard.default
62
+ };
63
+ const Default = exports.Default = Template.bind({});
64
+ Default.args = {
65
+ ...props,
66
+ loading: false
67
+ };
68
+ Default.storyName = "default";
69
+ const Loading = exports.Loading = Template.bind({});
70
+ Loading.args = {
71
+ ...props,
72
+ loading: true
73
+ };
74
+ Loading.storyName = "loading";
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ScheduleCard;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
9
+ var _Avatar = _interopRequireDefault(require("@mui/material/Avatar"));
10
+ var _AvatarGroup = _interopRequireDefault(require("@mui/material/AvatarGroup"));
11
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
+ var _material = require("@mui/material");
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function ScheduleCard({
16
+ t = x => x,
17
+ scheduleListData = {},
18
+ handleJoin = () => {},
19
+ futureMeeting = {},
20
+ userData = [],
21
+ teacherView = false
22
+ }) {
23
+ const selectedMembers = userData.filter(o1 => [scheduleListData?.meetingMembers].flat().some(o2 => o1?.memberId === o2));
24
+ return /*#__PURE__*/_react.default.createElement(_material.Card, {
25
+ sx: {
26
+ display: "flex",
27
+ marginBottom: 2,
28
+ boxShadow: 3
29
+ }
30
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
31
+ container: true,
32
+ alignItems: "center"
33
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
34
+ item: true,
35
+ xs: 10
36
+ }, /*#__PURE__*/_react.default.createElement(_material.CardContent, null, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Box.default, {
37
+ sx: {
38
+ justifyContent: "flex-end"
39
+ }
40
+ }, /*#__PURE__*/_react.default.createElement(_AvatarGroup.default, {
41
+ spacing: -3,
42
+ max: 4,
43
+ sx: {
44
+ justifyContent: "flex-end"
45
+ }
46
+ }, selectedMembers?.map(attendee => /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
47
+ title: attendee?.username,
48
+ key: attendee?.memberId
49
+ }, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
50
+ alt: attendee?.username,
51
+ src: attendee?.userImage,
52
+ key: attendee?.memberId
53
+ }))))), /*#__PURE__*/_react.default.createElement(_Box.default, {
54
+ sx: {
55
+ paddingTop: 1
56
+ }
57
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
58
+ fontWeight: "bold"
59
+ }, scheduleListData.meetingTopic)), /*#__PURE__*/_react.default.createElement(_Box.default, {
60
+ sx: {
61
+ paddingTop: 1
62
+ }
63
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
64
+ sx: {
65
+ whiteSpace: "nowrap",
66
+ overflow: "hidden",
67
+ textOverflow: "ellipsis",
68
+ width: "100%"
69
+ }
70
+ }, scheduleListData.meetingPrompt)), /*#__PURE__*/_react.default.createElement(_Typography.default, null, scheduleListData.meetingDate, " \u2022 ", scheduleListData.meetingTime)))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
71
+ item: true,
72
+ xs: 1,
73
+ sx: {
74
+ display: "flex",
75
+ justifyContent: "center"
76
+ }
77
+ }, futureMeeting ? /*#__PURE__*/_react.default.createElement(_material.CardActions, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
78
+ "aria-label": teacherView ? `View, Scheduled Discussion: ${scheduleListData.meetingTopic}` : `Start, Schedules Discussion: ${scheduleListData.meetingTopic}`,
79
+ color: "primary",
80
+ onClick: handleJoin
81
+ }, teacherView ? t("view") : t("start"))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null))));
82
+ }
83
+ ScheduleCard.propTypes = {
84
+ scheduleListData: _propTypes.default.object,
85
+ userData: _propTypes.default.object,
86
+ handleJoin: _propTypes.default.func,
87
+ futureMeeting: _propTypes.default.object,
88
+ // handleRemoveDiscussion: PropTypes.func,
89
+ t: _propTypes.default.func,
90
+ teacherView: _propTypes.default.bool
91
+ };
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.props = exports.default = exports.Loading = exports.Default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _ScheduleCard = _interopRequireDefault(require("./ScheduleCard"));
9
+ var _aaronSquare = _interopRequireDefault(require("../../img/aaron-square.jpg"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const Template = args => /*#__PURE__*/_react.default.createElement(_ScheduleCard.default, args);
12
+ const props = exports.props = {
13
+ t: string => string,
14
+ handleSubmit: () => {},
15
+ userData: [{
16
+ memberId: "1",
17
+ username: "Aaron",
18
+ userImage: _aaronSquare.default
19
+ }, {
20
+ memberId: "2",
21
+ username: "Connor",
22
+ userImage: _aaronSquare.default
23
+ }, {
24
+ memberId: "3",
25
+ username: "Stephen",
26
+ userImage: _aaronSquare.default
27
+ }, {
28
+ memberId: "4",
29
+ username: "John",
30
+ userImage: _aaronSquare.default
31
+ }],
32
+ scheduleListData: {
33
+ meetingTopic: "Going to the beach",
34
+ meetingPrompt: "Tell me about your trip on the beach",
35
+ meetingDate: "09-26-2023",
36
+ meetingTime: "15:30",
37
+ emails: ["aaron.cullen@fathomtech.io", "connor.cawley@fathomtech.io", "stephen.kelly@fathomtech.io"],
38
+ meetingMembers: ["1", "2", "3", "4"],
39
+ timeLimit: "2 Minutes",
40
+ scheduleOption: "True",
41
+ chatOption: "False"
42
+ }
43
+ };
44
+ var _default = exports.default = {
45
+ title: "Cards/ScheduleCard",
46
+ excludeStories: ["props"],
47
+ component: _ScheduleCard.default
48
+ };
49
+ const Default = exports.Default = Template.bind({});
50
+ Default.args = {
51
+ ...props,
52
+ loading: false
53
+ };
54
+ Default.storyName = "default";
55
+ const Loading = exports.Loading = Template.bind({});
56
+ Loading.args = {
57
+ ...props,
58
+ loading: true
59
+ };
60
+ Loading.storyName = "loading";