touchstudy-core 0.1.162 → 0.1.164

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.
@@ -13,7 +13,7 @@ export { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
13
13
  import { DemoContainer } from '@mui/x-date-pickers/internals/demo';
14
14
  export { DemoContainer } from '@mui/x-date-pickers/internals/demo';
15
15
  import React__default, { useState, useEffect, Fragment as Fragment$1, useRef, useCallback, useMemo, memo, createElement } from 'react';
16
- import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, useMediaQuery, CircularProgress, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Skeleton, Tabs, Tab, Divider, Drawer, tableCellClasses, Accordion, AccordionSummary, AccordionDetails, TableContainer, RadioGroup, Radio, FormControl, InputLabel, Chip, Switch, CardMedia as CardMedia$1, MenuList } from '@mui/material';
16
+ import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, useMediaQuery, CircularProgress, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Skeleton, Tabs, Tab, Divider, Drawer, tableCellClasses, Accordion, AccordionSummary, AccordionDetails, TableContainer, Switch, RadioGroup, Radio, FormControl, InputLabel, Chip, CardMedia as CardMedia$1, MenuList } from '@mui/material';
17
17
  import moment from 'moment';
18
18
  export { default as moment } from 'moment';
19
19
  import { FaSave, FaCaretDown, FaTimes, FaTrash, FaSortUp, FaSortDown, FaPlusCircle, FaCalendar, FaUser, FaBookOpen, FaPlus, FaUpload, FaEye as FaEye$1, FaPencilAlt, FaCheckCircle, FaShare, FaExchangeAlt } from 'react-icons/fa';
@@ -30,10 +30,10 @@ import 'moment/locale/en-au.js';
30
30
  import { CellMeasurerCache, CellMeasurer, AutoSizer, List as List$1, MultiGrid } from 'react-virtualized';
31
31
  export { CellMeasurerCache, MultiGrid } from 'react-virtualized';
32
32
  import { Formik, Form, Field, FieldArray } from 'formik';
33
- import { alpha } from '@mui/material/styles';
34
33
  import tinymce from 'tinymce';
35
34
  import '@wiris/mathtype-tinymce6';
36
35
  import { Editor } from '@tinymce/tinymce-react';
36
+ import { alpha } from '@mui/material/styles';
37
37
  import Grid$1 from '@mui/material/Grid';
38
38
  import Typography$1 from '@mui/material/Typography';
39
39
  import Card from '@mui/material/Card';
@@ -1488,6 +1488,25 @@ var textbook_name = "교재 이름";
1488
1488
  var korean_language = "국어";
1489
1489
  var answer_cannot_be_empty = "답변은 비워둘 수 없습니다";
1490
1490
  var are_you_sure_to_create_student_parent_note = "학생/학부모에게 노트를 생성하시겠습니까?";
