@selfcommunity/react-ui 0.10.2-courses.149 → 0.10.2-courses.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/Course/Course.js +1 -9
- package/lib/cjs/components/CourseDashboard/Student.js +3 -3
- package/lib/cjs/components/CourseJoinButton/CourseJoinButton.js +1 -1
- package/lib/esm/components/Course/Course.js +1 -9
- package/lib/esm/components/CourseDashboard/Student.js +3 -3
- package/lib/esm/components/CourseJoinButton/CourseJoinButton.js +1 -1
- package/lib/umd/react-ui.js +1 -1
- package/package.json +8 -8
|
@@ -17,7 +17,6 @@ const constants_1 = require("./constants");
|
|
|
17
17
|
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
18
18
|
const BaseItem_1 = tslib_1.__importDefault(require("../../shared/BaseItem"));
|
|
19
19
|
const course_2 = require("../../utils/course");
|
|
20
|
-
const CourseJoinButton_1 = tslib_1.__importDefault(require("../CourseJoinButton"));
|
|
21
20
|
const classes = {
|
|
22
21
|
root: `${constants_1.PREFIX}-root`,
|
|
23
22
|
chip: `${constants_1.PREFIX}-chip`,
|
|
@@ -117,13 +116,6 @@ function Course(inProps) {
|
|
|
117
116
|
// CONTEXT
|
|
118
117
|
const scRoutingContext = (0, react_core_1.useSCRouting)();
|
|
119
118
|
const isCourseAdmin = (0, react_1.useMemo)(() => scCourse && (scCourse.join_status === types_1.SCCourseJoinStatusType.CREATOR || scCourse.join_status === types_1.SCCourseJoinStatusType.MANAGER), [scCourse]);
|
|
120
|
-
//HANDLERS
|
|
121
|
-
/**
|
|
122
|
-
* Handles callback join course
|
|
123
|
-
*/
|
|
124
|
-
const handleJoinCourse = (course, status) => {
|
|
125
|
-
setSCCourse(Object.assign(Object.assign({}, course), { join_status: status }));
|
|
126
|
-
};
|
|
127
119
|
/**
|
|
128
120
|
* Renders course object
|
|
129
121
|
*/
|
|
@@ -162,7 +154,7 @@ function Course(inProps) {
|
|
|
162
154
|
? 'primary'
|
|
163
155
|
: isCourseAdmin && !scCourse.privacy
|
|
164
156
|
? 'default'
|
|
165
|
-
: 'secondary', label: chipLabel, className: classes.chip })), (0, jsx_runtime_1.jsx)(material_1.Avatar, { alt: scCourse.name, src: scCourse.created_by.avatar, className: classes.previewAvatar })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.previewContent }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body2", className: classes.previewCreator }, { children: scCourse.created_by.username })), (0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.COURSE_ROUTE_NAME, scCourse), className: classes.previewNameWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6", className: classes.previewName }, { children: scCourse.name })) })), (0, jsx_runtime_1.jsxs)(material_1.Typography, Object.assign({ className: classes.previewInfo }, { children: [(0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft', defaultMessage: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft' }), "-", (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.course.type.${scCourse.type}`, defaultMessage: `ui.course.type.${scCourse.type}` })] })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.previewCategory }, { children: scCourse.categories.map((category) => ((0, jsx_runtime_1.jsx)(material_1.Chip, { size: "small", label: category.name }, category.id))) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.previewProgress }, { children: renderProgress() }))] })), actions !== null && actions !== void 0 ? actions : ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.previewActions }, { children:
|
|
157
|
+
: 'secondary', label: chipLabel, className: classes.chip })), (0, jsx_runtime_1.jsx)(material_1.Avatar, { alt: scCourse.name, src: scCourse.created_by.avatar, className: classes.previewAvatar })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.previewContent }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body2", className: classes.previewCreator }, { children: scCourse.created_by.username })), (0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.COURSE_ROUTE_NAME, scCourse), className: classes.previewNameWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6", className: classes.previewName }, { children: scCourse.name })) })), (0, jsx_runtime_1.jsxs)(material_1.Typography, Object.assign({ className: classes.previewInfo }, { children: [(0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft', defaultMessage: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft' }), "-", (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.course.type.${scCourse.type}`, defaultMessage: `ui.course.type.${scCourse.type}` })] })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.previewCategory }, { children: scCourse.categories.map((category) => ((0, jsx_runtime_1.jsx)(material_1.Chip, { size: "small", label: category.name }, category.id))) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.previewProgress }, { children: renderProgress() }))] })), actions !== null && actions !== void 0 ? actions : ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.previewActions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "outlined", size: "small", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.COURSE_ROUTE_NAME, scCourse) }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.course.see.preview", id: "ui.course.see.preview" }) })) })))] })));
|
|
166
158
|
}
|
|
167
159
|
else {
|
|
168
160
|
contentObj = ((0, jsx_runtime_1.jsx)(SnippetRoot, { elevation: 0, className: classes.snippetRoot, image: (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.snippetImage }, { children: [(0, jsx_runtime_1.jsx)(material_1.Avatar, { variant: "square", alt: scCourse.name, src: scCourse.image_medium, className: classes.snippetAvatar }), (isCourseAdmin || (0, course_2.isCourseCompleted)(scCourse) || (0, course_2.isCourseNew)(scCourse)) && ((0, jsx_runtime_1.jsx)(material_1.Chip, { size: "small", component: "div", color: (0, course_2.isCourseCompleted)(scCourse) || (isCourseAdmin && scCourse.privacy)
|
|
@@ -59,10 +59,10 @@ function getUrlNextLesson(course) {
|
|
|
59
59
|
return data;
|
|
60
60
|
}
|
|
61
61
|
function getIsNextLessonLocked(course) {
|
|
62
|
-
return course.sections.
|
|
63
|
-
var _a;
|
|
62
|
+
return course.sections.every((section) => {
|
|
63
|
+
var _a, _b;
|
|
64
64
|
return (section.num_lessons_completed < section.num_lessons &&
|
|
65
|
-
((_a = section.lessons.find((lesson) => lesson.completion_status === types_1.SCCourseLessonCompletionStatusType.UNCOMPLETED)) === null ||
|
|
65
|
+
((_b = (_a = section.lessons) === null || _a === void 0 ? void 0 : _a.find((lesson) => lesson.completion_status === types_1.SCCourseLessonCompletionStatusType.UNCOMPLETED)) === null || _b === void 0 ? void 0 : _b.locked));
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
const Root = (0, material_1.styled)(material_1.Box, {
|
|
@@ -65,7 +65,7 @@ function CourseJoinButton(inProps) {
|
|
|
65
65
|
course,
|
|
66
66
|
cacheStrategy: authUserId ? utils_1.CacheStrategies.CACHE_FIRST : utils_1.CacheStrategies.STALE_WHILE_REVALIDATE
|
|
67
67
|
});
|
|
68
|
-
const isCourseAdmin = (0, react_1.useMemo)(() => scCourse &&
|
|
68
|
+
const isCourseAdmin = (0, react_1.useMemo)(() => scCourse && scCourse.join_status === types_1.SCCourseJoinStatusType.CREATOR, [scCourse]);
|
|
69
69
|
(0, react_1.useEffect)(() => {
|
|
70
70
|
/**
|
|
71
71
|
* Call scCoursesManager.joinStatus inside an effect
|
|
@@ -15,7 +15,6 @@ import { PREFIX } from './constants';
|
|
|
15
15
|
import CourseSkeleton from './Skeleton';
|
|
16
16
|
import BaseItem from '../../shared/BaseItem';
|
|
17
17
|
import { isCourseCompleted, isCourseNew } from '../../utils/course';
|
|
18
|
-
import CourseJoinButton from '../CourseJoinButton';
|
|
19
18
|
const classes = {
|
|
20
19
|
root: `${PREFIX}-root`,
|
|
21
20
|
chip: `${PREFIX}-chip`,
|
|
@@ -115,13 +114,6 @@ export default function Course(inProps) {
|
|
|
115
114
|
// CONTEXT
|
|
116
115
|
const scRoutingContext = useSCRouting();
|
|
117
116
|
const isCourseAdmin = useMemo(() => scCourse && (scCourse.join_status === SCCourseJoinStatusType.CREATOR || scCourse.join_status === SCCourseJoinStatusType.MANAGER), [scCourse]);
|
|
118
|
-
//HANDLERS
|
|
119
|
-
/**
|
|
120
|
-
* Handles callback join course
|
|
121
|
-
*/
|
|
122
|
-
const handleJoinCourse = (course, status) => {
|
|
123
|
-
setSCCourse(Object.assign(Object.assign({}, course), { join_status: status }));
|
|
124
|
-
};
|
|
125
117
|
/**
|
|
126
118
|
* Renders course object
|
|
127
119
|
*/
|
|
@@ -160,7 +152,7 @@ export default function Course(inProps) {
|
|
|
160
152
|
? 'primary'
|
|
161
153
|
: isCourseAdmin && !scCourse.privacy
|
|
162
154
|
? 'default'
|
|
163
|
-
: 'secondary', label: chipLabel, className: classes.chip })), _jsx(Avatar, { alt: scCourse.name, src: scCourse.created_by.avatar, className: classes.previewAvatar })] })), _jsxs(CardContent, Object.assign({ className: classes.previewContent }, { children: [_jsx(Typography, Object.assign({ variant: "body2", className: classes.previewCreator }, { children: scCourse.created_by.username })), _jsx(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.COURSE_ROUTE_NAME, scCourse), className: classes.previewNameWrapper }, { children: _jsx(Typography, Object.assign({ variant: "h6", className: classes.previewName }, { children: scCourse.name })) })), _jsxs(Typography, Object.assign({ className: classes.previewInfo }, { children: [_jsx(FormattedMessage, { id: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft', defaultMessage: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft' }), "-", _jsx(FormattedMessage, { id: `ui.course.type.${scCourse.type}`, defaultMessage: `ui.course.type.${scCourse.type}` })] })), _jsx(Box, Object.assign({ className: classes.previewCategory }, { children: scCourse.categories.map((category) => (_jsx(Chip, { size: "small", label: category.name }, category.id))) })), _jsx(Box, Object.assign({ className: classes.previewProgress }, { children: renderProgress() }))] })), actions !== null && actions !== void 0 ? actions : (_jsx(CardActions, Object.assign({ className: classes.previewActions }, { children:
|
|
155
|
+
: 'secondary', label: chipLabel, className: classes.chip })), _jsx(Avatar, { alt: scCourse.name, src: scCourse.created_by.avatar, className: classes.previewAvatar })] })), _jsxs(CardContent, Object.assign({ className: classes.previewContent }, { children: [_jsx(Typography, Object.assign({ variant: "body2", className: classes.previewCreator }, { children: scCourse.created_by.username })), _jsx(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.COURSE_ROUTE_NAME, scCourse), className: classes.previewNameWrapper }, { children: _jsx(Typography, Object.assign({ variant: "h6", className: classes.previewName }, { children: scCourse.name })) })), _jsxs(Typography, Object.assign({ className: classes.previewInfo }, { children: [_jsx(FormattedMessage, { id: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft', defaultMessage: scCourse.privacy ? `ui.course.privacy.${scCourse.privacy}` : 'ui.course.privacy.draft' }), "-", _jsx(FormattedMessage, { id: `ui.course.type.${scCourse.type}`, defaultMessage: `ui.course.type.${scCourse.type}` })] })), _jsx(Box, Object.assign({ className: classes.previewCategory }, { children: scCourse.categories.map((category) => (_jsx(Chip, { size: "small", label: category.name }, category.id))) })), _jsx(Box, Object.assign({ className: classes.previewProgress }, { children: renderProgress() }))] })), actions !== null && actions !== void 0 ? actions : (_jsx(CardActions, Object.assign({ className: classes.previewActions }, { children: _jsx(Button, Object.assign({ variant: "outlined", size: "small", component: Link, to: scRoutingContext.url(SCRoutes.COURSE_ROUTE_NAME, scCourse) }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.course.see.preview", id: "ui.course.see.preview" }) })) })))] })));
|
|
164
156
|
}
|
|
165
157
|
else {
|
|
166
158
|
contentObj = (_jsx(SnippetRoot, { elevation: 0, className: classes.snippetRoot, image: _jsxs(Box, Object.assign({ className: classes.snippetImage }, { children: [_jsx(Avatar, { variant: "square", alt: scCourse.name, src: scCourse.image_medium, className: classes.snippetAvatar }), (isCourseAdmin || isCourseCompleted(scCourse) || isCourseNew(scCourse)) && (_jsx(Chip, { size: "small", component: "div", color: isCourseCompleted(scCourse) || (isCourseAdmin && scCourse.privacy)
|
|
@@ -57,10 +57,10 @@ function getUrlNextLesson(course) {
|
|
|
57
57
|
return data;
|
|
58
58
|
}
|
|
59
59
|
function getIsNextLessonLocked(course) {
|
|
60
|
-
return course.sections.
|
|
61
|
-
var _a;
|
|
60
|
+
return course.sections.every((section) => {
|
|
61
|
+
var _a, _b;
|
|
62
62
|
return (section.num_lessons_completed < section.num_lessons &&
|
|
63
|
-
((_a = section.lessons.find((lesson) => lesson.completion_status === SCCourseLessonCompletionStatusType.UNCOMPLETED)) === null ||
|
|
63
|
+
((_b = (_a = section.lessons) === null || _a === void 0 ? void 0 : _a.find((lesson) => lesson.completion_status === SCCourseLessonCompletionStatusType.UNCOMPLETED)) === null || _b === void 0 ? void 0 : _b.locked));
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
const Root = styled(Box, {
|
|
@@ -63,7 +63,7 @@ export default function CourseJoinButton(inProps) {
|
|
|
63
63
|
course,
|
|
64
64
|
cacheStrategy: authUserId ? CacheStrategies.CACHE_FIRST : CacheStrategies.STALE_WHILE_REVALIDATE
|
|
65
65
|
});
|
|
66
|
-
const isCourseAdmin = useMemo(() => scCourse &&
|
|
66
|
+
const isCourseAdmin = useMemo(() => scCourse && scCourse.join_status === SCCourseJoinStatusType.CREATOR, [scCourse]);
|
|
67
67
|
useEffect(() => {
|
|
68
68
|
/**
|
|
69
69
|
* Call scCoursesManager.joinStatus inside an effect
|