touchstudy-core 0.1.163 → 0.1.165

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.
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ declare type Props = {
3
+ openDialog: boolean;
4
+ onClose: () => void;
5
+ initialValues: any;
6
+ handleCreateQuestion: any;
7
+ options: any[];
8
+ schema: any;
9
+ labelQuestion?: string;
10
+ nameQuestion: string;
11
+ labelContent?: string;
12
+ nameContent: string;
13
+ };
14
+ export default function CommonCreateNewQuestionDialog({ handleCreateQuestion, openDialog, initialValues, onClose, options, schema, labelQuestion, nameQuestion, labelContent, nameContent }: Props): React.JSX.Element;
15
+ export {};
@@ -10,6 +10,7 @@ export declare const getClassByIdApi: (id: number) => Promise<import("axios").Ax
10
10
  export declare const createClassApi: (model: ClassRequestBody) => Promise<import("axios").AxiosResponse<any, any>>;
11
11
  export declare const updateClassApi: (id: number, model: ClassRequestBody) => Promise<import("axios").AxiosResponse<any, any>>;
12
12
  export declare const deleteClassApi: (id: number) => Promise<import("axios").AxiosResponse<any, any>>;
13
+ export declare const hiddenClassesApi: (hidden: boolean, classId: number) => Promise<import("axios").AxiosResponse<any, any>>;
13
14
  export declare const addStudentToClass: (id: number, studentIds: number[]) => Promise<import("axios").AxiosResponse<any, any>>;
14
15
  export declare const removeStudentFromClass: (id: number, studentId: number) => Promise<import("axios").AxiosResponse<any, any>>;
15
16
  export declare const addTeacherToClass: (id: number, teacherIds: number[]) => Promise<import("axios").AxiosResponse<any, any>>;
@@ -8,6 +8,7 @@ export declare type ClassResponse = {
8
8
  totalLessons: number;
9
9
  mainTeacherId: number;
10
10
  courseWeeklyDays: WeeklyDayResponse[];
11
+ hidden: boolean;
11
12
  };