1491
+ var notification_title = "알림 제목";
1492
+ var vieweduser = "사용자 조회";
1493
+ var updateduser = "사용자 업데이트";
1494
+ var creatednewuser = "새 사용자 생성";
1495
+ var importeduser = "사용자 가져오기";
1496
+ var viewedqna = "Q&A 조회";
1497
+ var completedqna = "Q&A 완료";
1498
+ var answeredqna = "Q&A 답변";
1499
+ var removemessageqna = "Q&A 메시지 삭제";
1500
+ var updatemessageqna = "Q&A 메시지 업데이트";
1501
+ var viewedexamresult = "시험 결과 조회";
1502
+ var printedexamresult = "시험 결과 출력";
1503
+ var viewedattendance = "출석 조회";
1504
+ var updatedattendance = "출석 업데이트";
1505
+ var addedteachertoclass = "교사 수업 추가";
1506
+ var removedteacherfromclass = "교사 수업 제거";
1507
+ var addedstudenttoclass = "학생 수업 추가";
1508
+ var removedstudentfromclass = "학생 수업 제거";
1509
+ var hidden = "숨겨진";
1491
1510
  var lang_ko = {
1492
1511
  problem_solving: problem_solving,
1493
1512
  my_story: my_story,
@@ -2609,7 +2628,26 @@ var lang_ko = {
2609
2628
  textbook_name: textbook_name,
2610
2629
  korean_language: korean_language,
2611
2630
  answer_cannot_be_empty: answer_cannot_be_empty,
2612
- are_you_sure_to_create_student_parent_note: are_you_sure_to_create_student_parent_note
2631
+ are_you_sure_to_create_student_parent_note: are_you_sure_to_create_student_parent_note,
2632
+ notification_title: notification_title,
2633
+ vieweduser: vieweduser,
2634
+ updateduser: updateduser,
2635
+ creatednewuser: creatednewuser,
2636
+ importeduser: importeduser,
2637
+ viewedqna: viewedqna,
2638
+ completedqna: completedqna,
2639
+ answeredqna: answeredqna,
2640
+ removemessageqna: removemessageqna,
2641
+ updatemessageqna: updatemessageqna,
2642
+ viewedexamresult: viewedexamresult,
2643
+ printedexamresult: printedexamresult,
2644
+ viewedattendance: viewedattendance,
2645
+ updatedattendance: updatedattendance,
2646
+ addedteachertoclass: addedteachertoclass,
2647
+ removedteacherfromclass: removedteacherfromclass,
2648
+ addedstudenttoclass: addedstudenttoclass,
2649
+ removedstudentfromclass: removedstudentfromclass,
2650
+ hidden: hidden
2613
2651
  };
2614
2652
 
2615
2653
  var problem_solving$1 = "Problem Solving";
@@ -3754,6 +3792,25 @@ var textbook_name$1 = "Textbook name";
3754
3792
  var korean_language$1 = "Korean";
3755
3793
  var answer_cannot_be_empty$1 = "Answer cannot be empty";
3756
3794
  var are_you_sure_to_create_student_parent_note$1 = "Are you sure you want to create a note for the student/parent?";
3795
+ var notification_title$1 = "Notification title";
3796
+ var vieweduser$1 = "Viewed user";
3797
+ var updateduser$1 = "Updated user";
3798
+ var creatednewuser$1 = "Created new user";
3799
+ var importeduser$1 = "Imported user";
3800
+ var viewedqna$1 = "Viewed Q&A";
3801
+ var completedqna$1 = "Completed Q&A";
3802
+ var answeredqna$1 = "Answered Q&A";
3803
+ var removemessageqna$1 = "Remove message Q&A";
3804
+ var updatemessageqna$1 = "Update message Q&A";
3805
+ var viewedexamresult$1 = "Viewed exam result";
3806
+ var printedexamresult$1 = "Printed exam result";
3807
+ var viewedattendance$1 = "Viewed attendance";
3808
+ var updatedattendance$1 = "Updated attendance";
3809
+ var addedteachertoclass$1 = "Added teacher to class";
3810
+ var removedteacherfromclass$1 = "Removed teacher from class";
3811
+ var addedstudenttoclass$1 = "Added student to class";
3812
+ var removedstudentfromclass$1 = "Removed student from class";
3813
+ var hidden$1 = "Hidden";
3757
3814
  var lang_en = {
3758
3815
  problem_solving: problem_solving$1,
3759
3816
  my_story: my_story$1,
@@ -4877,7 +4934,26 @@ var lang_en = {
4877
4934
  textbook_name: textbook_name$1,
4878
4935
  korean_language: korean_language$1,
4879
4936
  answer_cannot_be_empty: answer_cannot_be_empty$1,
4880
- are_you_sure_to_create_student_parent_note: are_you_sure_to_create_student_parent_note$1
4937
+ are_you_sure_to_create_student_parent_note: are_you_sure_to_create_student_parent_note$1,
4938
+ notification_title: notification_title$1,
4939
+ vieweduser: vieweduser$1,
4940
+ updateduser: updateduser$1,
4941
+ creatednewuser: creatednewuser$1,
4942
+ importeduser: importeduser$1,
4943
+ viewedqna: viewedqna$1,
4944
+ completedqna: completedqna$1,
4945
+ answeredqna: answeredqna$1,
4946
+ removemessageqna: removemessageqna$1,
4947
+ updatemessageqna: updatemessageqna$1,
4948
+ viewedexamresult: viewedexamresult$1,
4949
+ printedexamresult: printedexamresult$1,
4950
+ viewedattendance: viewedattendance$1,
4951
+ updatedattendance: updatedattendance$1,
4952
+ addedteachertoclass: addedteachertoclass$1,
4953
+ removedteacherfromclass: removedteacherfromclass$1,
4954
+ addedstudenttoclass: addedstudenttoclass$1,
4955
+ removedstudentfromclass: removedstudentfromclass$1,
4956
+ hidden: hidden$1
4881
4957
  };
4882
4958
 
4883
4959
  i18n.use(initReactI18next).init({
@@ -6240,10 +6316,22 @@ var OrderType;
6240
6316
  var RecentUserAction;
6241
6317
  (function (RecentUserAction) {
6242
6318
  RecentUserAction["ViewedUser"] = "ViewedUser";
6319
+ RecentUserAction["UpdatedUser"] = "UpdatedUser";
6320
+ RecentUserAction["CreatedNewUser"] = "CreatedNewUser";
6321
+ RecentUserAction["ImportedUser"] = "ImportedUser";
6243
6322
  RecentUserAction["ViewedQNA"] = "ViewedQNA";
6323
+ RecentUserAction["CompletedQNA"] = "CompletedQNA";
6324
+ RecentUserAction["AnsweredQNA"] = "AnsweredQNA";
6325
+ RecentUserAction["RemoveMessageQNA"] = "RemoveMessageQNA";
6326
+ RecentUserAction["UpdateMessageQNA"] = "UpdateMessageQNA";
6244
6327
  RecentUserAction["ViewedExamResult"] = "ViewedExamResult";
6245
6328
  RecentUserAction["PrintedExamResult"] = "PrintedExamResult";
6246
6329
  RecentUserAction["ViewedAttendance"] = "ViewedAttendance";
6330
+ RecentUserAction["UpdatedAttendance"] = "UpdatedAttendance";
6331
+ RecentUserAction["AddedTeacherToClass"] = "AddedTeacherToClass";
6332
+ RecentUserAction["RemovedTeacherFromClass"] = "RemovedTeacherFromClass";
6333
+ RecentUserAction["AddedStudentToClass"] = "AddedStudentToClass";
6334
+ RecentUserAction["RemovedStudentFromClass"] = "RemovedStudentFromClass";
6247
6335
  })(RecentUserAction || (RecentUserAction = {}));
6248
6336
 
6249
6337
  var UserSortColumn;
@@ -7556,6 +7644,8 @@ var getClassesApi = function getClassesApi(textSearch) {
7556
7644
  return api.get("" + COURSE_URL, {
7557
7645
  params: {
7558
7646
  textSearch: textSearch,
7647
+ pageSize: 100,
7648
+ currentPage: 1,
7559
7649
  roles: [Role.Admin]
7560
7650
  }
7561
7651
  });
@@ -7607,11 +7697,7 @@ var ClassSelector = function ClassSelector(_ref) {
7607
7697
  }, [searchString]);
7608
7698
  useEffect(function () {
7609
7699
  timeout && timeout.current && clearTimeout(timeout.current);
7610
- if (!searchString || searchString.trim().length < 2) {
7611
- setClasses([]);
7612
- } else {
7613
- timeout.current = setTimeout(loadData, 300);
7614
- }
7700
+ timeout.current = setTimeout(loadData, 300);
7615
7701
  }, [searchString]);
7616
7702
  var options = classes.filter(function (classOption) {
7617
7703
  return !externalClassIds || externalClassIds && !externalClassIds.includes(classOption.id);
@@ -7632,7 +7718,7 @@ var ClassSelector = function ClassSelector(_ref) {
7632
7718
  return setSearchString(inputValue);
7633
7719
  },
7634
7720
  isLoading: isLoading,
7635
- placeholder: t('placeholder_student_selector'),
7721
+ placeholder: t('select_placeholder'),
7636
7722
  isMulti: true,
7637
7723
  value: value,
7638
7724
  onChange: onChange,
@@ -8115,6 +8201,12 @@ var ChatRightItem = function ChatRightItem(_ref) {
8115
8201
  isOpenTooltip = _useTooltip.isOpenTooltip,
8116
8202
  handleCloseTooltip = _useTooltip.handleCloseTooltip,
8117
8203
  handleOpenTooltip = _useTooltip.handleOpenTooltip;
8204
+ useEffect(function () {
8205
+ if (window.MathJax) {
8206
+ var _window$MathJax;
8207
+ (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
8208
+ }
8209
+ }, [content]);
8118
8210
  return React__default.createElement("div", null, showTimestamp && React__default.createElement(Typography, {
8119
8211
  fontWeight: 500,
8120
8212
  fontSize: "12px",
@@ -8187,17 +8279,15 @@ var ChatRightItem = function ChatRightItem(_ref) {
8187
8279
  style: {
8188
8280
  "float": "inline-end",
8189
8281
  maxWidth: 400,
8190
- background: styles.less_dark
8191
- }
8192
- }, React__default.createElement(Typography, {
8193
- fontWeight: 500,
8194
- fontSize: "14px",
8195
- lineHeight: "16.71px",
8196
- color: "#fff",
8197
- sx: {
8198
- wordBreak: "break-word"
8282
+ background: styles.less_dark,
8283
+ color: "#FFF",
8284
+ fontSize: "14px",
8285
+ fontWeight: 500
8286
+ },
8287
+ dangerouslySetInnerHTML: {
8288
+ __html: content || ""
8199
8289
  }
8200
- }, content))))));
8290
+ })))));
8201
8291
  };
