UNPKG

@selfcommunity/react-ui

Version:

React UI Components to integrate a Community created with SelfCommunity Platform.

63 lines (62 loc) 4.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const material_1 = require("@mui/material"); const constants_1 = require("./constants"); const Header_1 = tslib_1.__importDefault(require("./Header")); const react_1 = require("react"); const types_1 = require("./types"); const classnames_1 = tslib_1.__importDefault(require("classnames")); const react_intl_1 = require("react-intl"); const Info_1 = tslib_1.__importDefault(require("./Teacher/Info")); const lab_1 = require("@mui/lab"); const Students_1 = tslib_1.__importDefault(require("./Teacher/Students")); const Comments_1 = tslib_1.__importDefault(require("./Teacher/Comments")); const react_core_1 = require("@selfcommunity/react-core"); const api_services_1 = require("@selfcommunity/api-services"); const Skeleton_1 = tslib_1.__importDefault(require("./Teacher/Skeleton")); const classes = { root: `${constants_1.PREFIX}-root`, infoWrapper: `${constants_1.PREFIX}-info-wrapper`, tabList: `${constants_1.PREFIX}-tab-list`, tab: `${constants_1.PREFIX}-tab`, tabPanel: `${constants_1.PREFIX}-tab-panel`, contrastColor: `${constants_1.PREFIX}-contrast-color` }; const TAB_DATA = [ { label: 'ui.course.dashboard.teacher.tab.students', value: types_1.TabContentType.STUDENTS }, { label: 'ui.course.dashboard.teacher.tab.comments', value: types_1.TabContentType.COMMENTS } ]; const Root = (0, material_1.styled)(material_1.Box, { name: constants_1.PREFIX, slot: 'Root', overridesResolver: (_props, styles) => styles.root })(() => ({})); function Teacher(inProps) { // PROPS const props = (0, material_1.useThemeProps)({ props: inProps, name: constants_1.PREFIX }); const { courseId, course, className } = props, rest = tslib_1.__rest(props, ["courseId", "course", "className"]); // STATES const [tabValue, setTabValue] = (0, react_1.useState)(types_1.TabContentType.STUDENTS); // HOOKS const { scCourse } = (0, react_core_1.useSCFetchCourse)({ id: courseId, course, params: { view: api_services_1.CourseInfoViewType.DASHBOARD } }); // HANDLERS const handleTabChange = (0, react_1.useCallback)((_evt, newTabValue) => { setTabValue(newTabValue); }, [setTabValue]); if (!scCourse) { return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {}); } return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: [(0, jsx_runtime_1.jsx)(Header_1.default, { course: scCourse, hasAction: true }), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ className: classes.infoWrapper }, { children: [(0, jsx_runtime_1.jsx)(Info_1.default, { title: "ui.course.dashboard.teacher.info.students", course: scCourse, position: types_1.InfoPositionType.FIRST }), (0, jsx_runtime_1.jsx)(Info_1.default, { title: "ui.course.dashboard.teacher.info.completion", course: scCourse, position: types_1.InfoPositionType.SECOND })] })), (0, jsx_runtime_1.jsxs)(lab_1.TabContext, Object.assign({ value: tabValue }, { children: [(0, jsx_runtime_1.jsx)(lab_1.TabList, Object.assign({ className: classes.tabList, onChange: handleTabChange, textColor: "primary", indicatorColor: "primary", variant: "standard", centered: true }, { children: TAB_DATA.map((data, i) => ((0, jsx_runtime_1.jsx)(material_1.Tab, { label: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: data.label, defaultMessage: data.label }) })), value: data.value, className: (0, classnames_1.default)(classes.tab, classes.contrastColor) }, i))) })), (0, jsx_runtime_1.jsx)(lab_1.TabPanel, Object.assign({ className: classes.tabPanel, value: types_1.TabContentType.STUDENTS }, { children: (0, jsx_runtime_1.jsx)(Students_1.default, { course: scCourse }) })), (0, jsx_runtime_1.jsx)(lab_1.TabPanel, Object.assign({ className: classes.tabPanel, value: types_1.TabContentType.COMMENTS }, { children: (0, jsx_runtime_1.jsx)(Comments_1.default, { course: scCourse }) }))] }))] }))); } exports.default = (0, react_1.memo)(Teacher);