12
13
  export declare type StudentClassResponse = {
13
14
  id?: number;
@@ -16,5 +16,6 @@ declare const useClassList: (history: any, classCreateUrl?: string | undefined,
16
16
  handleUpdateClass: (value: ClassResponse) => void;
17
17
  handleChangePage: (_: any, page: number) => void;
18
18
  handleDeleteClass: () => Promise<void>;
19
+ handleToggleHidden: (e: ChangeEvent<HTMLInputElement>, classId: number) => Promise<void>;
19
20
  };
20
21
  export default useClassList;
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import "@wiris/mathtype-tinymce6";
3
+ declare type Props = {
4
+ config?: any;
5
+ initValue: string;
6
+ onChange: any;
7
+ disabled?: boolean;
8
+ };
9
+ declare const NoteTinyEditor: ({ disabled, onChange, initValue, config }: Props) => React.JSX.Element;
10
+ export default NoteTinyEditor;
@@ -23,6 +23,7 @@ export interface ExamNoteDialogProps {
23
23
  onSaveNote: (content: string, questionId: number) => void;
24
24
  }
25
25
  export interface ClassNoteDialogProps {
26
+ id?: string;
26
27
  open: boolean;
27
28
  tip?: string;
28
29
  studentName?: string;
package/dist/index.js CHANGED
@@ -1502,6 +1502,7 @@ var addedteachertoclass = "교사 수업 추가";
1502
1502
  var removedteacherfromclass = "교사 수업 제거";
1503
1503
  var addedstudenttoclass = "학생 수업 추가";
1504
1504
  var removedstudentfromclass = "학생 수업 제거";
1505
+ var hidden = "숨겨진";
1505
1506
  var lang_ko = {
1506
1507
  problem_solving: problem_solving,
1507
1508
  my_story: my_story,
@@ -2641,7 +2642,8 @@ var lang_ko = {
2641
2642
  addedteachertoclass: addedteachertoclass,
2642
2643
  removedteacherfromclass: removedteacherfromclass,
2643
2644
  addedstudenttoclass: addedstudenttoclass,
2644
- removedstudentfromclass: removedstudentfromclass
2645
+ removedstudentfromclass: removedstudentfromclass,
2646
+ hidden: hidden
2645
2647
  };
2646
2648
 
2647
2649
  var problem_solving$1 = "Problem Solving";
@@ -3804,6 +3806,7 @@ var addedteachertoclass$1 = "Added teacher to class";
3804
3806
  var removedteacherfromclass$1 = "Removed teacher from class";
3805
3807
  var addedstudenttoclass$1 = "Added student to class";
3806
3808
  var removedstudentfromclass$1 = "Removed student from class";
3809
+ var hidden$1 = "Hidden";
3807
3810
  var lang_en = {
3808
3811
  problem_solving: problem_solving$1,
3809
3812
  my_story: my_story$1,
@@ -4945,7 +4948,8 @@ var lang_en = {
4945
4948
  addedteachertoclass: addedteachertoclass$1,
4946
4949
  removedteacherfromclass: removedteacherfromclass$1,
4947
4950
  addedstudenttoclass: addedstudenttoclass$1,
4948
- removedstudentfromclass: removedstudentfromclass$1
4951
+ removedstudentfromclass: removedstudentfromclass$1,
4952
+ hidden: hidden$1
4949
4953
  };
4950
4954
 
4951
4955
  i18n__default.use(reactI18next.initReactI18next).init({
@@ -11041,7 +11045,11 @@ var useLoginPhoneNumber = function useLoginPhoneNumber(props) {
11041
11045
  });
11042
11046
  }, function (error) {
11043
11047
  var _error$response, _error$response2, _error$response2$data;
11044
- if ((error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 500 && (error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.title) === "PhoneNumberIsDuplicated") reactToastify.toast.error(t("duplicate_passcode_for_siblings_please_contact_admin_for_assistance"));else reactToastify.toast.error(getErrorMessage(t, error));
11048
+ if ((error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 500 && (error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.title) === "PhoneNumberIsDuplicated") reactToastify.toast.error(t("duplicate_passcode_for_siblings_please_contact_admin_for_assistance"));else {
11049
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
11050
+ localStorage.removeItem(LEARNING_SPACE);
11051
+ reactToastify.toast.error(getErrorMessage(t, error));
11052
+ }
11045
11053
  });
11046
11054
  return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
11047
11055
  } catch (e) {
@@ -11570,7 +11578,8 @@ var useLogin$1 = function useLogin(_ref) {
11570
11578
  }();
11571
11579
  return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
11572
11580
  }, function (error) {
11573
- console.log(error);
11581
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
11582
+ localStorage.removeItem(LEARNING_SPACE);
11574
11583
  reactToastify.toast.error(getErrorMessage(t, error, t("request_login_fail")));
11575
11584
  });
11576
11585
  return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
@@ -11666,6 +11675,7 @@ var useLogiQRCode = function useLogiQRCode(props) {
11666
11675
  error = _useState8[0],
11667
11676
  setError = _useState8[1];
11668
11677
  var firstLoadRef = React.useRef(true);
11678
+ var hasErrorRef = React.useRef(false);
11669
11679
  var onVerify = React.useCallback(function (token) {
11670
11680
  setTokenReCaptcha(token);
11671
11681
  }, []);
@@ -11681,7 +11691,8 @@ var useLogiQRCode = function useLogiQRCode(props) {
11681
11691
  if (!tokenReCaptcha) return Promise.resolve();
11682
11692
  resetData();
11683
11693
  setLoadingQR(true);
11684
- if (!academyDomain) localStorage.setItem(LEARNING_SPACE, "true");
11694
+ if (!academyDomain || hasErrorRef.current) localStorage.setItem(LEARNING_SPACE, "true");
11695
+ if (hasErrorRef.current) localStorage.removeItem(ACADEMY_DOMAIN);
11685
11696
  var _temp = _catch(function () {
11686
11697
  return Promise.resolve(generateQRCode(academyDomain, tokenReCaptcha)).then(function (response) {
11687
11698
  setQrCodeData(response.data);
@@ -11702,6 +11713,7 @@ var useLogiQRCode = function useLogiQRCode(props) {
11702
11713
  setInfo(recievedData === null || recievedData === void 0 ? void 0 : recievedData.data);
11703
11714
  setStatus(QRCodeStatus.Scanned);
11704
11715
  } catch (error) {
11716
+ hasErrorRef.current = true;
11705
11717
  setInvalid(true);
11706
11718
  }
11707
11719
  };
@@ -12007,7 +12019,8 @@ var useLoginWithEmail = function useLoginWithEmail(_ref) {
12007
12019
  }), token, redirectUrl);
12008
12020
  });
12009
12021
  }, function (error) {
12010
- console.log(error);
12022
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
12023
+ localStorage.removeItem(LEARNING_SPACE);
12011
12024
  reactToastify.toast.error(getErrorMessage(t, error, t("request_login_fail")));
12012
12025
  });
12013
12026
  return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
@@ -12127,7 +12140,8 @@ var useLogin$2 = function useLogin(_ref) {
12127
12140
  }), token, redirectUrl);