8202
8292
 
8203
8293
  var ChatLeftItem = function ChatLeftItem(_ref) {
@@ -8211,6 +8301,12 @@ var ChatLeftItem = function ChatLeftItem(_ref) {
8211
8301
  toggleImageDialog = _ref.toggleImageDialog;
8212
8302
  var _useTranslation = useTranslation(),
8213
8303
  t = _useTranslation.t;
8304
+ useEffect(function () {
8305
+ if (window.MathJax) {
8306
+ var _window$MathJax;
8307
+ (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
8308
+ }
8309
+ }, [content]);
8214
8310
  return React__default.createElement("div", null, showTimestamp && React__default.createElement(Typography, {
8215
8311
  fontWeight: 500,
8216
8312
  fontSize: "12px",
@@ -8264,17 +8360,15 @@ var ChatLeftItem = function ChatLeftItem(_ref) {
8264
8360
  }) : React__default.createElement("div", {
8265
8361
  className: styles$1["wrap-content"] + " " + styles$1["content-chat-sender"],
8266
8362
  style: {
8267
- maxWidth: 400
8268
- }
8269
- }, React__default.createElement(Typography, {
8270
- fontWeight: 500,
8271
- fontSize: "14px",
8272
- lineHeight: "16.71px",
8273
- color: styles.gray_700,
8274
- sx: {
8275
- wordBreak: "break-word"
8363
+ maxWidth: 400,
8364
+ color: styles.gray_700,
8365
+ fontSize: "14px",
8366
+ fontWeight: 500
8367
+ },
8368
+ dangerouslySetInnerHTML: {
8369
+ __html: content || ""
8276
8370
  }
8277
- }, content)))));
8371
+ }))));
8278
8372
  };
8279
8373
 
8280
8374
  var ImageDetailDialog = function ImageDetailDialog(_ref) {
@@ -8445,6 +8539,47 @@ var iconPlusCircle = function iconPlusCircle(_ref) {
8445
8539
  }));
8446
8540
  };
8447
8541
 
8542
+ var TinyChatEditor = function TinyChatEditor(_ref) {
8543
+ var _ref$disabled = _ref.disabled,
8544
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
8545
+ onChange = _ref.onChange,
8546
+ initValue = _ref.initValue,
8547
+ config = _ref.config;
8548
+ var isFirstChange = useRef(true);
8549
+ var _useTranslation = useTranslation(),
8550
+ t = _useTranslation.t;
8551
+ useEffect(function () {
8552
+ if (window.tinymce) {
8553
+ window.tinymce = tinymce;
8554
+ }
8555
+ }, []);
8556
+ var options = {
8557
+ height: 126,
8558
+ menubar: false,
8559
+ readonly: false,
8560
+ external_plugins: {
8561
+ tiny_mce_wiris: '/editor/wiris-for-tinymce.js'
8562
+ },
8563
+ toolbar: 'tiny_mce_wiris_formulaEditor',
8564
+ branding: false,
8565
+ extended_valid_elements: '*[.*]',
8566
+ placeholder: t("send_message")
8567
+ };
8568
+ var handleChange = function handleChange(value, _) {
8569
+ if (isFirstChange.current) {
8570
+ isFirstChange.current = false;
8571
+ return;
8572
+ }
8573
+ onChange(value);
8574
+ };
8575
+ return React__default.createElement(Editor, {
8576
+ disabled: disabled,
8577
+ init: config || options,
8578
+ value: initValue,
8579
+ onEditorChange: handleChange
8580
+ });
8581
+ };
8582
+
8448
8583
  var UpdateMessageDialog = function UpdateMessageDialog(_ref) {
8449
8584
  var open = _ref.open,
8450
8585
  onClose = _ref.onClose,
@@ -8477,7 +8612,7 @@ var UpdateMessageDialog = function UpdateMessageDialog(_ref) {
8477
8612
  handleUpdateMessage(content || "");
8478
8613
  }
8479
8614
  }, function (_ref2) {
8480
- _objectDestructuringEmpty(_ref2);
8615
+ var setFieldValue = _ref2.setFieldValue;
8481
8616
  return React__default.createElement(Form, null, React__default.createElement("label", {
8482
8617
  htmlFor: "content",
8483
8618
  className: styles$1['form-label'] + " " + styles$1['form-label-dialog']
@@ -8489,7 +8624,16 @@ var UpdateMessageDialog = function UpdateMessageDialog(_ref) {
8489
8624
  name: "content",
8490
8625
  validate: validate,
8491
8626
  placeholder: t('the_problem_is_difficult'),
8492
- className: styles$1['form-control']
8627
+ className: styles$1['form-control'],
8628
+ render: function render(_ref3) {
8629
+ var field = _ref3.field;
8630
+ return React__default.createElement(TinyChatEditor, {
8631
+ initValue: field.value,
8632
+ onChange: function onChange(text) {
8633
+ return setFieldValue("content", text);
8634
+ }
8635
+ });
8636
+ }
8493
8637
  }), React__default.createElement(DialogActions, {
8494
8638
  sx: {
8495
8639
  display: 'flex',
@@ -8712,7 +8856,6 @@ var iconSendMessage = function iconSendMessage(_ref) {
8712
8856
 
8713
8857
  var InputChat = function InputChat(_ref) {
8714
8858
  var text = _ref.text,
8715
- inputRef = _ref.inputRef,
8716
8859
  onChangeInput = _ref.onChangeInput,
8717
8860
  onSubmit = _ref.onSubmit,
8718
8861
  isCompleted = _ref.isCompleted,
@@ -8725,15 +8868,6 @@ var InputChat = function InputChat(_ref) {
8725
8868
  var handleSubmit = function handleSubmit() {
8726
8869
  onSubmit();
8727
8870
  };
8728
- var handleInputChange = function handleInputChange(event) {
8729
- onChangeInput(event.target.value);
8730
- };
8731
- var handleKeyPressEnter = function handleKeyPressEnter(e) {
8732
- if (e.key === "Enter") {
8733
- handleSubmit();
8734
- return;
8735
- }
8736
- };
8737
8871
  var handleSelectedFile = function handleSelectedFile(e) {
8738
8872
  var files = e.target.files;
8739
8873
  handleUploadImage(files[0]);
@@ -8756,8 +8890,8 @@ var InputChat = function InputChat(_ref) {
8756
8890
  width: "100%"
8757
8891
  }, React__default.createElement(Box, {
8758
8892
  display: "flex",
8759
- border: "1px solid #97A1AF",
8760
- borderRadius: "6px",
8893
+ border: selectedFile ? "1px solid #97A1AF" : undefined,
8894
+ borderRadius: selectedFile ? "6px" : undefined,
8761
8895
  flexDirection: "column"
8762
8896
  }, selectedFile && React__default.createElement("div", {
8763
8897
  style: {
@@ -8783,17 +8917,9 @@ var InputChat = function InputChat(_ref) {
8783
8917
  }, React__default.createElement(IoCloseOutline, {
8784
8918
  color: "#fff",
8785
8919
  size: 30
8786
- }))), React__default.createElement("input", {
8787
- className: styles$1["input-chat"],
8788
- style: {
8789
- border: "none"
8790
- },
8791
- placeholder: t("send_message"),
8792
- ref: inputRef,
8793
- value: text,
8794
- width: "100%",
8795
- onKeyPress: handleKeyPressEnter,
8796
- onChange: handleInputChange,
8920
+ }))), React__default.createElement(TinyChatEditor, {
8921
+ initValue: text,
8922
+ onChange: onChangeInput,
8797
8923
  disabled: isCompleted
8798
8924
  })), React__default.createElement(Typography, {
8799
8925
  fontWeight: 500,
@@ -8803,8 +8929,8 @@ var InputChat = function InputChat(_ref) {
8803
8929
  }, t('this_is_the_guidance_text'))), React__default.createElement(Box, {
8804
8930
  display: "flex",
8805
8931
  flexDirection: "column",
8806
- justifyContent: "flex-end",
8807
- alignItems: "flex-start",
8932
+ justifyContent: "flex-start",
8933
+ alignItems: "flex-end",
8808
8934
  gap: "16px"
8809
8935
  }, React__default.createElement(Button, {
8810
8936
  variant: "contained",
@@ -9123,7 +9249,6 @@ var ChatContainer = function ChatContainer(_ref) {
9123
9249
  onReachTop = _ref.onReachTop,
9124
9250
  onReachBottom = _ref.onReachBottom,
9125
9251
  onEndScrollToEnd = _ref.onEndScrollToEnd;
9126
- var inputRef = useRef(null);
9127
9252
  var listRef = useRef(null);
9128
9253
  var listItemRef = useRef(null);
9129
9254
  var scrollRef = useRef();
@@ -9206,9 +9331,7 @@ var ChatContainer = function ChatContainer(_ref) {
9206
9331
  className: "d-flex justify-content-center align-items-center"
9207
9332
  }, React__default.createElement(CircularProgress, null)), React__default.createElement(ChatList, Object.assign({}, chatListProps, {
9208
9333
  listItemRef: listItemRef
9209
- }))), React__default.createElement(InputChat, Object.assign({}, inputProps, {
9210
- inputRef: inputRef
9211
- })));
9334
+ }))), React__default.createElement(InputChat, Object.assign({}, inputProps)));
9212
9335
  };
9213
9336
 
9214
9337
  var MessageSortBy;
@@ -10940,7 +11063,11 @@ var useLoginPhoneNumber = function useLoginPhoneNumber(props) {
10940
11063
  });
10941
11064
  }, function (error) {
10942
11065
  var _error$response, _error$response2, _error$response2$data;
10943
- 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") toast.error(t("duplicate_passcode_for_siblings_please_contact_admin_for_assistance"));else toast.error(getErrorMessage(t, error));
11066
+ 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") toast.error(t("duplicate_passcode_for_siblings_please_contact_admin_for_assistance"));else {
11067
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
11068
+ localStorage.removeItem(LEARNING_SPACE);
11069
+ toast.error(getErrorMessage(t, error));
11070
+ }
10944
11071
  });
