touchstudy-core 0.1.176 → 0.1.178

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.
@@ -2,7 +2,7 @@ import { FC } from "react";
2
2
  import { Option, TeacherSimpleResponse } from "../configs/types";
3
3
  interface Props {
4
4
  teachers: TeacherSimpleResponse[];
5
- value?: number | null;
5
+ value?: any;
6
6
  onChange: (val: Option | null) => void;
7
7
  onInputChange: (inputText: string) => void;
8
8
  isDisabled?: boolean;
@@ -7,6 +7,8 @@ export declare type ClassResponse = {
7
7
  totalTeachers: number;
8
8
  totalLessons: number;
9
9
  mainTeacherId: number;
10
+ mainTeacherName?: string;
11
+ mainTeacherEmail?: string;
10
12
  courseWeeklyDays: WeeklyDayResponse[];
11
13
  hidden: boolean;
12
14
  };
@@ -51,6 +53,7 @@ export declare type ClassRequest = {
51
53
  endDate: moment.Moment | null;
52
54
  mainTeacherId: number | null;
53
55
  courseWeeklyDays: WeeklyDayRequest[];
56
+ mainTeacher?: Option | null;
54
57
  };
55
58
  export declare type ClassRequestBody = {
56
59
  name: string;
@@ -91,6 +94,7 @@ export declare type LessonRequest = {
91
94
  mainTeacherId: number | null;
92
95
  date: moment.Moment | null;
93
96
  isCancelled: boolean;
97
+ mainTeacher?: Option | null;
94
98
  };
95
99
  export declare type LessonRequestBody = {
96
100
  startTime: string;
@@ -9,6 +9,7 @@ interface Props {
9
9
  onDelete: (data: NoteResponse) => void;
10
10
  onUpdate: (data: NoteResponse) => void;
11
11
  onView: (data: NoteResponse) => void;
12
+ onViewStudentInfo: (note: NoteResponse) => void;
12
13
  }
13
14
  declare const NoteItemList: FC<Props>;
14
15
  export default NoteItemList;
@@ -6,6 +6,7 @@ interface Props {
6
6
  role: Role;
7
7
  headers: any[];
8
8
  isAdmin: boolean;
9
+ onViewQA?: (studentId: number, sessionId?: number, questionId?: number, isTextbook?: boolean) => void;
9
10
  }
10
11
  declare const NoteList: FC<Props>;
11
12
  export default NoteList;
@@ -2,6 +2,7 @@ import { FC } from "react";
2
2
  import { Role } from "../../../utils";
3
3
  interface Props {
4
4
  role: Role;
5
+ onViewQA?: (studentId: number, sessionId?: number, questionId?: number, isTextbook?: boolean) => void;
5
6
  }
6
7
  declare const NoteTabs: FC<Props>;
7
8
  export default NoteTabs;
package/dist/index.js CHANGED
@@ -6056,6 +6056,7 @@ var customStyles = {
6056
6056
 
6057
6057
  var _excluded = ["isDefault", "defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti"];
6058
6058
  var CustomAsyncSelect = function CustomAsyncSelect(_ref) {
6059
+ var _value$;
6059
6060
  var isDefault = _ref.isDefault,
6060
6061
  options = _ref.options,
6061
6062
  isDisabled = _ref.isDisabled,
@@ -6063,7 +6064,8 @@ var CustomAsyncSelect = function CustomAsyncSelect(_ref) {
6063
6064
  value = _ref.value,
6064
6065
  isMulti = _ref.isMulti,
6065
6066
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
6066
- var initialValues = Array.isArray(value) ? options.filter(function (i) {
6067
+ var isOptionValue = (value === null || value === void 0 ? void 0 : value.value) || (value === null || value === void 0 ? void 0 : (_value$ = value[0]) === null || _value$ === void 0 ? void 0 : _value$.value);
6068
+ var initialValues = isOptionValue ? value : Array.isArray(value) ? options.filter(function (i) {
6067
6069
  return value.includes(i.value);
6068
6070
  }) : isMulti ? options.filter(function (i) {
6069
6071
  return i.value == value;
@@ -13206,7 +13208,7 @@ var DefaultLessonFilter = {
13206
13208
  };
13207
13209
  var DefaultTeacherFilter = {
13208
13210
  currentPage: 1,
13209
- pageSize: 50,
13211
+ pageSize: 100,
13210
13212
  sortColumnDirection: OrderBy$1.DESC,
13211
13213
  sortColumnName: TeacherSortBy.Name,
13212
13214
  textSearch: ""
@@ -13362,16 +13364,18 @@ var DEFAULT_USER_FILTERS = {
13362
13364
 
13363
13365
  var styles$3 = {"avatar":"_2rJkZ","date-picker":"_1iqE2","time-picker":"_20xtc","teacher-selector-wrapper":"_3L1Oj"};
13364
13366
 
13367
+ var _excluded$7 = ["teachers", "value"];
13365
13368
  var TeacherSelector = function TeacherSelector(_ref) {
13366
13369
  var teachers = _ref.teachers,
13367
- value = _ref.value;
13370
+ value = _ref.value,
13371
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
13368
13372
  var teacherOptions = teachers.map(function (i) {
13369
13373
  return {
13370
13374
  label: i.teacherName + "/" + i.teacherEmail,
13371
13375
  value: i.id
13372
13376
  };
13373
13377
  });
13374
- return React__default.createElement(CustomAsyncSelect, {
13378
+ return React__default.createElement(CustomAsyncSelect, Object.assign({
13375
13379
  options: teacherOptions,
13376
13380
  value: value,
13377
13381
  menuPlacement: "bottom",
@@ -13384,7 +13388,7 @@ var TeacherSelector = function TeacherSelector(_ref) {
13384
13388
  },
13385
13389
  menuPortalTarget: document.body,
13386
13390
  isClearable: true
13387
- });
13391
+ }, rest));
13388
13392
  };
13389
13393
 
13390
13394
  var ErrorHandler = function ErrorHandler(_ref) {
@@ -13469,6 +13473,7 @@ var ClassForm = function ClassForm(_ref) {
13469
13473
  };
13470
13474
  var handleChangeTeacher = function handleChangeTeacher(val) {
13471
13475
  formikProp.setFieldValue("mainTeacherId", val === null || val === void 0 ? void 0 : val.value);
13476
+ formikProp.setFieldValue("mainTeacher", val);
13472
13477
  };
13473
13478
  var handleChangeWeeklyDayTime = function handleChangeWeeklyDayTime(key, newValue, currentValue) {
13474
13479
  var _extends2;
@@ -13634,7 +13639,7 @@ var ClassForm = function ClassForm(_ref) {
13634
13639
  }, "*")), React__default.createElement("div", {
13635
13640
  className: "" + styles$3["teacher-selector-wrapper"]
13636
13641
  }, React__default.createElement(TeacherSelector, {
13637
- value: formikProp.values.mainTeacherId,
13642
+ value: formikProp.values.mainTeacher,
13638
13643
  teachers: teachers,
13639
13644
  onInputChange: onSearchTeachers,
13640
13645
  onChange: handleChangeTeacher,
@@ -16024,14 +16029,15 @@ var getNoteType = function getNoteType(t, type) {
16024
16029
  };
16025
16030
 
16026
16031
  var NoteItemList = function NoteItemList(_ref) {
16027
- var _data$reciever, _data$reciever2, _data$recievers;
16032
+ var _data$reciever, _data$recievers;
16028
16033
  var data = _ref.data,
16029
16034
  index = _ref.index,
16030
16035
  role = _ref.role,
16031
16036
  calcOrderNumber = _ref.calcOrderNumber,
16032
16037
  onDelete = _ref.onDelete,
16033
16038
  onUpdate = _ref.onUpdate,
16034
- onView = _ref.onView;
16039
+ onView = _ref.onView,
16040
+ onViewStudentInfo = _ref.onViewStudentInfo;
16035
16041
  var isAdminUser = reactRedux.useSelector(function (state) {
16036
16042
  var _state$common, _state$common$user, _state$common$user$ro;
16037
16043
  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$ro = _state$common$user.roles) === null || _state$common$user$ro === void 0 ? void 0 : _state$common$user$ro.includes(exports.Role.Admin);
@@ -16054,6 +16060,9 @@ var NoteItemList = function NoteItemList(_ref) {
16054
16060
  var handleView = function handleView() {
16055
16061
  onView(data);
16056
16062
  };
16063
+ var handleViewStudentInfo = function handleViewStudentInfo() {
16064
+ onViewStudentInfo(data);
16065
+ };
16057
16066
  var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == exports.NoteType.TeacherToAllAdmin || data.type == exports.NoteType.TeacherToTeachers);
16058
16067
  var cleanedRichText = React.useMemo(function () {
16059
16068
  return cleanRichText(data.content);
@@ -16075,10 +16084,15 @@ var NoteItemList = function NoteItemList(_ref) {
16075
16084
  display: "inline-block",
16076
16085
  color: colors.grey[600],
16077
16086
  fontWeight: 600
16078
- }, "(", " " + t("me"), ")")), React__default.createElement(material.Typography, null, data.sender.email))), data.type === exports.NoteType.ToAcademy || data.type === exports.NoteType.ToStudent ? React__default.createElement(TableCell, null, React__default.createElement(material.Typography, {
16079
- color: colors.blue[700],
16080
- fontWeight: 600
16081
- }, (_data$reciever = data.reciever) === null || _data$reciever === void 0 ? void 0 : _data$reciever.fullName), React__default.createElement(material.Typography, null, (_data$reciever2 = data.reciever) === null || _data$reciever2 === void 0 ? void 0 : _data$reciever2.email)) : data.type === exports.NoteType.TeacherToTeachers ? React__default.createElement(TableCell, null, React__default.createElement(material.Stack, {
16087
+ }, "(", " " + t("me"), ")")), React__default.createElement(material.Typography, null, data.sender.email))), data.type === exports.NoteType.ToAcademy || data.type === exports.NoteType.ToStudent ? React__default.createElement(TableCell, null, React__default.createElement(material.Button, {
16088
+ variant: "text",
16089
+ color: "success",
16090
+ sx: {
16091
+ color: colors.blue[700],
16092
+ fontWeight: 600
16093
+ },
16094
+ onClick: handleViewStudentInfo
16095
+ }, (_data$reciever = data.reciever) === null || _data$reciever === void 0 ? void 0 : _data$reciever.fullName)) : data.type === exports.NoteType.TeacherToTeachers ? React__default.createElement(TableCell, null, React__default.createElement(material.Stack, {
16082
16096
  direction: "column"
16083
16097
  }, (_data$recievers = data.recievers) === null || _data$recievers === void 0 ? void 0 : _data$recievers.slice(0, 2).map(function (i) {
16084
16098
  return React__default.createElement(material.Typography, null, i.fullName, " - ", i.email);
@@ -16716,10 +16730,12 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16716
16730
  };
16717
16731
 
16718
16732
  var NoteList = function NoteList(_ref) {
16733
+ var _selectedStudentNote$;
16719
16734
  var defaultFilter = _ref.defaultFilter,
16720
16735
  role = _ref.role,
16721
16736
  headers = _ref.headers,
16722
- isAdmin = _ref.isAdmin;
16737
+ isAdmin = _ref.isAdmin,
16738
+ onViewQA = _ref.onViewQA;
16723
16739
  var _useTranslation = reactI18next.useTranslation(),
16724
16740
  t = _useTranslation.t;
16725
16741
  var _useList = useList(function (filter) {
@@ -16753,6 +16769,16 @@ var NoteList = function NoteList(_ref) {
16753
16769
  var _useState5 = React.useState(false),
16754
16770
  openDeleteNoteDialog = _useState5[0],
16755
16771
  setOpenDeleteNoteDialog = _useState5[1];
16772
+ var _useState6 = React.useState(),
16773
+ selectedStudentNote = _useState6[0],
16774
+ setSelectedStudentNote = _useState6[1];
16775
+ var handleChangeSelectedStudentNote = function handleChangeSelectedStudentNote(note) {
16776
+ if (note.type !== exports.NoteType.ToAcademy && note.type !== exports.NoteType.ToStudent) return;
16777
+ setSelectedStudentNote(note);
16778
+ };
16779
+ var handleCloseStudentInfo = function handleCloseStudentInfo() {
16780
+ setSelectedStudentNote(undefined);
16781
+ };
16756
16782
  var handleOpenCreateNoteDialog = function handleOpenCreateNoteDialog() {
16757
16783
  var _defaultFilter$types;
16758
16784
  if (((_defaultFilter$types = defaultFilter.types) === null || _defaultFilter$types === void 0 ? void 0 : _defaultFilter$types.length) === 1) setOpenNoteDialog(defaultFilter.types[0]);else if (defaultFilter.types && defaultFilter.types.length > 1) {
@@ -16906,7 +16932,8 @@ var NoteList = function NoteList(_ref) {
16906
16932
  role: role,
16907
16933
  onDelete: handleOpenDeleteNoteDialog,
16908
16934
  onUpdate: handleOpenNoteDialog,
16909
- onView: handleOpenNoteDrawer
16935
+ onView: handleOpenNoteDrawer,
16936
+ onViewStudentInfo: handleChangeSelectedStudentNote
16910
16937
  });
16911
16938
  }
16912
16939
  }), !data.length && !isLoading && React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, {
@@ -16954,6 +16981,16 @@ var NoteList = function NoteList(_ref) {
16954
16981
  title: t("delete_note"),
16955
16982
  okText: t("delete_note"),
16956
16983
  cancelText: t("cancel")
16984
+ }), React__default.createElement(StudentInfoDrawer, {
16985
+ role: role,
16986
+ open: !!selectedStudentNote,
16987
+ studentId: (selectedStudentNote === null || selectedStudentNote === void 0 ? void 0 : (_selectedStudentNote$ = selectedStudentNote.reciever) === null || _selectedStudentNote$ === void 0 ? void 0 : _selectedStudentNote$.id) || 0,
16988
+ onClose: handleCloseStudentInfo,
16989
+ anchor: "right",
16990
+ width: "80dvw",
16991
+ history: history,
16992
+ inert: true,
16993
+ onViewQA: onViewQA
16957
16994
  }));
16958
16995
  };
16959
16996
 
@@ -17062,7 +17099,8 @@ var TEACHER_NOTE_FILTER = {
17062
17099
  };
17063
17100
 
17064
17101
  var NoteTabs = function NoteTabs(_ref) {
17065
- var role = _ref.role;
17102
+ var role = _ref.role,
17103
+ onViewQA = _ref.onViewQA;
17066
17104
  var roles = reactRedux.useSelector(function (state) {
17067
17105
  var _state$common$user$ro, _state$common, _state$common$user;
17068
17106
  return (_state$common$user$ro = 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.roles) != null ? _state$common$user$ro : [];
@@ -17109,7 +17147,8 @@ var NoteTabs = function NoteTabs(_ref) {
17109
17147
  role: role,
17110
17148
  isAdmin: isAdmin,
17111
17149
  defaultFilter: ACADEMY_NOTE_FILTER,
17112
- headers: NOTE_STUDENT_HEADERS
17150
+ headers: NOTE_STUDENT_HEADERS,
17151
+ onViewQA: onViewQA
17113
17152
  })), React__default.createElement(NotetabPanel, {
17114
17153
  value: value,
17115
17154
  index: 1
@@ -17117,7 +17156,8 @@ var NoteTabs = function NoteTabs(_ref) {
17117
17156
  role: role,
17118
17157
  isAdmin: isAdmin,
17119
17158
  defaultFilter: STUDENT_PARENTS_NOTE_FILTER,
17120
- headers: NOTE_STUDENT_HEADERS
17159
+ headers: NOTE_STUDENT_HEADERS,
17160
+ onViewQA: onViewQA
17121
17161
  })), React__default.createElement(NotetabPanel, {
17122
17162
  value: value,
17123
17163
  index: 2
@@ -20352,12 +20392,12 @@ function CreateNewQuestionDialog(_ref) {
20352
20392
  });
20353
20393
  }
20354
20394
 
20355
- var _excluded$7 = ["children", "value", "index"];
20395
+ var _excluded$8 = ["children", "value", "index"];
20356
20396
  var CustomTabPanel = function CustomTabPanel(props) {
20357
20397
  var children = props.children,
20358
20398
  value = props.value,
20359
20399
  index = props.index,
20360
- other = _objectWithoutPropertiesLoose(props, _excluded$7);
20400
+ other = _objectWithoutPropertiesLoose(props, _excluded$8);
20361
20401
  return React__default.createElement("div", Object.assign({
20362
20402
  role: "tabpanel",
20363
20403
  hidden: value !== index,
@@ -24414,7 +24454,7 @@ var ChapterProblemSolvingResultsDialog = function ChapterProblemSolvingResultsDi
24414
24454
  }, t("cancel"))))));
24415
24455
  };
24416
24456
 
24417
- var _excluded$8 = ["onChange"];
24457
+ var _excluded$9 = ["onChange"];
24418
24458
  var StartPageDialog = function StartPageDialog(_ref) {
24419
24459
  var t = _ref.t,
24420
24460
  onClose = _ref.onClose,
@@ -24480,7 +24520,7 @@ var StartPageDialog = function StartPageDialog(_ref) {
24480
24520
  }, t("page_to_start_with")), React__default.createElement(formik.Field, {
24481
24521
  name: "startPage",
24482
24522
  render: function render(_ref3) {
24483
- var field = _objectWithoutPropertiesLoose(_ref3, _excluded$8);
24523
+ var field = _objectWithoutPropertiesLoose(_ref3, _excluded$9);
24484
24524
  return React__default.createElement(CustomSelectOption, Object.assign({
24485
24525
  maxMenuHeight: 150,
24486
24526
  menuPosition: "fixed",
@@ -26112,10 +26152,10 @@ var DrawerTextbookResultTab = function DrawerTextbookResultTab(_ref) {
26112
26152
  };
26113
26153
 
26114
26154
  var _styled$1;
26115
- var _excluded$9 = ["className"];
26155
+ var _excluded$a = ["className"];
26116
26156
  var CustomTooltip$1 = material.styled(function (_ref) {
26117
26157
  var className = _ref.className,
26118
- props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
26158
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$a);
26119
26159
  return React__default.createElement(material.Tooltip, Object.assign({}, props, {
26120
26160
  classes: {
26121
26161
  popper: className
@@ -27596,7 +27636,7 @@ var useTeacherList = function useTeacherList() {
27596
27636
  };
27597
27637
  };
27598
27638
 
27599
- var _excluded$a = ["getStudents"],
27639
+ var _excluded$b = ["getStudents"],
27600
27640
  _excluded2 = ["getTeachers"],
27601
27641
  _excluded3 = ["getLessons"];
27602
27642
  var PAGE_TITLE$4 = "classes";
@@ -27647,7 +27687,7 @@ var useClassDetail = function useClassDetail(_ref) {
27647
27687
  };
27648
27688
  var _useStudentClassList = useStudentClassList(classId),
27649
27689
  getStudents = _useStudentClassList.getStudents,
27650
- studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$a);
27690
+ studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$b);
27651
27691
  var _useTeacherClassList = useTeacherClassList(classId),
27652
27692
  getTeachers = _useTeacherClassList.getTeachers,
27653
27693
  teacherListProps = _objectWithoutPropertiesLoose(_useTeacherClassList, _excluded2);
@@ -27707,7 +27747,11 @@ var useClassDetail = function useClassDetail(_ref) {
27707
27747
  startTime: timeSpanToLocalMoment(i.startTime, course.startDate),
27708
27748
  endTime: timeSpanToLocalMoment(i.endTime, course.startDate)
27709
27749
  });
27710
- })
27750
+ }),
27751
+ mainTeacher: course.mainTeacherId ? {
27752
+ label: course.mainTeacherName + "/" + course.mainTeacherEmail,
27753
+ value: course.mainTeacherId
27754
+ } : null
27711
27755
  });
27712
27756
  }, [JSON.stringify(course)]);
27713
27757
  var convertToRequestBody = function convertToRequestBody(request) {
@@ -28093,6 +28137,7 @@ var LessonFormBody = function LessonFormBody(_ref) {
28093
28137
  setOpenPicker = _useState[1];
28094
28138
  var handleChangeTeacher = function handleChangeTeacher(val) {
28095
28139
  formikProp.setFieldValue("mainTeacherId", val === null || val === void 0 ? void 0 : val.value);
28140
+ formikProp.setFieldValue("mainTeacher", val);
28096
28141
  };
28097
28142
  React.useEffect(function () {
28098
28143
  if (open && data) formikProp.setValues(data);else formikProp.setValues(DEFAULT_LESSON_REQUEST);
@@ -28136,7 +28181,7 @@ var LessonFormBody = function LessonFormBody(_ref) {
28136
28181
  }, "*")), React__default.createElement("div", {
28137
28182
  className: "" + styles$3["teacher-selector-wrapper"]
28138
28183
  }, React__default.createElement(TeacherSelector, {
28139
- value: formikProp.values.mainTeacherId,
28184
+ value: formikProp.values.mainTeacher,
28140
28185
  teachers: teachers,
28141
28186
  onInputChange: onSearchTeachers,
28142
28187
  onChange: handleChangeTeacher
@@ -28244,7 +28289,11 @@ var LessonFormDialog = function LessonFormDialog(_ref) {
28244
28289
  return _extends({}, data, {
28245
28290
  date: moment.utc(data.date).local(),
28246
28291
  startTime: timeSpanToLocalMoment(data.startTime, data.date),
28247
- endTime: timeSpanToLocalMoment(data.endTime, data.date)
28292
+ endTime: timeSpanToLocalMoment(data.endTime, data.date),
28293
+ mainTeacher: data.mainTeacherId ? {
28294
+ label: data.mainTeacherName + "/" + data.mainTeacherEmail,
28295
+ value: data.mainTeacherId
28296
+ } : null
28248
28297
  });
28249
28298
  };
28250
28299
  var lessonRequest = React.useMemo(convertLessonRequest, [JSON.stringify(data)]);
@@ -29035,14 +29084,14 @@ var CSV_PREFIX = "data:text/csv;charset=utf-8,";
29035
29084
 
29036
29085
  var styles$8 = {"action-btn":"_1jXbz","action-btn--pencil":"_at4xP","icon-rotate-180":"_12gv9","drop-area":"_R4bn5"};
29037
29086
 
29038
- var _excluded$b = ["text", "isRequired", "className"];
29087
+ var _excluded$c = ["text", "isRequired", "className"];
29039
29088
  var LabelRequired = function LabelRequired(_ref) {
29040
29089
  var text = _ref.text,
29041
29090
  _ref$isRequired = _ref.isRequired,
29042
29091
  isRequired = _ref$isRequired === void 0 ? true : _ref$isRequired,
29043
29092
  _ref$className = _ref.className,
29044
29093
  className = _ref$className === void 0 ? "" : _ref$className,
29045
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
29094
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
29046
29095
  return React__default.createElement(material.FormLabel, Object.assign({
29047
29096
  className: "fw-medium mb-1 " + className
29048
29097
  }, rest), text, isRequired && React__default.createElement("span", {
@@ -29096,7 +29145,7 @@ var deleteUserApi = function deleteUserApi(id) {
29096
29145
  return api["delete"](USER_URL$1 + "/delete/" + id);
29097
29146
  };
29098
29147
 
29099
- var _excluded$c = ["ref"],
29148
+ var _excluded$d = ["ref"],
29100
29149
  _excluded2$1 = ["ref"],
29101
29150
  _excluded3$1 = ["ref"],
29102
29151
  _excluded4 = ["ref"],
@@ -29126,7 +29175,7 @@ var UserDialog = function UserDialog(_ref) {
29126
29175
  t = _useTranslation.t;
29127
29176
  var _register = register("fullName"),
29128
29177
  fullNameRef = _register.ref,
29129
- fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$c);
29178
+ fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$d);
29130
29179
  var _register2 = register("email"),
29131
29180
  emailRef = _register2.ref,
29132
29181
  emailBio = _objectWithoutPropertiesLoose(_register2, _excluded2$1);
@@ -33197,12 +33246,12 @@ var ArticleDialog = function ArticleDialog(_ref) {
33197
33246
 
33198
33247
  var styles$a = {"drawer":"_11aYm","open":"_3Ydwm","drawer-overlay":"_3SQDf","drawer-header":"_2BwOx","drawer-form":"_2Zo7R","dropdown-content-academy":"_1lzjD","dropdown-change":"_1y7K9","dropdown-academy-item":"_1Y-55","dropdown-content-language":"_1fBXY","dropdown-item-language":"_3Szun","dropdown-item-language-active":"_2HhLb","item-address":"_3WYHC","item-logout":"_2-9ix","title-address":"_1r4pn","image-academy":"_2ZozT"};
33199
33248
 
33200
- var _excluded$d = ["isOpen", "onClose", "handleSaveExam"];
33249
+ var _excluded$e = ["isOpen", "onClose", "handleSaveExam"];
33201
33250
  var CreateExamDrawer = function CreateExamDrawer(props) {
33202
33251
  var isOpen = props.isOpen,
33203
33252
  onClose = props.onClose,
33204
33253
  handleSaveExam = props.handleSaveExam,
33205
- examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$d);
33254
+ examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$e);
33206
33255
  var _useTranslation = reactI18next.useTranslation(),
33207
33256
  t = _useTranslation.t;
33208
33257
  var theme = material.useTheme();
@@ -34355,12 +34404,12 @@ var useNotificationDetail = function useNotificationDetail(_ref) {
34355
34404
 
34356
34405
  var styles$b = {"avatar":"_8niRT"};
34357
34406
 
34358
- var _excluded$e = ["value", "disabled", "optionTypeNotification"];
34407
+ var _excluded$f = ["value", "disabled", "optionTypeNotification"];
34359
34408
  var TypeSelector = function TypeSelector(_ref) {
34360
34409
  var value = _ref.value,
34361
34410
  disabled = _ref.disabled,
34362
34411
  optionTypeNotification = _ref.optionTypeNotification,
34363
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
34412
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
34364
34413
  return React__default.createElement(CustomAsyncSelect, Object.assign({
34365
34414
  options: optionTypeNotification,
34366
34415
  value: value
@@ -34753,11 +34802,11 @@ var useNotificationList = function useNotificationList(_ref) {
34753
34802
  };
34754
34803
  };
34755
34804
 
34756
- var _excluded$f = ["value", "optionTypeNotification"];
34805
+ var _excluded$g = ["value", "optionTypeNotification"];
34757
34806
  var SelectFilterType = function SelectFilterType(_ref) {
34758
34807
  var value = _ref.value,
34759
34808
  optionTypeNotification = _ref.optionTypeNotification,
34760
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
34809
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$g);
34761
34810
  return React__default.createElement(CustomAsyncSelect, Object.assign({
34762
34811
  options: optionTypeNotification,
34763
34812
  value: value
@@ -36034,7 +36083,7 @@ var isEqual$1 = function isEqual(prev, next) {
36034
36083
  };
36035
36084
  var QuestionShortInput$1 = React.memo(QuestionShortInput, isEqual$1);
36036
36085
 
36037
- var _excluded$g = ["onChange"];
36086
+ var _excluded$h = ["onChange"];
36038
36087
  var _$2 = _$8;
36039
36088
  var BpIcon$1 = material.styled("span")(function (_ref) {
36040
36089
  var theme = _ref.theme;
@@ -36345,7 +36394,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
36345
36394
  name: path + ".questionTypeId",
36346
36395
  render: function render(_ref5) {
36347
36396
  var _ref5$field = _ref5.field,
36348
- field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$g);
36397
+ field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$h);
36349
36398
  return React__default.createElement(CustomSelectOption, Object.assign({}, field, {
36350
36399
  isDisabled: disabled,
36351
36400
  value: data.questionType,
@@ -36394,7 +36443,7 @@ var isEqual$2 = function isEqual(prev, next) {
36394
36443
  };
36395
36444
  var QuestionBlock$1 = React.memo(QuestionBlock, isEqual$2);
36396
36445
 
36397
- var _excluded$h = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36446
+ var _excluded$i = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36398
36447
  var _$3 = _$8;
36399
36448
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
36400
36449
  var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate, _questions$2;
@@ -36415,7 +36464,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
36415
36464
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
36416
36465
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
36417
36466
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
36418
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$h);
36467
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
36419
36468
  var errors = formikProps.errors;
36420
36469
  var startOrderRef = React.useRef(null);
36421
36470
  var articles = data.articles,
@@ -36558,7 +36607,7 @@ var isEqual$3 = function isEqual(prev, next) {
36558
36607
  };
36559
36608
  var QuestionGroupBlockBody$1 = React.memo(QuestionGroupBlockBody, isEqual$3);
36560
36609
 
36561
- var _excluded$i = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36610
+ var _excluded$j = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36562
36611
  var _$4 = _$8;
36563
36612
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36564
36613
  var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
@@ -36583,7 +36632,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36583
36632
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
36584
36633
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
36585
36634
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
36586
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
36635
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
36587
36636
  var errors = formikProps.errors,
36588
36637
  setFieldValue = formikProps.setFieldValue;
36589
36638
  var _useTranslation = reactI18next.useTranslation(),
@@ -37046,7 +37095,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
37046
37095
  }, formikProps)))));
37047
37096
  };
37048
37097
 
37049
- var _excluded$j = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
37098
+ var _excluded$k = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
37050
37099
  var ChapterBlockBody = function ChapterBlockBody(_ref) {
37051
37100
  var path = _ref.path,
37052
37101
  paths = _ref.paths,
@@ -37066,7 +37115,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
37066
37115
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
37067
37116
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
37068
37117
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
37069
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
37118
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
37070
37119
  var _useTranslation = reactI18next.useTranslation(),
37071
37120
  t = _useTranslation.t;
37072
37121
  var setFieldValue = formikProps.setFieldValue;
@@ -37245,7 +37294,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
37245
37294
  }));
37246
37295
  };
37247
37296
 
37248
- var _excluded$k = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
37297
+ var _excluded$l = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
37249
37298
  var _$5 = _$8;
37250
37299
  var ChapterBlock = function ChapterBlock(_ref) {
37251
37300
  var data = _ref.data,
@@ -37268,7 +37317,7 @@ var ChapterBlock = function ChapterBlock(_ref) {
37268
37317
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
37269
37318
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
37270
37319
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
37271
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
37320
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$l);
37272
37321
  var errors = formikProps.errors;
37273
37322
  var _useTranslation = reactI18next.useTranslation(),
37274
37323
  t = _useTranslation.t;
@@ -37959,7 +38008,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
37959
38008
  }));
37960
38009
  };
37961
38010
 
37962
- var _excluded$l = ["value"];
38011
+ var _excluded$m = ["value"];
37963
38012
  var VisuallyHiddenInput = material.styled("input")({
37964
38013
  clip: "rect(0 0 0 0)",
37965
38014
  clipPath: "inset(50%)",
@@ -38127,7 +38176,7 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
38127
38176
  render: function render(_ref4) {
38128
38177
  var _ref4$field = _ref4.field,
38129
38178
  value = _ref4$field.value,
38130
- action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$l);
38179
+ action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$m);
38131
38180
  return React__default.createElement(xDatePickers.LocalizationProvider, {
38132
38181
  dateAdapter: AdapterMoment.AdapterMoment
38133
38182
  }, React__default.createElement(xDatePickers.DatePicker, Object.assign({}, action, {
@@ -38601,7 +38650,7 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
38601
38650
  }));
38602
38651
  };
38603
38652
 
38604
- var _excluded$m = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "selectedTextbook", "handleSaveData", "onChangeTab", "onUploadImage"];
38653
+ var _excluded$n = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "selectedTextbook", "handleSaveData", "onChangeTab", "onUploadImage"];
38605
38654
  var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38606
38655
  var _valuesTextbook$curre;
38607
38656
  var isCreatedByAdmin = _ref.isCreatedByAdmin,
@@ -38617,7 +38666,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38617
38666
  handleSaveData = _ref.handleSaveData,
38618
38667
  onChangeTab = _ref.onChangeTab,
38619
38668
  onUploadImage = _ref.onUploadImage,
38620
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$m);
38669
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$n);
38621
38670
  var values = formikProps.values,
38622
38671
  errors = formikProps.errors,
38623
38672
  dirty = formikProps.dirty,
@@ -38840,7 +38889,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38840
38889
  }, i18n.t("math"))))), React__default.createElement(material.Stack, {
38841
38890
  flexDirection: "row",
38842
38891
  gap: "8px"
38843
- }, React__default.createElement(material.Stack, {
38892
+ }, !!(selectedTextbook !== null && selectedTextbook !== void 0 && selectedTextbook.id) && React__default.createElement(material.Stack, {
38844
38893
  padding: "6px 12px",
38845
38894
  sx: {
38846
38895
  transition: "opacity 0.3s ease",
@@ -38875,7 +38924,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38875
38924
  }
38876
38925
  }
38877
38926
  }
38878
- }, saveStatus === PrintStatus.Saving && i18n.t("saving"), saveStatus === PrintStatus.Saved && isSaved && i18n.t("all_changes_saved"), saveStatus !== PrintStatus.Saving && (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.id) && !isSaved && i18n.t("all_changes_are_not_saved_yet"))), React__default.createElement(material.Button, {
38927
+ }, saveStatus === PrintStatus.Saving && i18n.t("saving"), saveStatus === PrintStatus.Saved && isSaved && i18n.t("all_changes_saved"), saveStatus !== PrintStatus.Saving && !isSaved && i18n.t("all_changes_are_not_saved_yet"))), React__default.createElement(material.Button, {
38879
38928
  type: "submit",
38880
38929
  sx: {
38881
38930
  width: "fit-content"