12128
12141
  });
12129
12142
  }, function (error) {
12130
- console.log(error);
12143
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
12144
+ localStorage.removeItem(LEARNING_SPACE);
12131
12145
  reactToastify.toast.error(getErrorMessage(t, error, t("request_login_fail")));
12132
12146
  }));
12133
12147
  } catch (e) {
@@ -14470,11 +14484,55 @@ var iconCloseDialog = function iconCloseDialog(_ref) {
14470
14484
  }));
14471
14485
  };
14472
14486
 
14487
+ var NoteTinyEditor = function NoteTinyEditor(_ref) {
14488
+ var _ref$disabled = _ref.disabled,
14489
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
14490
+ onChange = _ref.onChange,
14491
+ initValue = _ref.initValue,
14492
+ config = _ref.config;
14493
+ var isFirstChange = React.useRef(true);
14494
+ var _useTranslation = reactI18next.useTranslation(),
14495
+ t = _useTranslation.t;
14496
+ React.useEffect(function () {
14497
+ if (window.tinymce) {
14498
+ window.tinymce = tinymce;
14499
+ }
14500
+ }, []);
14501
+ var options = {
14502
+ height: 280,
14503
+ menubar: false,
14504
+ readonly: false,
14505
+ external_plugins: {
14506
+ tiny_mce_wiris: '/editor/wiris-for-tinymce.js'
14507
+ },
14508
+ plugins: ['anchor', 'autolink', 'charmap', 'codesample', 'emoticons', 'image', 'link', 'lists', 'media', 'searchreplace', 'table', 'textcolor', 'wordcount'],
14509
+ toolbar: 'undo redo | blocks fontfamily fontsize forecolor backcolor | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat | tiny_mce_wiris_formulaEditor | tiny_mce_wiris_formulaEditorChemistry',
14510
+ branding: false,
14511
+ extended_valid_elements: '*[.*]',
14512
+ placeholder: t("the_problem_is_difficult")
14513
+ };
14514
+ var handleChange = function handleChange(value, _) {
14515
+ if (isFirstChange.current) {
14516
+ isFirstChange.current = false;
14517
+ return;
14518
+ }
14519
+ onChange(value);
14520
+ };
14521
+ return React__default.createElement(tinymceReact.Editor, {
14522
+ disabled: disabled,
14523
+ init: config || options,
14524
+ value: initValue,
14525
+ onEditorChange: handleChange
14526
+ });
14527
+ };
14528
+
14473
14529
  var schema$1 = yup.object().shape({
14474
14530
  content: yup.string().required()
14475
14531
  });