10945
11072
  return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
10946
11073
  } catch (e) {
@@ -11469,7 +11596,8 @@ var useLogin$1 = function useLogin(_ref) {
11469
11596
  }();
11470
11597
  return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
11471
11598
  }, function (error) {
11472
- console.log(error);
11599
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
11600
+ localStorage.removeItem(LEARNING_SPACE);
11473
11601
  toast.error(getErrorMessage(t, error, t("request_login_fail")));
11474
11602
  });
11475
11603
  return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
@@ -11565,6 +11693,7 @@ var useLogiQRCode = function useLogiQRCode(props) {
11565
11693
  error = _useState8[0],
11566
11694
  setError = _useState8[1];
11567
11695
  var firstLoadRef = useRef(true);
11696
+ var hasErrorRef = useRef(false);
11568
11697
  var onVerify = useCallback(function (token) {
11569
11698
  setTokenReCaptcha(token);
11570
11699
  }, []);
@@ -11580,7 +11709,8 @@ var useLogiQRCode = function useLogiQRCode(props) {
11580
11709
  if (!tokenReCaptcha) return Promise.resolve();
11581
11710
  resetData();
11582
11711
  setLoadingQR(true);
11583
- if (!academyDomain) localStorage.setItem(LEARNING_SPACE, "true");
11712
+ if (!academyDomain || hasErrorRef.current) localStorage.setItem(LEARNING_SPACE, "true");
11713
+ if (hasErrorRef.current) localStorage.removeItem(ACADEMY_DOMAIN);
11584
11714
  var _temp = _catch(function () {
11585
11715
  return Promise.resolve(generateQRCode(academyDomain, tokenReCaptcha)).then(function (response) {
11586
11716
  setQrCodeData(response.data);
@@ -11601,6 +11731,7 @@ var useLogiQRCode = function useLogiQRCode(props) {
11601
11731
  setInfo(recievedData === null || recievedData === void 0 ? void 0 : recievedData.data);
11602
11732
  setStatus(QRCodeStatus.Scanned);
11603
11733
  } catch (error) {
11734
+ hasErrorRef.current = true;
11604
11735
  setInvalid(true);
11605
11736
  }
11606
11737
  };
@@ -11906,7 +12037,8 @@ var useLoginWithEmail = function useLoginWithEmail(_ref) {
11906
12037
  }), token, redirectUrl);
11907
12038
  });
11908
12039
  }, function (error) {
11909
- console.log(error);
12040
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
12041
+ localStorage.removeItem(LEARNING_SPACE);
11910
12042
  toast.error(getErrorMessage(t, error, t("request_login_fail")));
11911
12043
  });
11912
12044
  return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
@@ -12026,7 +12158,8 @@ var useLogin$2 = function useLogin(_ref) {
12026
12158
  }), token, redirectUrl);
12027
12159
  });
12028
12160
  }, function (error) {
12029
- console.log(error);
12161
+ !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
12162
+ localStorage.removeItem(LEARNING_SPACE);
12030
12163
  toast.error(getErrorMessage(t, error, t("request_login_fail")));
12031
12164
  }));
12032
12165
  } catch (e) {
@@ -14369,6 +14502,48 @@ var iconCloseDialog = function iconCloseDialog(_ref) {
14369
14502
  }));
14370
14503
  };
14371
14504
 
14505
+ var NoteTinyEditor = function NoteTinyEditor(_ref) {
14506
+ var _ref$disabled = _ref.disabled,
14507
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
14508
+ onChange = _ref.onChange,
14509
+ initValue = _ref.initValue,
14510
+ config = _ref.config;
14511
+ var isFirstChange = useRef(true);
14512
+ var _useTranslation = useTranslation(),
14513
+ t = _useTranslation.t;
14514
+ useEffect(function () {
14515
+ if (window.tinymce) {
14516
+ window.tinymce = tinymce;
14517
+ }
14518
+ }, []);
14519
+ var options = {
14520
+ height: 280,
14521
+ menubar: false,
14522
+ readonly: false,
14523
+ external_plugins: {
14524
+ tiny_mce_wiris: '/editor/wiris-for-tinymce.js'
14525
+ },
14526
+ plugins: ['anchor', 'autolink', 'charmap', 'codesample', 'emoticons', 'image', 'link', 'lists', 'media', 'searchreplace', 'table', 'textcolor', 'wordcount'],
14527
+ 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',
14528
+ branding: false,
14529
+ extended_valid_elements: '*[.*]',
14530
+ placeholder: t("the_problem_is_difficult")
14531
+ };
14532
+ var handleChange = function handleChange(value, _) {
14533
+ if (isFirstChange.current) {
14534
+ isFirstChange.current = false;
14535
+ return;
14536
+ }
14537
+ onChange(value);
14538
+ };
14539
+ return React__default.createElement(Editor, {
14540
+ disabled: disabled,
14541
+ init: config || options,
14542
+ value: initValue,
14543
+ onEditorChange: handleChange
14544
+ });
14545
+ };
14546
+
14372
14547
  var schema$1 = object().shape({
14373
14548
  content: string().required()
14374
14549
  });
@@ -14385,37 +14560,12 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
14385
14560
  var handleSaveNote = function handleSaveNote(content) {
14386
14561
  onSaveNote(content);
14387
14562
  };
14388
- var _useState = useState(false),
14389
- keyboardOpen = _useState[0],
14390
- setKeyboardOpen = _useState[1];
14391
- useEffect(function () {
14392
- var handleResize = function handleResize() {
14393
- if (window.innerHeight < window.outerHeight) {
14394
- setKeyboardOpen(true);
14395
- } else {
14396
- setKeyboardOpen(false);
14397
- }
14398
- };
14399
- window.addEventListener("resize", handleResize);
14400
- handleResize();
14401
- return function () {
14402
- return window.removeEventListener("resize", handleResize);
14403
- };
14404
- }, []);
14405
14563
  return React__default.createElement(Dialog, {
14406
14564
  onClose: onClose,
14407
14565
  open: open,
14566
+ maxWidth: "md",
14408
14567
  scroll: "body",
14409
- PaperProps: {
14410
- sx: {
14411
- maxHeight: "unset",
14412
- minWidth: "363px",
14413
- overflowY: "auto",
14414
- position: "relative",
14415
- bottom: keyboardOpen ? "0" : undefined,
14416
- transition: "top 0.3s ease"
14417
- }
14418
- }
14568
+ fullWidth: true
14419
14569
  }, React__default.createElement(DialogTitle$1, {
14420
14570
  id: "customized-dialog-title"
14421
14571
  }, React__default.createElement(Typography$1, {
@@ -14444,7 +14594,8 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
14444
14594
  handleSaveNote(values.content);
14445
14595
  }
14446
14596
  }, function (_ref2) {
14447
- var values = _ref2.values;
14597
+ var values = _ref2.values,
14598
+ setFieldValue = _ref2.setFieldValue;
14448
14599
  return React__default.createElement(Form, null, React__default.createElement(DialogContent$1, {
14449
14600
  sx: {
14450
14601
  padding: 0,
@@ -14473,16 +14624,22 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
14473
14624
  flexDirection: "row",
14474
14625
  alignItems: "center"
14475
14626
  }, React__default.createElement(Field, {
14476
- as: "textarea",
14477
- rows: 3,
14478
14627
  id: "content-question",
14479
14628
  style: {
14480
- paddingRight: "40px",
14481
- minHeight: "64px"
14629
+ width: "100%"
14482
14630
  },
14483
14631
  name: "content",
14484
14632
  placeholder: t("the_problem_is_difficult"),
14485
- className: styles["form-control"]
14633
+ className: styles["form-control"],
14634
+ render: function render(_ref3) {
14635
+ var field = _ref3.field;
14636
+ return React__default.createElement(NoteTinyEditor, {
14637
+ initValue: field.value,
14638
+ onChange: function onChange(text) {
14639
+ return setFieldValue("content", text);
14640
+ }
14641
+ });
14642
+ }
14486
14643
  })), React__default.createElement(Box, {
14487
14644
  marginBottom: "4px"
14488
14645
  })))), React__default.createElement(DialogActions$1, {
@@ -14972,7 +15129,18 @@ var NoteItem = function NoteItem(_ref) {
14972
15129
  number: (data.questionOrder || 0) + 1
14973
15130
  }) : "" + utcToLocalTime(data.createdAt, t("date_format") + " HH:mm")), data.examSessionId && React__default.createElement(Typography, Object.assign({}, NoteItemStyles.text.right), data.categoryName)), React__default.createElement(Typography, Object.assign({
14974
15131
  className: "truncate"
14975
- }, NoteItemStyles.contentText), data.content)), React__default.createElement(Box, null, (isAdmin || data.isOwned) && React__default.createElement(ClickAwayListener, {
15132
+ }, NoteItemStyles.contentText, {
15133
+ sx: {
15134
+ display: "-webkit-box",
15135
+ lineClamp: 1,
15136
+ WebkitLineClamp: 1,
15137
+ WebkitBoxOrient: "vertical",
15138
+ overflow: "hidden"
15139
+ },
15140
+ dangerouslySetInnerHTML: {
15141
+ __html: data.content || ""
15142
+ }
15143
+ }))), React__default.createElement(Box, null, (isAdmin || data.isOwned) && React__default.createElement(ClickAwayListener, {
14976
15144
  onClickAway: onClose
14977
15145
  }, React__default.createElement(Box, null, React__default.createElement(CustomTooltip, {
14978
15146
  onClose: onClose,
@@ -15172,8 +15340,11 @@ var NoteDrawer = function NoteDrawer(props) {
15172
15340
  fontSize: "14px",
15173
15341
  fontWeight: "300",
15174
15342
  color: "#414E62"
15343
+ },
15344
+ dangerouslySetInnerHTML: {
15345
+ __html: (data === null || data === void 0 ? void 0 : data.content) || ""
15175
15346
  }
15176
- }, data === null || data === void 0 ? void 0 : data.content)));
15347
+ })));
15177
15348
  };
15178
15349
 