14476
14532
  var ClassNoteDialog = function ClassNoteDialog(_ref) {
14477
- var open = _ref.open,
14533
+ var _ref$id = _ref.id,
14534
+ id = _ref$id === void 0 ? "class-note-dialog" : _ref$id,
14535
+ open = _ref.open,
14478
14536
  studentName = _ref.studentName,
14479
14537
  selectedNote = _ref.selectedNote,
14480
14538
  tip = _ref.tip,
@@ -14486,12 +14544,26 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
14486
14544
  var handleSaveNote = function handleSaveNote(content) {
14487
14545
  onSaveNote(content);
14488
14546
  };
14547
+ React.useEffect(function () {
14548
+ if (open) {
14549
+ var _document$getElementB;
14550
+ (_document$getElementB = document.getElementById(id)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.setAttribute("inert", "true");
14551
+ } else {
14552
+ var _document$getElementB2;
14553
+ (_document$getElementB2 = document.getElementById(id)) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.removeAttribute("inert");
14554
+ }
14555
+ return function () {
14556
+ var _document$getElementB3;
14557
+ (_document$getElementB3 = document.getElementById(id)) === null || _document$getElementB3 === void 0 ? void 0 : _document$getElementB3.removeAttribute("inert");
14558
+ };
14559
+ }, [open, id]);
14489
14560
  return React__default.createElement(material.Dialog, {
14490
14561
  onClose: onClose,
14491
14562
  open: open,
14492
14563
  maxWidth: "md",
14493
14564
  scroll: "body",
14494
- fullWidth: true
14565
+ fullWidth: true,
14566
+ id: id
14495
14567
  }, React__default.createElement(DialogTitle, {
14496
14568
  id: "customized-dialog-title"
14497
14569
  }, React__default.createElement(Typography, {
@@ -14520,7 +14592,8 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
14520
14592
  handleSaveNote(values.content);
14521
14593
  }
14522
14594
  }, function (_ref2) {
14523
- var values = _ref2.values;
14595
+ var values = _ref2.values,
14596
+ setFieldValue = _ref2.setFieldValue;
14524
14597
  return React__default.createElement(formik.Form, null, React__default.createElement(DialogContent, {
14525
14598
  sx: {
14526
14599
  padding: 0,
@@ -14549,17 +14622,22 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
14549
14622
  flexDirection: "row",
14550
14623
  alignItems: "center"
14551
14624
  }, React__default.createElement(formik.Field, {
14552
- as: "textarea",
14553
- rows: 3,
14554
14625
  id: "content-question",
14555
14626
  style: {
14556
- paddingRight: "40px",
14557
- minHeight: "96px",
14558
14627
  width: "100%"
14559
14628
  },
14560
14629
  name: "content",
14561
14630
  placeholder: t("the_problem_is_difficult"),
14562
- className: styles["form-control"]
14631
+ className: styles["form-control"],
14632
+ render: function render(_ref3) {
14633
+ var field = _ref3.field;
14634
+ return React__default.createElement(NoteTinyEditor, {
14635
+ initValue: field.value,
14636
+ onChange: function onChange(text) {
14637
+ return setFieldValue("content", text);
14638
+ }
14639
+ });
14640
+ }
14563
14641
  })), React__default.createElement(material.Box, {
14564
14642
  marginBottom: "4px"
14565
14643
  })))), React__default.createElement(DialogActions, {
@@ -15027,6 +15105,12 @@ var NoteItem = function NoteItem(_ref) {
15027
15105
  React.useEffect(function () {
15028
15106
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
15029
15107
  }, []);
15108
+ React.useEffect(function () {
15109
+ if (window.MathJax) {
15110
+ var _window$MathJax;
15111
+ (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
15112
+ }
15113
+ }, [data.content]);
15030
15114
  return React__default.createElement(material.Box, Object.assign({}, NoteItemStyles.root, {
15031
15115
  onClick: handleItemClick,
15032
15116
  sx: {
@@ -15049,7 +15133,18 @@ var NoteItem = function NoteItem(_ref) {
15049
15133
  number: (data.questionOrder || 0) + 1
15050
15134
  }) : "" + utcToLocalTime(data.createdAt, t("date_format") + " HH:mm")), data.examSessionId && React__default.createElement(material.Typography, Object.assign({}, NoteItemStyles.text.right), data.categoryName)), React__default.createElement(material.Typography, Object.assign({
15051
15135
  className: "truncate"
15052
- }, NoteItemStyles.contentText), data.content)), React__default.createElement(material.Box, null, (isAdmin || data.isOwned) && React__default.createElement(material.ClickAwayListener, {
15136
+ }, NoteItemStyles.contentText, {
15137
+ sx: {
15138
+ display: "-webkit-box",
15139
+ lineClamp: 1,
15140
+ WebkitLineClamp: 1,
15141
+ WebkitBoxOrient: "vertical",
15142
+ overflow: "hidden"
15143
+ },
15144
+ dangerouslySetInnerHTML: {
15145
+ __html: data.content || ""
15146
+ }
15147
+ }))), React__default.createElement(material.Box, null, (isAdmin || data.isOwned) && React__default.createElement(material.ClickAwayListener, {
15053
15148
  onClickAway: onClose
15054
15149
  }, React__default.createElement(material.Box, null, React__default.createElement(CustomTooltip, {
15055
15150
  onClose: onClose,
@@ -15129,6 +15224,12 @@ var NoteDrawer = function NoteDrawer(props) {
15129
15224
  var _state$common2;
15130
15225
  return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
15131
15226
  });
15227
+ React.useEffect(function () {
15228
+ if (window.MathJax) {
15229
+ var _window$MathJax;
15230
+ (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
15231
+ }
15232
+ }, [data === null || data === void 0 ? void 0 : data.content]);
15132
15233
  return React__default.createElement(material.Drawer, {
15133
15234
  anchor: anchor,
15134
15235
  open: open,
@@ -15249,8 +15350,11 @@ var NoteDrawer = function NoteDrawer(props) {
15249
15350
  fontSize: "14px",
15250
15351
  fontWeight: "300",
15251
15352
  color: "#414E62"
15353
+ },
15354
+ dangerouslySetInnerHTML: {
15355
+ __html: (data === null || data === void 0 ? void 0 : data.content) || ""
15252
15356
  }
15253
- }, data === null || data === void 0 ? void 0 : data.content)));
15357
+ })));
15254
15358
  };
15255
15359
 
15256
15360
  var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsApi) {
@@ -25547,6 +25651,12 @@ var updateClassApi = function updateClassApi(id, model) {
25547
25651
  var deleteClassApi = function deleteClassApi(id) {
25548
25652
  return api["delete"](CLASS_URL + "/" + id);
25549
25653
  };
25654
+ var hiddenClassesApi = function hiddenClassesApi(hidden, classId) {
25655
+ return api.post(CLASS_URL + "/hidden", {
25656
+ hidden: hidden,
25657
+ courseIds: [classId]
25658
+ });
25659
+ };
25550
25660
  var addStudentToClass = function addStudentToClass(id, studentIds) {
25551
25661
  return api.post(CLASS_URL + "/" + id + "/students", studentIds);
25552
25662
  };
@@ -27080,6 +27190,27 @@ var useClassList = function useClassList(history, classCreateUrl, classUpdateUrl
27080
27190
  var handleUpdateClass = function handleUpdateClass(value) {
27081
27191
  value.id && classUpdateUrl && pushTo(history, "" + classUpdateUrl.replace(":id", "" + value.id));
27082
27192
  };
27193
+ var handleToggleHidden = function handleToggleHidden(e, classId) {
27194
+ try {
27195
+ var _temp5 = function _temp5() {
27196
+ dispatch(setLoading(false));
27197
+ };
27198
+ var checked = e.target.checked;
27199
+ dispatch(setLoading(true));
27200
+ var _temp4 = _catch(function () {
27201
+ return Promise.resolve(hiddenClassesApi(checked, classId)).then(function () {
27202
+ return Promise.resolve(getClassList()).then(function () {
27203
+ reactToastify.toast.success(t("update_data_successfully"));
27204
+ });
27205
+ });
27206
+ }, function (error) {
27207
+ reactToastify.toast.error(getErrorMessage(t, error));
27208
+ });
27209
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
27210
+ } catch (e) {
27211
+ return Promise.reject(e);
27212
+ }
27213
+ };
27083
27214
  var handleChangePage = function handleChangePage(_, page) {
27084
27215
  setClassFilter(_extends({}, classFilter, {
27085
27216
  currentPage: page
@@ -27105,7 +27236,8 @@ var useClassList = function useClassList(history, classCreateUrl, classUpdateUrl
27105
27236
  handleCreateClass: handleCreateClass,
27106
27237
  handleUpdateClass: handleUpdateClass,
27107
27238
  handleChangePage: handleChangePage,
27108
- handleDeleteClass: handleDeleteClass
27239
+ handleDeleteClass: handleDeleteClass,
27240
+ handleToggleHidden: handleToggleHidden
27109
27241
  };
27110
27242
  };
27111
27243
 
@@ -27118,7 +27250,15 @@ var ClassList = function ClassList(_ref) {
27118
27250
  var _state$common, _state$common$user;
27119
27251
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.isSuperAdmin;
27120
27252
  });
27121
- var isAdmin = role === exports.Role.Admin;
27253
+ var isAdmin = reactRedux.useSelector(function (state) {
27254
+ var _state$common2, _state$common2$user, _state$common2$user$r;
27255
+ return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : (_state$common2$user = _state$common2.user) === null || _state$common2$user === void 0 ? void 0 : (_state$common2$user$r = _state$common2$user.roles) === null || _state$common2$user$r === void 0 ? void 0 : _state$common2$user$r.includes(exports.Role.Admin);
27256
+ });
27257
+ var isTeacher = reactRedux.useSelector(function (state) {
27258
+ var _state$common3, _state$common3$user, _state$common3$user$r;
27259
+ return state === null || state === void 0 ? void 0 : (_state$common3 = state.common) === null || _state$common3 === void 0 ? void 0 : (_state$common3$user = _state$common3.user) === null || _state$common3$user === void 0 ? void 0 : (_state$common3$user$r = _state$common3$user.roles) === null || _state$common3$user$r === void 0 ? void 0 : _state$common3$user$r.includes(exports.Role.Teacher);
27260
+ }) && !isAdmin;
27261
+ var isAdminSite = role === exports.Role.Admin;
27122
27262
  var _useClassList = useClassList(history, classCreateUrl, classUpdateUrl),
27123
27263
  t = _useClassList.t,
27124
27264
  paging = _useClassList.paging,
@@ -27133,7 +27273,11 @@ var ClassList = function ClassList(_ref) {
27133
27273
  handleCreateClass = _useClassList.handleCreateClass,
27134
27274
  handleUpdateClass = _useClassList.handleUpdateClass,
27135
27275
  handleChangePage = _useClassList.handleChangePage,
27136
- handleDeleteClass = _useClassList.handleDeleteClass;
27276
+ handleDeleteClass = _useClassList.handleDeleteClass,
27277
+ handleToggleHidden = _useClassList.handleToggleHidden;
27278
+ var headers = !isTeacher ? CLASS_HEADERS : [].concat(CLASS_HEADERS.slice(0, -1), [{
27279
+ title: "hidden"
27280
+ }], CLASS_HEADERS.slice(-1));
27137
27281
  return React__default.createElement(material.Box, null, React__default.createElement(material.Stack, {
27138
27282
  direction: "row",
27139
27283
  alignItems: "center",
@@ -27141,7 +27285,7 @@ var ClassList = function ClassList(_ref) {
27141
27285
  mb: 2
27142
27286
  }, React__default.createElement(material.Typography, {
27143
27287
  variant: "h4"
27144
- }, t("classes")), (isAdmin || isSuperAdmin) && React__default.createElement(MButton, {
27288
+ }, t("classes")), (isAdminSite || isSuperAdmin) && React__default.createElement(MButton, {
27145
27289
  variant: "contained",
27146
27290
  color: "inherit",
27147
27291
  startIcon: React__default.createElement(fa.FaPlus, {
@@ -27164,7 +27308,7 @@ var ClassList = function ClassList(_ref) {
27164
27308
  }), React__default.createElement(material.Grid, {
27165
27309
  item: true,
27166
27310
  xs: 12
27167
- }, React__default.createElement(material.TableContainer, null, React__default.createElement(Table, null, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, CLASS_HEADERS.map(function (i, index) {
27311
+ }, React__default.createElement(material.TableContainer, null, React__default.createElement(Table, null, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, headers.map(function (i, index) {
27168
27312
  return React__default.createElement(TableCell, {
27169
27313
  key: index,
27170
27314
  onClick: !!i.sortKey ? function () {
@@ -27181,7 +27325,13 @@ var ClassList = function ClassList(_ref) {
27181
27325
  key: i.id
27182
27326
  }, React__default.createElement(TableCell, null, (paging.page - 1) * paging.limit + index + 1), React__default.createElement(TableCell, {
27183
27327
  className: "text-nowrap"
27184
- }, i.name), React__default.createElement(TableCell, null, toLocalTime(i.startDate, t("date_format"))), React__default.createElement(TableCell, null, toLocalTime(i.endDate, t("date_format"))), React__default.createElement(TableCell, null, i.totalStudents), React__default.createElement(TableCell, null, i.totalTeachers), React__default.createElement(TableCell, null, i.totalLessons), React__default.createElement(TableCell, null, (isAdmin || isSuperAdmin) && React__default.createElement("div", {
27328
+ }, i.name), React__default.createElement(TableCell, null, toLocalTime(i.startDate, t("date_format"))), React__default.createElement(TableCell, null, toLocalTime(i.endDate, t("date_format"))), React__default.createElement(TableCell, null, i.totalStudents), React__default.createElement(TableCell, null, i.totalTeachers), React__default.createElement(TableCell, null, i.totalLessons), isTeacher && React__default.createElement(TableCell, null, React__default.createElement(material.Switch, {
27329
+ checked: i.hidden,
27330
+ onChange: function onChange(e) {
27331
+ var _i$id;
27332
+ return handleToggleHidden(e, (_i$id = i.id) != null ? _i$id : 0);
27333
+ }
27334
+ })), React__default.createElement(TableCell, null, (isAdminSite || isSuperAdmin) && React__default.createElement("div", {
27185
27335
  className: "d-flex"
27186
27336
  }, React__default.createElement(material.IconButton, {
27187
27337
  color: "default",
@@ -27199,7 +27349,7 @@ var ClassList = function ClassList(_ref) {
27199
27349
  }
27200
27350
  }, React__default.createElement(fa6.FaTrashCan, {
27201
27351
  size: 12
27202
- }))), !(isAdmin || isSuperAdmin) && React__default.createElement(material.IconButton, {
27352
+ }))), !(isAdminSite || isSuperAdmin) && React__default.createElement(material.IconButton, {
27203
27353
  color: "default",
27204
27354
  className: "bg-primary text-white me-1",
27205
27355
  onClick: function onClick() {
@@ -38301,6 +38451,7 @@ var Header = function Header(_ref) {
38301
38451
  }, [isTeacherSide, language]);
38302
38452
  return React__default.createElement(material.Stack, {
38303
38453
  width: "100%",
38454
+ height: "78px",
38304
38455
  display: "flex",
38305
38456
  flexDirection: "row",
38306
38457
  gap: {