15179
15350
  var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsApi) {
@@ -23489,6 +23660,7 @@ var Textbook = function Textbook(_ref) {
23489
23660
  getTextbookList = _ref.getTextbookList,
23490
23661
  onViewQA = _ref.onViewQA;
23491
23662
  var isTabletUp = useMediaQuery(theme.breakpoints.up("lg"));
23663
+ var isStudentSite = role === Role.Student;
23492
23664
  var _useDrawer = useDrawer(),
23493
23665
  isOpenDialog = _useDrawer.isOpenDialog,
23494
23666
  handleCloseDialog = _useDrawer.handleCloseDialog,
@@ -23503,6 +23675,9 @@ var Textbook = function Textbook(_ref) {
23503
23675
  handleOpenConfirmDialog = _useTextbook.handleOpenConfirmDialog,
23504
23676
  handleCloseConfirmDialog = _useTextbook.handleCloseConfirmDialog,
23505
23677
  handleDeleteTextbook = _useTextbook.handleDeleteTextbook;
23678
+ var isEditable = isSuperAdmin || textbook.isShared && ((textbook === null || textbook === void 0 ? void 0 : (_textbook$createdBy = textbook.createdBy) === null || _textbook$createdBy === void 0 ? void 0 : _textbook$createdBy.id) === (user === null || user === void 0 ? void 0 : user.id) || textbook.textbookOwners.some(function (i) {
23679
+ return i.id === (user === null || user === void 0 ? void 0 : user.id);
23680
+ }));
23506
23681
  return React__default.createElement(Stack, {
23507
23682
  sx: {
23508
23683
  border: 1,
@@ -23515,16 +23690,19 @@ var Textbook = function Textbook(_ref) {
23515
23690
  sx: {
23516
23691
  gap: "24px",
23517
23692
  flexDirection: "row",
23518
- alignItems: "center",
23519
- cursor: "pointer"
23693
+ alignItems: "center"
23520
23694
  }
23521
23695
  }, React__default.createElement("img", {
23522
23696
  style: {
23523
23697
  objectFit: "contain",
23524
- height: "100%"
23698
+ height: "100%",
23699
+ cursor: !isStudentSite ? "pointer" : undefined
23525
23700
  },
23526
23701
  width: 68,
23527
- src: textbook.coverImage
23702
+ src: textbook.coverImage,
23703
+ onClick: function onClick() {
23704
+ return !isStudentSite && handleOpenDetailDialog();
23705
+ }
23528
23706
  }), React__default.createElement(Stack, null, React__default.createElement(Stack, {
23529
23707
  flexDirection: "row"
23530
23708
  }, React__default.createElement(Typography, {
@@ -23534,7 +23712,16 @@ var Textbook = function Textbook(_ref) {
23534
23712
  }, t("test_name")), React__default.createElement(Typography, {
23535
23713
  fontSize: "14px",
23536
23714
  color: styles.gray_900,
23537
- fontWeight: 700
23715
+ fontWeight: 700,
23716
+ sx: _extends({}, !isStudentSite && {
23717
+ "&:hover": {
23718
+ color: styles.less_dark
23719
+ },
23720
+ cursor: "pointer"
23721
+ }),
23722
+ onClick: function onClick() {
23723
+ return !isStudentSite && handleOpenDetailDialog();
23724
+ }
23538
23725
  }, textbook.name)), React__default.createElement(Stack, {
23539
23726
  flexDirection: "row"
23540
23727
  }, React__default.createElement(Typography, {
@@ -23576,9 +23763,7 @@ var Textbook = function Textbook(_ref) {
23576
23763
  onClick: handleOpenDialog
23577
23764
  }, React__default.createElement(FaBookOpen, {
23578
23765
  size: "20px"
23579
- }), t("test_start")), (isSuperAdmin || textbook.isShared && ((textbook === null || textbook === void 0 ? void 0 : (_textbook$createdBy = textbook.createdBy) === null || _textbook$createdBy === void 0 ? void 0 : _textbook$createdBy.id) === (user === null || user === void 0 ? void 0 : user.id) || textbook.textbookOwners.some(function (i) {
23580
- return i.id === (user === null || user === void 0 ? void 0 : user.id);
23581
- }))) && React__default.createElement(Button, {
23766
+ }), t("test_start")), isEditable && React__default.createElement(Button, {
23582
23767
  variant: "outlined",
23583
23768
  sx: {
23584
23769
  width: "fit-content",
@@ -25456,6 +25641,12 @@ var updateClassApi = function updateClassApi(id, model) {
25456
25641
  var deleteClassApi = function deleteClassApi(id) {
25457
25642
  return api["delete"](CLASS_URL + "/" + id);
25458
25643
  };
25644
+ var hiddenClassesApi = function hiddenClassesApi(hidden, classId) {
25645
+ return api.post(CLASS_URL + "/hidden", {
25646
+ hidden: hidden,
25647
+ courseIds: [classId]
25648
+ });
25649
+ };
25459
25650
  var addStudentToClass = function addStudentToClass(id, studentIds) {
25460
25651
  return api.post(CLASS_URL + "/" + id + "/students", studentIds);
25461
25652
  };
@@ -26989,6 +27180,27 @@ var useClassList = function useClassList(history, classCreateUrl, classUpdateUrl
26989
27180
  var handleUpdateClass = function handleUpdateClass(value) {
26990
27181
  value.id && classUpdateUrl && pushTo(history, "" + classUpdateUrl.replace(":id", "" + value.id));
26991
27182
  };
27183
+ var handleToggleHidden = function handleToggleHidden(e, classId) {
27184
+ try {
27185
+ var _temp5 = function _temp5() {
27186
+ dispatch(setLoading(false));
27187
+ };
27188
+ var checked = e.target.checked;
27189
+ dispatch(setLoading(true));
27190
+ var _temp4 = _catch(function () {
27191
+ return Promise.resolve(hiddenClassesApi(checked, classId)).then(function () {
27192
+ return Promise.resolve(getClassList()).then(function () {
27193
+ toast.success(t("update_data_successfully"));
27194
+ });
27195
+ });
27196
+ }, function (error) {
27197
+ toast.error(getErrorMessage(t, error));
27198
+ });
27199
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
27200
+ } catch (e) {
27201
+ return Promise.reject(e);
27202
+ }
27203
+ };
26992
27204
  var handleChangePage = function handleChangePage(_, page) {
26993
27205
  setClassFilter(_extends({}, classFilter, {
26994
27206
  currentPage: page
@@ -27014,7 +27226,8 @@ var useClassList = function useClassList(history, classCreateUrl, classUpdateUrl
27014
27226
  handleCreateClass: handleCreateClass,
27015
27227
  handleUpdateClass: handleUpdateClass,
27016
27228
  handleChangePage: handleChangePage,
27017
- handleDeleteClass: handleDeleteClass
27229
+ handleDeleteClass: handleDeleteClass,
27230
+ handleToggleHidden: handleToggleHidden
27018
27231
  };
27019
27232
  };
27020
27233
 
@@ -27027,7 +27240,15 @@ var ClassList = function ClassList(_ref) {
27027
27240
  var _state$common, _state$common$user;
27028
27241
  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;
27029
27242
  });
27030
- var isAdmin = role === Role.Admin;
27243
+ var isAdmin = useSelector(function (state) {
27244
+ var _state$common2, _state$common2$user, _state$common2$user$r;
27245
+ 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(Role.Admin);
27246
+ });
27247
+ var isTeacher = useSelector(function (state) {
27248
+ var _state$common3, _state$common3$user, _state$common3$user$r;
27249
+ 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(Role.Teacher);
27250
+ }) && !isAdmin;
27251
+ var isAdminSite = role === Role.Admin;
27031
27252
  var _useClassList = useClassList(history, classCreateUrl, classUpdateUrl),
27032
27253
  t = _useClassList.t,
27033
27254
  paging = _useClassList.paging,
@@ -27042,7 +27263,11 @@ var ClassList = function ClassList(_ref) {
27042
27263
  handleCreateClass = _useClassList.handleCreateClass,
27043
27264
  handleUpdateClass = _useClassList.handleUpdateClass,
27044
27265
  handleChangePage = _useClassList.handleChangePage,
27045
- handleDeleteClass = _useClassList.handleDeleteClass;
27266
+ handleDeleteClass = _useClassList.handleDeleteClass,
27267
+ handleToggleHidden = _useClassList.handleToggleHidden;
27268
+ var headers = !isTeacher ? CLASS_HEADERS : [].concat(CLASS_HEADERS.slice(0, -1), [{
27269
+ title: "hidden"
27270
+ }], CLASS_HEADERS.slice(-1));
27046
27271
  return React__default.createElement(Box, null, React__default.createElement(Stack, {
27047
27272
  direction: "row",
27048
27273
  alignItems: "center",
@@ -27050,7 +27275,7 @@ var ClassList = function ClassList(_ref) {
27050
27275
  mb: 2
27051
27276
  }, React__default.createElement(Typography, {
27052
27277
  variant: "h4"
27053
- }, t("classes")), (isAdmin || isSuperAdmin) && React__default.createElement(MButton, {
27278
+ }, t("classes")), (isAdminSite || isSuperAdmin) && React__default.createElement(MButton, {
27054
27279
  variant: "contained",
27055
27280
  color: "inherit",
27056
27281
  startIcon: React__default.createElement(FaPlus, {
@@ -27073,7 +27298,7 @@ var ClassList = function ClassList(_ref) {
27073
27298
  }), React__default.createElement(Grid, {
27074
27299
  item: true,
27075
27300
  xs: 12
27076
- }, React__default.createElement(TableContainer, null, React__default.createElement(Table$1, null, React__default.createElement(TableHead$1, null, React__default.createElement(TableRow$1, null, CLASS_HEADERS.map(function (i, index) {
27301
+ }, React__default.createElement(TableContainer, null, React__default.createElement(Table$1, null, React__default.createElement(TableHead$1, null, React__default.createElement(TableRow$1, null, headers.map(function (i, index) {
27077
27302
  return React__default.createElement(TableCell$1, {
27078
27303
  key: index,
27079
27304
  onClick: !!i.sortKey ? function () {
@@ -27090,7 +27315,13 @@ var ClassList = function ClassList(_ref) {
27090
27315
  key: i.id
27091
27316
  }, React__default.createElement(TableCell$1, null, (paging.page - 1) * paging.limit + index + 1), React__default.createElement(TableCell$1, {
27092
27317
  className: "text-nowrap"
27093
- }, i.name), React__default.createElement(TableCell$1, null, toLocalTime(i.startDate, t("date_format"))), React__default.createElement(TableCell$1, null, toLocalTime(i.endDate, t("date_format"))), React__default.createElement(TableCell$1, null, i.totalStudents), React__default.createElement(TableCell$1, null, i.totalTeachers), React__default.createElement(TableCell$1, null, i.totalLessons), React__default.createElement(TableCell$1, null, (isAdmin || isSuperAdmin) && React__default.createElement("div", {
27318
+ }, i.name), React__default.createElement(TableCell$1, null, toLocalTime(i.startDate, t("date_format"))), React__default.createElement(TableCell$1, null, toLocalTime(i.endDate, t("date_format"))), React__default.createElement(TableCell$1, null, i.totalStudents), React__default.createElement(TableCell$1, null, i.totalTeachers), React__default.createElement(TableCell$1, null, i.totalLessons), isTeacher && React__default.createElement(TableCell$1, null, React__default.createElement(Switch, {
27319
+ checked: i.hidden,
27320
+ onChange: function onChange(e) {
27321
+ var _i$id;
27322
+ return handleToggleHidden(e, (_i$id = i.id) != null ? _i$id : 0);
27323
+ }
27324
+ })), React__default.createElement(TableCell$1, null, (isAdminSite || isSuperAdmin) && React__default.createElement("div", {
27094
27325
  className: "d-flex"
27095
27326
  }, React__default.createElement(IconButton, {
27096
27327
  color: "default",
@@ -27108,7 +27339,7 @@ var ClassList = function ClassList(_ref) {
27108
27339
  }
27109
27340
  }, React__default.createElement(FaTrashCan, {
27110
27341
  size: 12
27111
- }))), !(isAdmin || isSuperAdmin) && React__default.createElement(IconButton, {
27342
+ }))), !(isAdminSite || isSuperAdmin) && React__default.createElement(IconButton, {
27112
27343
  color: "default",
27113
27344
  className: "bg-primary text-white me-1",
27114
27345
  onClick: function onClick() {
@@ -28487,10 +28718,10 @@ var RecentUserActionDialog = function RecentUserActionDialog(_ref) {
28487
28718
  }
28488
28719
  }, t(i.title)));
28489
28720
  }))), React__default.createElement(TableBody, null, recentUserActions === null || recentUserActions === void 0 ? void 0 : recentUserActions.map(function (i, index) {
28490
- var _i$targetUser, _i$targetUser2;
28721
+ var _i$targetUser, _i$targetUser2, _RecentUserActionName, _RecentUserActionName2;
28491
28722
  return React__default.createElement(TableRow, {
28492
28723
  key: i.id
28493
- }, React__default.createElement(TableCell, null, index + 1), React__default.createElement(TableCell, null, ((_i$targetUser = i.targetUser) === null || _i$targetUser === void 0 ? void 0 : _i$targetUser.fullName) || ''), React__default.createElement(TableCell, null, formatRole((_i$targetUser2 = i.targetUser) === null || _i$targetUser2 === void 0 ? void 0 : _i$targetUser2.roles, t)), React__default.createElement(TableCell, null, t(RecentUserActionNames[i.action] || '')), React__default.createElement(TableCell, null, utcToLocalTime(i.createdAt, t("date_time_format"))));
28724
+ }, React__default.createElement(TableCell, null, index + 1), React__default.createElement(TableCell, null, ((_i$targetUser = i.targetUser) === null || _i$targetUser === void 0 ? void 0 : _i$targetUser.fullName) || ''), React__default.createElement(TableCell, null, formatRole((_i$targetUser2 = i.targetUser) === null || _i$targetUser2 === void 0 ? void 0 : _i$targetUser2.roles, t)), React__default.createElement(TableCell, null, t(((_RecentUserActionName = RecentUserActionNames[i.action]) === null || _RecentUserActionName === void 0 ? void 0 : (_RecentUserActionName2 = _RecentUserActionName.toLowerCase) === null || _RecentUserActionName2 === void 0 ? void 0 : _RecentUserActionName2.call(_RecentUserActionName)) || '')), React__default.createElement(TableCell, null, utcToLocalTime(i.createdAt, t("date_time_format"))));
28494
28725
  }), !(recentUserActions !== null && recentUserActions !== void 0 && recentUserActions.length) && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
28495
28726
  sx: {
28496
28727
  textAlign: 'center'
@@ -32469,16 +32700,18 @@ var TypeNotificationEnum;
32469
32700
  TypeNotificationEnum[TypeNotificationEnum["Class"] = 2] = "Class";
32470
32701
  TypeNotificationEnum[TypeNotificationEnum["Student"] = 3] = "Student";
32471
32702
  })(TypeNotificationEnum || (TypeNotificationEnum = {}));
32472
- var optionTypeNotification = [{
32473
- value: TypeNotificationEnum.Academy,
32474
- label: "Academy"
32475
- }, {
32476
- value: TypeNotificationEnum.Class,
32477
- label: "Class"
32478
- }, {
32479
- value: TypeNotificationEnum.Student,
32480
- label: "Student"
32481
- }];
32703
+ var optionTypeNotification = function optionTypeNotification(t) {
32704
+ return [{
32705
+ value: TypeNotificationEnum.Academy,
32706
+ label: t("academy")
32707
+ }, {
32708
+ value: TypeNotificationEnum.Class,
32709
+ label: t("class")
32710
+ }, {
32711
+ value: TypeNotificationEnum.Student,
32712
+ label: t("student")
32713
+ }];
32714
+ };
32482
32715
  var NotificationSortBy;
32483
32716
  (function (NotificationSortBy) {
32484
32717
  NotificationSortBy["CreatedAt"] = "CreatedAt";
@@ -32494,7 +32727,7 @@ var OrderBy$3;
32494
32727
  var NOTIFICATION_HEADERS = [{
32495
32728
  title: "#"
32496
32729
  }, {
32497
- title: "name",
32730
+ title: "notification_title",
32498
32731
  sortKey: NotificationSortBy.Name
32499
32732
  }, {
32500
32733
  title: "type",
@@ -32708,6 +32941,10 @@ var NotificationForm = function NotificationForm(_ref) {
32708
32941
  formikProp.setValues(_extends({}, DEFAULT_NOTIFICATION_REQUEST));
32709
32942
  }
32710
32943
  }, [JSON.stringify(data)]);
32944
+ var optionTypes = optionTypeNotification(t);
32945
+ var notificationTypes = isAdmin ? optionTypes : optionTypes.filter(function (i) {
32946
+ return i.value !== TypeNotificationEnum.Academy;
32947
+ });
32711
32948
  return React__default.createElement("div", {
32712
32949
  className: "d-flex flex-column"
32713
32950
  }, React__default.createElement(Grid, {
@@ -32722,14 +32959,14 @@ var NotificationForm = function NotificationForm(_ref) {
32722
32959
  }, React__default.createElement(FormGroup, null, React__default.createElement(FormLabel, {
32723
32960
  className: "mb-2 fw-bold",
32724
32961
  htmlFor: "class_name"
32725
- }, t("name"), " ", React__default.createElement("span", {
32962
+ }, t("notification_title"), " ", React__default.createElement("span", {
32726
32963
  className: "text-danger"
32727
32964
  }, "*")), React__default.createElement(InputText, {
32728
32965
  id: "name",
32729
32966
  disabled: !isAdmin && (!!id && !(data !== null && data !== void 0 && data.isOwned) || isTeacherAdmin),
32730
32967
  value: formikProp.values.name,
32731
32968
  onChange: handleChangeClassTitle,
32732
- placeholder: t("name")
32969
+ placeholder: t("notification_title")
32733
32970
  }), formikProp.touched.name && formikProp.errors.name ? React__default.createElement("div", {
32734
32971
  className: "mt-1"
32735
32972
  }, React__default.createElement(ErrorHandler, {
@@ -32764,9 +33001,7 @@ var NotificationForm = function NotificationForm(_ref) {
32764
33001
  className: "" + styles$9["teacher-selector-wrapper"]
32765
33002
  }, React__default.createElement(TypeSelector, {
32766
33003
  disabled: !isAdmin && (!!id && !(data !== null && data !== void 0 && data.isOwned) || isTeacherAdmin),
32767
- optionTypeNotification: isAdmin ? optionTypeNotification : optionTypeNotification.filter(function (i) {
32768
- return i.value !== TypeNotificationEnum.Academy;
32769
- }),
33004
+ optionTypeNotification: notificationTypes,
32770
33005
  value: formikProp.values.type,
32771
33006
  onChange: handleChangeType
32772
33007
  }), formikProp.touched.type && formikProp.errors.type ? React__default.createElement("div", {
@@ -33061,6 +33296,10 @@ var NotificationList = function NotificationList(_ref) {
33061
33296
  handleDeleteNotification = _useNotificationList.handleDeleteNotification,
33062
33297
  onChangeFilterType = _useNotificationList.onChangeFilterType;
33063
33298
  var Wrapper = as || Container$1;
33299
+ var optionTypes = optionTypeNotification(t);
33300
+ var notificationTypes = isAdmin ? optionTypes : optionTypes.filter(function (i) {
33301
+ return i.value !== TypeNotificationEnum.Academy;
33302
+ });
33064
33303
  return React__default.createElement(Wrapper, {
33065
33304
  maxWidth: "xl",
33066
33305
  className: "bg-white pt-5 p-4 rounded-4 " + className
@@ -33101,9 +33340,7 @@ var NotificationList = function NotificationList(_ref) {
33101
33340
  item: true,
33102
33341
  xs: 6
33103
33342
  }, React__default.createElement(SelectFilterType, {
33104
- optionTypeNotification: isAdmin ? optionTypeNotification : optionTypeNotification.filter(function (i) {
33105
- return i.value !== TypeNotificationEnum.Academy;
33106
- }),
33343
+ optionTypeNotification: notificationTypes,
33107
33344
  value: notificationFilter.type,
33108
33345
  onChange: onChangeFilterType
33109
33346
  })))), React__default.createElement(Grid, {
@@ -38204,6 +38441,7 @@ var Header = function Header(_ref) {
38204
38441
  }, [isTeacherSide, language]);
38205
38442
  return React__default.createElement(Stack, {
38206
38443
  width: "100%",
38444
+ height: "78px",
38207
38445
  display: "flex",
38208
38446
  flexDirection: "row",
38209
38447
  gap: {