touchstudy-core 0.1.113 → 0.1.115

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.
@@ -27,7 +27,7 @@ import Select, { components } from 'react-select';
27
27
  import CreatableSelect from 'react-select/creatable';
28
28
  import { Formik, Form, Field, FieldArray } from 'formik';
29
29
  import { CKEditor } from 'ckeditor4-react';
30
- import { CellMeasurerCache, CellMeasurer, AutoSizer, List as List$1, MultiGrid } from 'react-virtualized';
30
+ import { AutoSizer } from 'react-virtualized';
31
31
  import Grid$1 from '@mui/material/Grid';
32
32
  import Typography$1 from '@mui/material/Typography';
33
33
  import Card from '@mui/material/Card';
@@ -1190,6 +1190,7 @@ var notify_share_exam = {
1190
1190
  update_fail: "업데이트 실패!"
1191
1191
  };
1192
1192
  var academy_admin_teacher = "아카데미 관리자/선생님";
1193
+ var academyadmin_teacher = "아카데미 관리자/선생님";
1193
1194
  var total_student = "총 학생 수";
1194
1195
  var total_teacher = "총 교사 수";
1195
1196
  var total_exam = "총 시험 수";
@@ -1353,6 +1354,7 @@ var delete_textbook_successfully = "교과서 삭제 성공";
1353
1354
  var information = "정보";
1354
1355
  var running_time = "진행 시간";
1355
1356
  var hours_mins_seconds = "{{hours}}시간 {{mins}}분 {{seconds}}초";
1357
+ var create_schedule_successfully = "일정을 성공적으로 생성했습니다";
1356
1358
  var prepared_textbook = "준비된 교과서";
1357
1359
  var enable_phone_pass_code = "전화 비밀번호 활성화";
1358
1360
  var custom = "관습";
@@ -1361,6 +1363,13 @@ var pass_code_is_invalid = "비밀번호가 유효하지 않습니다";
1361
1363
  var pass_code_length_must_be_n = "비밀번호 길이는 {{n}}이어야 합니다";
1362
1364
  var parent_phone_number_is_invalid = "부모 전화번호가 잘못되었습니다";
1363
1365
  var parent_phone_number_is_required = "부모 전화번호가 필요합니다";
1366
+ var update_schedule_successfully = "일정을 성공적으로 업데이트했습니다";
1367
+ var delete_schedule_successfully = "일정을 성공적으로 삭제했습니다";
1368
+ var group = "그룹";
1369
+ var update_schedule = "업데이트 일정";
1370
+ var back_month = "이전 달";
1371
+ var today_schedule = "오늘 스케줄";
1372
+ var schedule_achieved = "달성한 스케줄";
1364
1373
  var lang_ko = {
1365
1374
  problem_solving: problem_solving,
1366
1375
  my_story: my_story,
@@ -2192,6 +2201,7 @@ var lang_ko = {
2192
2201
  notify_share_textbook: notify_share_textbook,
2193
2202
  notify_share_exam: notify_share_exam,
2194
2203
  academy_admin_teacher: academy_admin_teacher,
2204
+ academyadmin_teacher: academyadmin_teacher,
2195
2205
  total_student: total_student,
2196
2206
  total_teacher: total_teacher,
2197
2207
  total_exam: total_exam,
@@ -2357,6 +2367,7 @@ var lang_ko = {
2357
2367
  information: information,
2358
2368
  running_time: running_time,
2359
2369
  hours_mins_seconds: hours_mins_seconds,
2370
+ create_schedule_successfully: create_schedule_successfully,
2360
2371
  prepared_textbook: prepared_textbook,
2361
2372
  enable_phone_pass_code: enable_phone_pass_code,
2362
2373
  custom: custom,
@@ -2364,7 +2375,14 @@ var lang_ko = {
2364
2375
  pass_code_is_invalid: pass_code_is_invalid,
2365
2376
  pass_code_length_must_be_n: pass_code_length_must_be_n,
2366
2377
  parent_phone_number_is_invalid: parent_phone_number_is_invalid,
2367
- parent_phone_number_is_required: parent_phone_number_is_required
2378
+ parent_phone_number_is_required: parent_phone_number_is_required,
2379
+ update_schedule_successfully: update_schedule_successfully,
2380
+ delete_schedule_successfully: delete_schedule_successfully,
2381
+ group: group,
2382
+ update_schedule: update_schedule,
2383
+ back_month: back_month,
2384
+ today_schedule: today_schedule,
2385
+ schedule_achieved: schedule_achieved
2368
2386
  };
2369
2387
 
2370
2388
  var problem_solving$1 = "Problem Solving";
@@ -2504,7 +2522,7 @@ var create_exam$1 = "Create exam";
2504
2522
  var back$1 = "Back";
2505
2523
  var date_format_exam$1 = "MMMM YYYY";
2506
2524
  var date_format$1 = "MMM. D. YYYY";
2507
- var day_month_format$1 = "DDDo MMM";
2525
+ var day_month_format$1 = "Do MMM";
2508
2526
  var date_time_format$1 = "HH:mm MMM. D YYYY ";
2509
2527
  var date_time_format_12h$1 = "MM-DD-YYYY HH:mm A";
2510
2528
  var full_date_time_format$1 = "MMM Do YYYY HH:mm:ss";
@@ -3278,14 +3296,15 @@ var chapter$1 = "Chapter";
3278
3296
  var chapter_number$1 = "Chapter {{number}}";
3279
3297
  var category_required$1 = "Category is required";
3280
3298
  var subject_required$1 = "Subject is required";
3281
- var academy_admin_teacher$1 = "Academy Admin Teacher";
3299
+ var academy_admin_teacher$1 = "Academy Admin/Teacher";
3300
+ var academyadmin_teacher$1 = "Academy Admin/Teacher";
3282
3301
  var date_required$1 = "Date is required";
3283
3302
  var start_time_required$1 = "Start time is required";
3284
3303
  var end_time_required$1 = "End time is required";
3285
3304
  var title_required$1 = "Title is required";
3286
3305
  var delete_schedule$1 = "Delete Schedule";
3287
3306
  var edit_schedule$1 = "Edit Schedule";
3288
- var are_you_sure_you_want_to_delete_the_schedule$1 = "are_you_sure_you_want_to_delete_the_schedule: {{name}}";
3307
+ var are_you_sure_you_want_to_delete_the_schedule$1 = "Are you sure you want to delete the schedule: {{name}}";
3289
3308
  var correct_answer_rate$1 = "Correct answer rate";
3290
3309
  var progress$1 = "Progress";
3291
3310
  var grammar$1 = "Grammar";
@@ -3378,6 +3397,7 @@ var delete_textbook_successfully$1 = "Delete the textbook successfully";
3378
3397
  var information$1 = "Information";
3379
3398
  var running_time$1 = "Running time";
3380
3399
  var hours_mins_seconds$1 = "{{hours}}h {{mins}}m {{seconds}}s";
3400
+ var create_schedule_successfully$1 = "Create schedule successfully";
3381
3401
  var prepared_textbook$1 = "Prepared Textbook";
3382
3402
  var enable_phone_pass_code$1 = "Enable phone pass code";
3383
3403
  var custom$1 = "Custom";
@@ -3387,6 +3407,13 @@ var pass_code_length_must_be_n$1 = "Pass code length must be {{n}}";
3387
3407
  var email_is_invalid = "Email is invalid";
3388
3408
  var parent_phone_number_is_invalid$1 = "Parent phone number is invalid";
3389
3409
  var parent_phone_number_is_required$1 = "Parent phone number is required";
3410
+ var update_schedule_successfully$1 = "Update schedule successfully";
3411
+ var delete_schedule_successfully$1 = "Delete schedule successfully";
3412
+ var group$1 = "Group";
3413
+ var update_schedule$1 = "Update Schedule";
3414
+ var back_month$1 = "Back Month";
3415
+ var today_schedule$1 = "Today's schedule";
3416
+ var schedule_achieved$1 = "Schedule achieved";
3390
3417
  var lang_en = {
3391
3418
  problem_solving: problem_solving$1,
3392
3419
  my_story: my_story$1,
@@ -4283,6 +4310,7 @@ var lang_en = {
4283
4310
  category_required: category_required$1,
4284
4311
  subject_required: subject_required$1,
4285
4312
  academy_admin_teacher: academy_admin_teacher$1,
4313
+ academyadmin_teacher: academyadmin_teacher$1,
4286
4314
  date_required: date_required$1,
4287
4315
  start_time_required: start_time_required$1,
4288
4316
  end_time_required: end_time_required$1,
@@ -4384,6 +4412,7 @@ var lang_en = {
4384
4412
  information: information$1,
4385
4413
  running_time: running_time$1,
4386
4414
  hours_mins_seconds: hours_mins_seconds$1,
4415
+ create_schedule_successfully: create_schedule_successfully$1,
4387
4416
  prepared_textbook: prepared_textbook$1,
4388
4417
  enable_phone_pass_code: enable_phone_pass_code$1,
4389
4418
  custom: custom$1,
@@ -4392,7 +4421,14 @@ var lang_en = {
4392
4421
  pass_code_length_must_be_n: pass_code_length_must_be_n$1,
4393
4422
  email_is_invalid: email_is_invalid,
4394
4423
  parent_phone_number_is_invalid: parent_phone_number_is_invalid$1,
4395
- parent_phone_number_is_required: parent_phone_number_is_required$1
4424
+ parent_phone_number_is_required: parent_phone_number_is_required$1,
4425
+ update_schedule_successfully: update_schedule_successfully$1,
4426
+ delete_schedule_successfully: delete_schedule_successfully$1,
4427
+ group: group$1,
4428
+ update_schedule: update_schedule$1,
4429
+ back_month: back_month$1,
4430
+ today_schedule: today_schedule$1,
4431
+ schedule_achieved: schedule_achieved$1
4396
4432
  };
4397
4433
 
4398
4434
  i18n.use(initReactI18next).init({
@@ -9200,74 +9236,7 @@ var ListView = function ListView(_ref) {
9200
9236
  }));
9201
9237
  };
9202
9238
 
9203
- var useVirtualListView = function useVirtualListView(props) {
9204
- var data = props.data,
9205
- loading = props.loading,
9206
- onLoadMore = props.onLoadMore;
9207
- var handleLoadMore = function handleLoadMore() {
9208
- if (loading) return;
9209
- onLoadMore === null || onLoadMore === void 0 ? void 0 : onLoadMore();
9210
- };
9211
- var onScroll = function onScroll(_ref) {
9212
- var scrollTop = _ref.scrollTop,
9213
- clientHeight = _ref.clientHeight,
9214
- scrollHeight = _ref.scrollHeight;
9215
- if (scrollTop + clientHeight >= scrollHeight - 100) {
9216
- handleLoadMore();
9217
- }
9218
- };
9219
- var rowCount = data.length + (loading ? 1 : 0);
9220
- return {
9221
- rowCount: rowCount,
9222
- onScroll: onScroll
9223
- };
9224
- };
9225
-
9226
- var cellMeasurerCache = new CellMeasurerCache({
9227
- fixedWidth: true,
9228
- defaultHeight: 50
9229
- });
9230
-
9231
- var VirtualListItem = function VirtualListItem(_ref) {
9232
- var isLoading = _ref.isLoading,
9233
- rowData = _ref.rowData,
9234
- style = _ref.style,
9235
- parent = _ref.parent,
9236
- index = _ref.index,
9237
- renderItem = _ref.renderItem,
9238
- loadingElement = _ref.loadingElement;
9239
- return React__default.createElement(CellMeasurer, {
9240
- cache: cellMeasurerCache,
9241
- columnIndex: 0,
9242
- rowIndex: index,
9243
- key: rowData === null || rowData === void 0 ? void 0 : rowData.id,
9244
- parent: parent
9245
- }, function (_ref2) {
9246
- var measure = _ref2.measure;
9247
- if (isLoading) {
9248
- if (loadingElement) return loadingElement;
9249
- return React__default.createElement("div", {
9250
- key: rowData === null || rowData === void 0 ? void 0 : rowData.id,
9251
- style: style
9252
- }, React__default.createElement(Box, {
9253
- p: 1,
9254
- className: "d-flex justify-content-center align-items-center w-100"
9255
- }, React__default.createElement(CircularProgress, {
9256
- size: 24,
9257
- sx: {
9258
- color: "#5d5d5b"
9259
- }
9260
- })));
9261
- }
9262
- return React__default.createElement("div", {
9263
- key: rowData === null || rowData === void 0 ? void 0 : rowData.id,
9264
- style: style,
9265
- ref: measure
9266
- }, renderItem(rowData, index));
9267
- });
9268
- };
9269
-
9270
- var VirtualEmptyItem = function VirtualEmptyItem(_ref) {
9239
+ var VirtualTableEmpty = function VirtualTableEmpty(_ref) {
9271
9240
  var emptyElement = _ref.emptyElement;
9272
9241
  var _useTranslation = useTranslation(),
9273
9242
  t = _useTranslation.t;
@@ -9280,186 +9249,70 @@ var VirtualEmptyItem = function VirtualEmptyItem(_ref) {
9280
9249
  var VirtualListView = function VirtualListView(props) {
9281
9250
  var data = props.data,
9282
9251
  containerProps = props.containerProps,
9283
- listHeight = props.listHeight,
9284
- _props$overscanRowCou = props.overscanRowCount,
9285
- overscanRowCount = _props$overscanRowCou === void 0 ? 5 : _props$overscanRowCou,
9286
9252
  renderItem = props.renderItem,
9287
9253
  emptyElement = props.emptyElement,
9288
- loadingElement = props.loadingElement;
9289
- var _useVirtualListView = useVirtualListView(props),
9290
- rowCount = _useVirtualListView.rowCount,
9291
- onScroll = _useVirtualListView.onScroll;
9292
- var rowRenderer = useCallback(function (props) {
9293
- var index = props.index;
9294
- var isLoading = index === data.length;
9295
- var rowData = isLoading ? undefined : data[index];
9296
- return React__default.createElement(VirtualListItem, Object.assign({}, props, {
9297
- rowData: rowData,
9298
- isLoading: isLoading,
9299
- renderItem: renderItem,
9300
- loadingElement: loadingElement
9301
- }));
9302
- }, [JSON.stringify(data)]);
9303
- var noRowsRenderer = useCallback(function () {
9304
- return React__default.createElement(VirtualEmptyItem, {
9305
- emptyElement: emptyElement
9306
- });
9307
- }, []);
9254
+ loading = props.loading,
9255
+ loadingElement = props.loadingElement,
9256
+ listHeight = props.listHeight;
9308
9257
  return React__default.createElement(Box, Object.assign({}, containerProps), React__default.createElement(AutoSizer, {
9309
9258
  disableHeight: !!listHeight
9310
9259
  }, function (_ref) {
9311
9260
  var width = _ref.width,
9312
9261
  height = _ref.height;
9313
- return React__default.createElement(List$1, {
9262
+ return React__default.createElement(Box, {
9314
9263
  width: width,
9315
- height: listHeight || height,
9316
- rowCount: rowCount,
9317
- rowHeight: cellMeasurerCache.rowHeight,
9318
- rowRenderer: rowRenderer,
9319
- deferredMeasurementCache: cellMeasurerCache,
9320
- overscanRowCount: overscanRowCount,
9321
- noRowsRenderer: noRowsRenderer,
9322
- onScroll: onScroll
9323
- });
9264
+ height: height,
9265
+ overflow: "auto"
9266
+ }, loading && React__default.createElement(Fragment$1, null, loadingElement != null ? loadingElement : React__default.createElement(Box, {
9267
+ p: 1,
9268
+ className: "d-flex justify-content-center align-items-center w-100"
9269
+ }, React__default.createElement(CircularProgress, {
9270
+ size: 24,
9271
+ sx: {
9272
+ color: "#5d5d5b"
9273
+ }
9274
+ }))), !loading && !data.length && React__default.createElement(VirtualTableEmpty, {
9275
+ emptyElement: emptyElement
9276
+ }), !loading && !!data.length && React__default.createElement(ListView, {
9277
+ data: data,
9278
+ render: renderItem
9279
+ }));
9324
9280
  }));
9325
9281
  };
9326
9282
 
9327
- var cellMeasurerCache$1 = new CellMeasurerCache({
9328
- defaultWidth: 100,
9329
- defaultHeight: 50
9330
- });
9331
-
9332
- var VirtualTableRowItem = function VirtualTableRowItem(_ref) {
9333
- var isLoading = _ref.isLoading,
9334
- style = _ref.style,
9335
- parent = _ref.parent,
9336
- rowIndex = _ref.rowIndex,
9337
- columnIndex = _ref.columnIndex,
9338
- renderItem = _ref.renderItem,
9339
- loadingElement = _ref.loadingElement;
9340
- return React__default.createElement(CellMeasurer, {
9341
- cache: cellMeasurerCache$1,
9342
- columnIndex: columnIndex,
9343
- rowIndex: rowIndex,
9344
- key: rowIndex + "-" + columnIndex,
9345
- parent: parent
9346
- }, function (_ref2) {
9347
- var measure = _ref2.measure;
9348
- if (isLoading) {
9349
- if (loadingElement) return loadingElement;
9350
- return React__default.createElement("div", {
9351
- style: style
9352
- }, React__default.createElement(Box, {
9353
- p: 1,
9354
- className: "d-flex justify-content-center align-items-center w-100"
9355
- }, React__default.createElement(CircularProgress, {
9356
- size: 24,
9357
- sx: {
9358
- color: "#5d5d5b"
9359
- }
9360
- })));
9361
- }
9362
- return React__default.createElement("div", {
9363
- style: style,
9364
- ref: measure
9365
- }, renderItem(rowIndex, columnIndex));
9366
- });
9367
- };
9368
-
9369
- var VirtualTableEmpty = function VirtualTableEmpty(_ref) {
9370
- var emptyElement = _ref.emptyElement;
9371
- var _useTranslation = useTranslation(),
9372
- t = _useTranslation.t;
9373
- if (emptyElement) return emptyElement;
9374
- return React__default.createElement(Box, null, React__default.createElement(Typography, {
9375
- className: "text-center text-muted"
9376
- }, t("no_data")));
9377
- };
9378
-
9379
- var _excluded$6 = ["data", "containerProps", "listHeight", "overscanRowCount", "renderItem", "emptyElement", "loadingElement", "fixedColumnCount", "fixedRowCount", "listWidth"];
9380
9283
  var VirtualTableView = function VirtualTableView(props) {
9381
9284
  var data = props.data,
9382
9285
  containerProps = props.containerProps,
9383
- listHeight = props.listHeight,
9384
- _props$overscanRowCou = props.overscanRowCount,
9385
- overscanRowCount = _props$overscanRowCou === void 0 ? 5 : _props$overscanRowCou,
9386
9286
  renderItem = props.renderItem,
9387
9287
  emptyElement = props.emptyElement,
9388
- loadingElement = props.loadingElement,
9389
- fixedColumnCount = props.fixedColumnCount,
9390
- fixedRowCount = props.fixedRowCount,
9391
- listWidth = props.listWidth,
9392
- rest = _objectWithoutPropertiesLoose(props, _excluded$6);
9393
- var columnCount = props.columnCount;
9394
- var _useVirtualListView = useVirtualListView(props),
9395
- rowCount = _useVirtualListView.rowCount,
9396
- onScroll = _useVirtualListView.onScroll;
9397
- var _useState = useState(false),
9398
- renderedColumnWidth = _useState[0],
9399
- setRenderedColumnWidth = _useState[1];
9288
+ columnCount = props.columnCount,
9289
+ loading = props.loading,
9290
+ loadingElement = props.loadingElement;
9400
9291
  var containerRef = useRef(null);
9401
- var listRef = useRef(null);
9402
- var cellRenderer = useCallback(function (props) {
9403
- var rowIndex = props.rowIndex;
9404
- var isLoading = rowIndex === data.length;
9405
- return React__default.createElement(VirtualTableRowItem, Object.assign({}, props, {
9406
- isLoading: isLoading,
9407
- renderItem: renderItem,
9408
- loadingElement: loadingElement
9292
+ var renderTableRow = function renderTableRow(_, index) {
9293
+ return React__default.createElement(Stack, {
9294
+ direction: "row"
9295
+ }, Array.from({
9296
+ length: columnCount
9297
+ }, function (_, colIndex) {
9298
+ return renderItem(index, colIndex);
9409
9299
  }));
9410
- }, [JSON.stringify(data)]);
9411
- var noRowsRenderer = useCallback(function () {
9412
- return React__default.createElement(VirtualTableEmpty, {
9413
- emptyElement: emptyElement
9414
- });
9415
- }, []);
9416
- var onSectionRendered = function onSectionRendered(_) {
9417
- setRenderedColumnWidth(true);
9418
- };
9419
- var columnWidth = useCallback(function (params) {
9420
- var _containerRef$current, _containerRef$current2;
9421
- var index = params.index;
9422
- var cWidth = cellMeasurerCache$1.columnWidth(params);
9423
- if (listWidth) return cWidth;
9424
- var totalWidths = columnCount * cWidth;
9425
- var w = cWidth;
9426
- if ((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.offsetWidth && totalWidths < ((_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.offsetWidth) && index === columnCount - 1) {
9427
- var _containerRef$current3;
9428
- w = Math.max(cWidth, ((_containerRef$current3 = containerRef.current) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.offsetWidth) - (columnCount - 1) * cWidth);
9429
- }
9430
- return w;
9431
- }, [columnCount]);
9432
- useEffect(function () {
9433
- if (renderedColumnWidth && listRef.current) {
9434
- listRef.current.forceUpdateGrids();
9435
- }
9436
- }, [renderedColumnWidth]);
9300
+ };
9437
9301
  return React__default.createElement(Box, Object.assign({
9438
9302
  ref: containerRef
9439
- }, containerProps), React__default.createElement(AutoSizer, {
9440
- disableWidth: !!listWidth,
9441
- disableHeight: !!listHeight
9442
- }, function (_ref) {
9443
- var width = _ref.width,
9444
- height = _ref.height;
9445
- return React__default.createElement(MultiGrid, Object.assign({
9446
- ref: listRef,
9447
- fixedRowCount: fixedRowCount,
9448
- fixedColumnCount: fixedColumnCount,
9449
- cellRenderer: cellRenderer,
9450
- enableFixedColumnScroll: !!fixedColumnCount && fixedColumnCount > 0,
9451
- enableFixedRowScroll: !!fixedRowCount && fixedRowCount > 0,
9452
- columnWidth: columnWidth,
9453
- height: listHeight || height,
9454
- rowHeight: cellMeasurerCache$1.rowHeight,
9455
- deferredMeasurementCache: cellMeasurerCache$1,
9456
- rowCount: rowCount,
9457
- width: listWidth || width,
9458
- overscanRowCount: overscanRowCount,
9459
- noRowsRenderer: noRowsRenderer,
9460
- onScroll: onScroll,
9461
- onSectionRendered: onSectionRendered
9462
- }, rest));
9303
+ }, containerProps), loading && React__default.createElement(Fragment$1, null, loadingElement != null ? loadingElement : React__default.createElement(Box, {
9304
+ p: 1,
9305
+ className: "d-flex justify-content-center align-items-center w-100"
9306
+ }, React__default.createElement(CircularProgress, {
9307
+ size: 24,
9308
+ sx: {
9309
+ color: "#5d5d5b"
9310
+ }
9311
+ }))), !loading && !data.length && React__default.createElement(VirtualTableEmpty, {
9312
+ emptyElement: emptyElement
9313
+ }), !loading && !!data.length && React__default.createElement(ListView, {
9314
+ data: data,
9315
+ render: renderTableRow
9463
9316
  }));
9464
9317
  };
9465
9318
 
@@ -10694,6 +10547,7 @@ var useLogiQRCode = function useLogiQRCode(props) {
10694
10547
  var _useState8 = useState(false),
10695
10548
  error = _useState8[0],
10696
10549
  setError = _useState8[1];
10550
+ var firstLoadRef = useRef(true);
10697
10551
  var onVerify = useCallback(function (token) {
10698
10552
  setTokenReCaptcha(token);
10699
10553
  }, []);
@@ -10703,9 +10557,11 @@ var useLogiQRCode = function useLogiQRCode(props) {
10703
10557
  setRefreshReCaptcha(function (b) {
10704
10558
  return !b;
10705
10559
  });
10560
+ firstLoadRef.current = false;
10706
10561
  setLoadingQR(false);
10707
10562
  };
10708
- if (!tokenReCaptcha || !!(qrCodeData !== null && qrCodeData !== void 0 && qrCodeData.key) || error) return Promise.resolve();
10563
+ if (!tokenReCaptcha) return Promise.resolve();
10564
+ resetData();
10709
10565
  setLoadingQR(true);
10710
10566
  if (!academyDomain) localStorage.setItem(LEARNING_SPACE, "true");
10711
10567
  var _temp = _catch(function () {
@@ -10740,8 +10596,8 @@ var useLogiQRCode = function useLogiQRCode(props) {
10740
10596
  }
10741
10597
  };
10742
10598
  useEffect(function () {
10743
- getQRCodeDataLogin();
10744
- }, [academyDomain, tokenReCaptcha, qrCodeData === null || qrCodeData === void 0 ? void 0 : qrCodeData.key]);
10599
+ if (firstLoadRef.current) getQRCodeDataLogin();
10600
+ }, [academyDomain, tokenReCaptcha]);
10745
10601
  useEffect(function () {
10746
10602
  if (qrCodeData !== null && qrCodeData !== void 0 && qrCodeData.key) {
10747
10603
  if (pusher.current) pusher.current.disconnect();
@@ -10779,9 +10635,8 @@ var useLogiQRCode = function useLogiQRCode(props) {
10779
10635
  var redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
10780
10636
  redirectLoginUser(user, token, redirectUrl);
10781
10637
  });
10782
- }, function (error) {
10638
+ }, function () {
10783
10639
  setInvalid(true);
10784
- toast.error(getErrorMessage(t, error));
10785
10640
  });
10786
10641
  return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
10787
10642
  } catch (e) {
@@ -10810,7 +10665,7 @@ var useLogiQRCode = function useLogiQRCode(props) {
10810
10665
  setError(false);
10811
10666
  };
10812
10667
  var handleGenerateNewAQRCode = function handleGenerateNewAQRCode() {
10813
- resetData();
10668
+ getQRCodeDataLogin();
10814
10669
  };
10815
10670
  return {
10816
10671
  t: t,
@@ -10922,10 +10777,10 @@ var LoginQRCode = function LoginQRCode(props) {
10922
10777
  }));
10923
10778
  };
10924
10779
 
10925
- var _excluded$7 = ["history"];
10780
+ var _excluded$6 = ["history"];
10926
10781
  var Login = function Login(_ref) {
10927
10782
  var history = _ref.history,
10928
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
10783
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
10929
10784
  var _useLogin = useLogin$1({
10930
10785
  homeAcademyUrl: rest.homeAcademyUrl,
10931
10786
  homeUrl: rest.homeUrl,
@@ -11875,11 +11730,11 @@ var DEFAULT_USER_FILTERS = {
11875
11730
 
11876
11731
  var styles$2 = {"avatar":"_2rJkZ","date-picker":"_1iqE2","time-picker":"_20xtc","teacher-selector-wrapper":"_3L1Oj"};
11877
11732
 
11878
- var _excluded$8 = ["teachers", "value"];
11733
+ var _excluded$7 = ["teachers", "value"];
11879
11734
  var TeacherSelector = function TeacherSelector(_ref) {
11880
11735
  var teachers = _ref.teachers,
11881
11736
  value = _ref.value,
11882
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
11737
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
11883
11738
  var teacherOptions = teachers.map(function (i) {
11884
11739
  return {
11885
11740
  label: i.teacherName + "/" + i.teacherEmail,
@@ -11907,7 +11762,7 @@ var ErrorHandler = function ErrorHandler(_ref) {
11907
11762
  var ClassForm = function ClassForm(_ref) {
11908
11763
  var history = _ref.history,
11909
11764
  formikProp = _ref.formikProp,
11910
- id = _ref.id,
11765
+ classId = _ref.classId,
11911
11766
  data = _ref.data,
11912
11767
  teachers = _ref.teachers,
11913
11768
  disabled = _ref.disabled,
@@ -12272,7 +12127,7 @@ var ClassForm = function ClassForm(_ref) {
12272
12127
  formikProp.handleSubmit();
12273
12128
  },
12274
12129
  disabled: disabled
12275
- }, !id ? t("create_and_continue") : t("save_and_exit")), React__default.createElement(Button, {
12130
+ }, !classId ? t("create_and_continue") : t("save_and_exit")), React__default.createElement(Button, {
12276
12131
  color: "secondary",
12277
12132
  className: "bg-secondary",
12278
12133
  variant: "contained",
@@ -13170,14 +13025,15 @@ var useTeacherList = function useTeacherList() {
13170
13025
  };
13171
13026
  };
13172
13027
 
13173
- var _excluded$9 = ["getStudents"],
13028
+ var _excluded$8 = ["getStudents"],
13174
13029
  _excluded2 = ["getTeachers"],
13175
13030
  _excluded3 = ["getLessons"];
13176
13031
  var PAGE_TITLE$4 = "classes";
13177
13032
  var useClassDetail = function useClassDetail(_ref) {
13178
13033
  var history = _ref.history,
13179
- id = _ref.id,
13180
- role = _ref.role;
13034
+ classId = _ref.classId,
13035
+ role = _ref.role,
13036
+ classListUrl = _ref.classListUrl;
13181
13037
  var _useTranslation = useTranslation(),
13182
13038
  t = _useTranslation.t;
13183
13039
  var dispatch = useDispatch();
@@ -13188,8 +13044,11 @@ var useClassDetail = function useClassDetail(_ref) {
13188
13044
  });
13189
13045
  var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
13190
13046
  var isOneRoleExists = roles.length === 1;
13191
- var isAdmin = roles.includes(Role.Admin) && role === Role.Admin;
13192
- var isTeacher = roles.includes(Role.Teacher) && !roles.includes(Role.Admin) && role === Role.Teacher;
13047
+ var isAdmin = roles.includes(Role.Admin);
13048
+ var isTeacher = roles.includes(Role.Teacher) && !isAdmin;
13049
+ var isSuperAdmin = user === null || user === void 0 ? void 0 : user.isSuperAdmin;
13050
+ var isteacherSite = role === Role.Teacher;
13051
+ var isDisabled = isAdmin && !isSuperAdmin && isteacherSite || isTeacher;
13193
13052
  var _useState = useState(),
13194
13053
  course = _useState[0],
13195
13054
  setCourse = _useState[1];
@@ -13215,13 +13074,13 @@ var useClassDetail = function useClassDetail(_ref) {
13215
13074
  var isSelected = function isSelected(id) {
13216
13075
  return selected.indexOf(id) !== -1;
13217
13076
  };
13218
- var _useStudentClassList = useStudentClassList(id ? +id : 0),
13077
+ var _useStudentClassList = useStudentClassList(classId),
13219
13078
  getStudents = _useStudentClassList.getStudents,
13220
- studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$9);
13221
- var _useTeacherClassList = useTeacherClassList(id ? +id : 0),
13079
+ studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$8);
13080
+ var _useTeacherClassList = useTeacherClassList(classId),
13222
13081
  getTeachers = _useTeacherClassList.getTeachers,
13223
13082
  teacherListProps = _objectWithoutPropertiesLoose(_useTeacherClassList, _excluded2);
13224
- var _useLessonClassList = useLessonClassList(id ? +id : 0),
13083
+ var _useLessonClassList = useLessonClassList(classId),
13225
13084
  getLessons = _useLessonClassList.getLessons,
13226
13085
  lessonListProps = _objectWithoutPropertiesLoose(_useLessonClassList, _excluded3);
13227
13086
  var selectedLesson = lessonListProps.selectedLesson,
@@ -13245,12 +13104,10 @@ var useClassDetail = function useClassDetail(_ref) {
13245
13104
  isLoading && dispatch(setLoading(false));
13246
13105
  };
13247
13106
  var _exit = false;
13248
- if (!id) return Promise.resolve();
13249
- var idNumber = +id;
13250
- if (isNaN(idNumber)) return Promise.resolve();
13107
+ if (!classId) return Promise.resolve();
13251
13108
  isLoading && dispatch(setLoading(true));
13252
13109
  var _temp = _catch(function () {
13253
- return Promise.resolve(getClassByIdApi(idNumber)).then(function (res) {
13110
+ return Promise.resolve(getClassByIdApi(classId)).then(function (res) {
13254
13111
  var classData = res.data;
13255
13112
  if (!classData) {
13256
13113
  toast.error(t("get_class_detail_error"));
@@ -13367,22 +13224,22 @@ var useClassDetail = function useClassDetail(_ref) {
13367
13224
  var _temp12 = function _temp12() {
13368
13225
  dispatch(setLoading(false));
13369
13226
  };
13370
- if (!id || !openSelectDialog) return Promise.resolve();
13227
+ if (!classId || !openSelectDialog) return Promise.resolve();
13371
13228
  dispatch(setLoading(true));
13372
13229
  var _temp11 = _catch(function () {
13373
13230
  function _temp10() {
13374
13231
  return Promise.resolve(handleGetDetailData(false)).then(function () {
13375
- toast.success(t(id ? "update_class_successfully" : "create_class_successfully"));
13232
+ toast.success(t(classId ? "update_class_successfully" : "create_class_successfully"));
13376
13233
  handleCloseSelectDialog();
13377
13234
  });
13378
13235
  }
13379
13236
  var _temp9 = function () {
13380
13237
  if (openSelectDialog === "Student") {
13381
- return Promise.resolve(addStudentToClass(+id, userIds)).then(function () {
13238
+ return Promise.resolve(addStudentToClass(classId, userIds)).then(function () {
13382
13239
  return Promise.resolve(getStudents()).then(function () {});
13383
13240
  });
13384
13241
  } else {
13385
- return Promise.resolve(addTeacherToClass(+id, userIds)).then(function () {
13242
+ return Promise.resolve(addTeacherToClass(classId, userIds)).then(function () {
13386
13243
  return Promise.resolve(getTeachers()).then(function () {});
13387
13244
  });
13388
13245
  }
@@ -13417,16 +13274,16 @@ var useClassDetail = function useClassDetail(_ref) {
13417
13274
  dispatch(setLoading(true));
13418
13275
  var _temp15 = _catch(function () {
13419
13276
  function _temp14() {
13420
- toast.success(t(id ? "update_class_successfully" : "create_class_successfully"));
13277
+ toast.success(t(classId ? "update_class_successfully" : "create_class_successfully"));
13421
13278
  }
13422
13279
  var _temp13 = function () {
13423
- if (!id) {
13280
+ if (!classId) {
13424
13281
  return Promise.resolve(createClassApi(body)).then(function (res) {
13425
- pushTo(history, "/classes/" + res.data.id);
13282
+ pushTo(history, classListUrl + "/" + res.data.id);
13426
13283
  });
13427
13284
  } else {
13428
- return Promise.resolve(updateClassApi(+id, body)).then(function () {
13429
- pushTo(history, "/classes");
13285
+ return Promise.resolve(updateClassApi(classId, body)).then(function () {
13286
+ pushTo(history, classListUrl);
13430
13287
  });
13431
13288
  }
13432
13289
  }();
@@ -13441,10 +13298,10 @@ var useClassDetail = function useClassDetail(_ref) {
13441
13298
  };
13442
13299
  var getStudentNotInClassList = function getStudentNotInClassList() {
13443
13300
  try {
13444
- if (!id) return Promise.resolve();
13301
+ if (!classId) return Promise.resolve();
13445
13302
  var _temp17 = _catch(function () {
13446
13303
  var _textSearchRef$curren;
13447
- return Promise.resolve(getStudentClassApi(+id, _extends({}, filter, {
13304
+ return Promise.resolve(getStudentClassApi(classId, _extends({}, filter, {
13448
13305
  textSearch: (_textSearchRef$curren = textSearchRef.current) === null || _textSearchRef$curren === void 0 ? void 0 : _textSearchRef$curren.value,
13449
13306
  isInCourse: false
13450
13307
  }))).then(function (res) {
@@ -13480,10 +13337,10 @@ var useClassDetail = function useClassDetail(_ref) {
13480
13337
  };
13481
13338
  var getTeacherNotInClassList = function getTeacherNotInClassList() {
13482
13339
  try {
13483
- if (!id) return Promise.resolve();
13340
+ if (!classId) return Promise.resolve();
13484
13341
  var _temp18 = _catch(function () {
13485
13342
  var _textSearchRef$curren2;
13486
- return Promise.resolve(getTeacherClassApi(+id, _extends({}, filter, {
13343
+ return Promise.resolve(getTeacherClassApi(classId, _extends({}, filter, {
13487
13344
  textSearch: (_textSearchRef$curren2 = textSearchRef.current) === null || _textSearchRef$curren2 === void 0 ? void 0 : _textSearchRef$curren2.value,
13488
13345
  isInCourse: false
13489
13346
  }))).then(function (res) {
@@ -13599,7 +13456,7 @@ var useClassDetail = function useClassDetail(_ref) {
13599
13456
  };
13600
13457
  useEffect(function () {
13601
13458
  handleGetDetailData();
13602
- }, [id]);
13459
+ }, [classId]);
13603
13460
  useEffect(function () {
13604
13461
  handleFetchUsers();
13605
13462
  }, [JSON.stringify(filter)]);
@@ -13607,9 +13464,9 @@ var useClassDetail = function useClassDetail(_ref) {
13607
13464
  document.title = t("study_peak") + " | " + t(PAGE_TITLE$4);
13608
13465
  }, [t]);
13609
13466
  return {
13610
- id: id,
13467
+ classId: classId,
13611
13468
  schema: schema,
13612
- isAdmin: isAdmin,
13469
+ isDisabled: isDisabled,
13613
13470
  paging: paging,
13614
13471
  filter: filter,
13615
13472
  isTeacher: isTeacher,
@@ -13969,12 +13826,12 @@ var LessonList = function LessonList(_ref) {
13969
13826
  }));
13970
13827
  };
13971
13828
 
13972
- var _excluded$a = ["children", "value", "index"];
13829
+ var _excluded$9 = ["children", "value", "index"];
13973
13830
  var CustomTabPanel = function CustomTabPanel(props) {
13974
13831
  var children = props.children,
13975
13832
  value = props.value,
13976
13833
  index = props.index,
13977
- other = _objectWithoutPropertiesLoose(props, _excluded$a);
13834
+ other = _objectWithoutPropertiesLoose(props, _excluded$9);
13978
13835
  return React__default.createElement("div", Object.assign({
13979
13836
  role: "tabpanel",
13980
13837
  hidden: value !== index,
@@ -14001,15 +13858,17 @@ var ClassDetail = function ClassDetail(_ref) {
14001
13858
  history = _ref.history,
14002
13859
  classListUrl = _ref.classListUrl,
14003
13860
  role = _ref.role;
13861
+ var classId = !id || Number.isNaN(+id) ? 0 : +id;
14004
13862
  var _useClassDetail = useClassDetail({
14005
13863
  history: history,
14006
- id: id,
14007
- role: role
13864
+ classId: classId,
13865
+ role: role,
13866
+ classListUrl: classListUrl
14008
13867
  }),
14009
13868
  schema = _useClassDetail.schema,
14010
13869
  paging = _useClassDetail.paging,
14011
- isAdmin = _useClassDetail.isAdmin,
14012
13870
  isTeacher = _useClassDetail.isTeacher,
13871
+ isDisabled = _useClassDetail.isDisabled,
14013
13872
  filter = _useClassDetail.filter,
14014
13873
  listUserSelected = _useClassDetail.listUserSelected,
14015
13874
  userList = _useClassDetail.userList,
@@ -14059,7 +13918,7 @@ var ClassDetail = function ClassDetail(_ref) {
14059
13918
  if (selected === TabList$1[1].value) studentListProps.resetData();
14060
13919
  if (selected === TabList$1[2].value) studentListProps.resetData();
14061
13920
  }, [selected]);
14062
- return React__default.createElement(Box, null, !!id && React__default.createElement(Box, null, React__default.createElement(Stack, {
13921
+ return React__default.createElement(Box, null, !!classId && React__default.createElement(Box, null, React__default.createElement(Stack, {
14063
13922
  display: "flex",
14064
13923
  flexDirection: "row",
14065
13924
  gap: "8px"
@@ -14089,12 +13948,12 @@ var ClassDetail = function ClassDetail(_ref) {
14089
13948
  direction: "row",
14090
13949
  alignItems: "center",
14091
13950
  justifyContent: "space-between",
14092
- mt: !!id ? 2 : 0,
13951
+ mt: classId ? 2 : 0,
14093
13952
  mb: 2,
14094
- pt: !!id ? "12px" : "0px"
13953
+ pt: classId ? "12px" : "0px"
14095
13954
  }, React__default.createElement(Typography, {
14096
13955
  variant: "h4"
14097
- }, t(!id ? "create_class" : isAdmin ? "update_class" : "view_class"))), React__default.createElement(Formik, {
13956
+ }, t(!classId ? "create_class" : !isDisabled ? "update_class" : "view_class"))), React__default.createElement(Formik, {
14098
13957
  initialValues: DEFAULT_CLASS_REQUEST,
14099
13958
  validationSchema: schema,
14100
13959
  onSubmit: handleSubmit
@@ -14102,30 +13961,30 @@ var ClassDetail = function ClassDetail(_ref) {
14102
13961
  return React__default.createElement(ClassForm, {
14103
13962
  classListUrl: classListUrl,
14104
13963
  history: history,
14105
- id: id,
13964
+ classId: classId,
14106
13965
  formikProp: props,
14107
13966
  data: classRequest,
14108
13967
  teachers: teacherOptions,
14109
- disabled: !isAdmin,
13968
+ disabled: isDisabled,
14110
13969
  onSearchTeachers: handleChangeTextSearchTeachers
14111
13970
  });
14112
13971
  })), React__default.createElement(CustomTabPanel, {
14113
13972
  value: selected,
14114
13973
  index: TabList$1[1].value
14115
- }, !!id && !Number.isNaN(+id) && selected === TabList$1[1].value && React__default.createElement(StudentList, Object.assign({
14116
- disabled: !isTeacher && !isAdmin,
13974
+ }, !!classId && selected === TabList$1[1].value && React__default.createElement(StudentList, Object.assign({
13975
+ disabled: isDisabled && !isTeacher,
14117
13976
  onAdd: handleOpenSelectDialog
14118
13977
  }, studentListProps))), React__default.createElement(CustomTabPanel, {
14119
13978
  value: selected,
14120
13979
  index: TabList$1[2].value
14121
- }, !!id && !Number.isNaN(+id) && selected === TabList$1[2].value && React__default.createElement(TeacherList, Object.assign({
14122
- disabled: !isAdmin,
13980
+ }, !!classId && selected === TabList$1[2].value && React__default.createElement(TeacherList, Object.assign({
13981
+ disabled: isDisabled,
14123
13982
  onAdd: handleOpenSelectDialog
14124
13983
  }, teacherListProps))), React__default.createElement(CustomTabPanel, {
14125
13984
  value: selected,
14126
13985
  index: TabList$1[3].value
14127
- }, !!id && !Number.isNaN(+id) && selected === TabList$1[3].value && React__default.createElement(LessonList, Object.assign({
14128
- disabled: !isAdmin,
13986
+ }, !!classId && selected === TabList$1[3].value && React__default.createElement(LessonList, Object.assign({
13987
+ disabled: isDisabled,
14129
13988
  startDate: course === null || course === void 0 ? void 0 : course.startDate,
14130
13989
  endDate: course === null || course === void 0 ? void 0 : course.endDate
14131
13990
  }, lessonListProps, {
@@ -14133,7 +13992,7 @@ var ClassDetail = function ClassDetail(_ref) {
14133
13992
  handleDeleteLessonClass: handleDeleteLessonClass,
14134
13993
  teachers: teacherOptions,
14135
13994
  onSearchTeachers: handleChangeTextSearchTeachers
14136
- }))), (isAdmin || openSelectDialog === "Student") && React__default.createElement(SelectDialog, {
13995
+ }))), (!isDisabled && !isTeacher || openSelectDialog === "Student") && React__default.createElement(SelectDialog, {
14137
13996
  open: !!openSelectDialog,
14138
13997
  isStudent: openSelectDialog === "Student",
14139
13998
  onClose: handleCloseSelectDialog,
@@ -14299,6 +14158,10 @@ var ClassList = function ClassList(_ref) {
14299
14158
  role = _ref.role,
14300
14159
  classCreateUrl = _ref.classCreateUrl,
14301
14160
  classUpdateUrl = _ref.classUpdateUrl;
14161
+ var isSuperAdmin = useSelector(function (state) {
14162
+ var _state$common, _state$common$user;
14163
+ 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;
14164
+ });
14302
14165
  var isAdmin = role === Role.Admin;
14303
14166
  var _useClassList = useClassList(history, classCreateUrl, classUpdateUrl),
14304
14167
  t = _useClassList.t,
@@ -14322,7 +14185,7 @@ var ClassList = function ClassList(_ref) {
14322
14185
  mb: 2
14323
14186
  }, React__default.createElement(Typography, {
14324
14187
  variant: "h4"
14325
- }, t("classes")), isAdmin && React__default.createElement(MButton, {
14188
+ }, t("classes")), (isAdmin || isSuperAdmin) && React__default.createElement(MButton, {
14326
14189
  variant: "contained",
14327
14190
  color: "inherit",
14328
14191
  startIcon: React__default.createElement(FaPlus, {
@@ -14362,7 +14225,7 @@ var ClassList = function ClassList(_ref) {
14362
14225
  key: i.id
14363
14226
  }, React__default.createElement(TableCell$1, null, (paging.page - 1) * paging.limit + index + 1), React__default.createElement(TableCell$1, {
14364
14227
  className: "text-nowrap"
14365
- }, 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 && React__default.createElement("div", {
14228
+ }, 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", {
14366
14229
  className: "d-flex"
14367
14230
  }, React__default.createElement(IconButton, {
14368
14231
  color: "default",
@@ -14380,7 +14243,7 @@ var ClassList = function ClassList(_ref) {
14380
14243
  }
14381
14244
  }, React__default.createElement(FaTrashCan, {
14382
14245
  size: 12
14383
- }))), !isAdmin && React__default.createElement(IconButton, {
14246
+ }))), !(isAdmin || isSuperAdmin) && React__default.createElement(IconButton, {
14384
14247
  color: "default",
14385
14248
  className: "bg-primary text-white me-1",
14386
14249
  onClick: function onClick() {
@@ -19237,7 +19100,9 @@ var useNotes = function useNotes(setFilter, filter) {
19237
19100
  }
19238
19101
  setLoadingNotes(true);
19239
19102
  var _temp = _catch(function () {
19240
- return Promise.resolve(getNotesApi(_extends({}, filter))).then(function (res) {
19103
+ return Promise.resolve(getNotesApi(_extends({}, filter, {
19104
+ currentPage: -1
19105
+ }))).then(function (res) {
19241
19106
  var data = res.data;
19242
19107
  setTotalPages((data === null || data === void 0 ? void 0 : data.totalPages) || 0);
19243
19108
  var items = (data === null || data === void 0 ? void 0 : data.items) || [];
@@ -19339,6 +19204,7 @@ var NoteItem = function NoteItem(_ref) {
19339
19204
  }),
19340
19205
  placement: placement
19341
19206
  }, React__default.createElement(IconButton, {
19207
+ disabled: !actions.length,
19342
19208
  onClick: handleMoreClick
19343
19209
  }, React__default.createElement(MdMoreHoriz, {
19344
19210
  color: "#5d5d5b"
@@ -19646,11 +19512,10 @@ var useExamResultData = function useExamResultData(props) {
19646
19512
  var getData = function getData() {
19647
19513
  resetData();
19648
19514
  if (!(user !== null && user !== void 0 && user.email)) return;
19649
- isStudent && chapterId ? getDataTextbookResult() : getStudentData(examCode);
19650
- !isStudent && getStudentDataByTeacher(examSessionId, studentId);
19515
+ if (chapterId) getDataTextbookResult();else isStudent ? getStudentData(examCode) : getStudentDataByTeacher(examSessionId, studentId);
19651
19516
  };
19652
19517
  examCode === "example-code" ? setExampleData() : getData();
19653
- }, [examCode, isStudent, code, examSessionId, studentId, user === null || user === void 0 ? void 0 : user.email]);
19518
+ }, [examCode, isStudent, code, examSessionId, studentId, chapterId, user === null || user === void 0 ? void 0 : user.email]);
19654
19519
  var handlePrevChart = function handlePrevChart() {
19655
19520
  if (dataChartIndex > 0) {
19656
19521
  setDataChartIndex(dataChartIndex - 1);
@@ -21106,6 +20971,9 @@ var UserSchema = object().shape({
21106
20971
  },
21107
20972
  then: function then(schema) {
21108
20973
  return schema.trim().required("school_name_is_required");
20974
+ },
20975
+ otherwise: function otherwise(schema) {
20976
+ return schema.notRequired();
21109
20977
  }
21110
20978
  }),
21111
20979
  grade: number().transform(function (value) {
@@ -21116,6 +20984,9 @@ var UserSchema = object().shape({
21116
20984
  },
21117
20985
  then: function then(schema) {
21118
20986
  return schema.required("student_grade_is_required").typeError("student_grade_is_required").min(1, "student_grade_is_invalid").max(12, "student_grade_is_invalid");
20987
+ },
20988
+ otherwise: function otherwise(schema) {
20989
+ return schema.notRequired();
21119
20990
  }
21120
20991
  }),
21121
20992
  major: string().when("role", {
@@ -21124,6 +20995,9 @@ var UserSchema = object().shape({
21124
20995
  },
21125
20996
  then: function then(schema) {
21126
20997
  return schema.trim().required("major_is_required");
20998
+ },
20999
+ otherwise: function otherwise(schema) {
21000
+ return schema.notRequired();
21127
21001
  }
21128
21002
  }),
21129
21003
  parentPhoneNumber: string().when("role", {
@@ -21134,6 +21008,9 @@ var UserSchema = object().shape({
21134
21008
  return schema.trim().matches(phoneRegExp, {
21135
21009
  message: "parent_phone_number_is_invalid"
21136
21010
  }).min(10, "parent_phone_number_is_invalid").required("parent_phone_number_is_required");
21011
+ },
21012
+ otherwise: function otherwise(schema) {
21013
+ return schema.notRequired();
21137
21014
  }
21138
21015
  }),
21139
21016
  parentName: string().when("role", {
@@ -21142,6 +21019,9 @@ var UserSchema = object().shape({
21142
21019
  },
21143
21020
  then: function then(schema) {
21144
21021
  return schema.trim().required("parent_name_is_required");
21022
+ },
21023
+ otherwise: function otherwise(schema) {
21024
+ return schema.notRequired();
21145
21025
  }
21146
21026
  }),
21147
21027
  subjectId: number().when("role", {
@@ -21181,14 +21061,14 @@ var CSV_PREFIX = "data:text/csv;charset=utf-8,";
21181
21061
 
21182
21062
  var styles$5 = {"action-btn":"_1jXbz","action-btn--pencil":"_at4xP","icon-rotate-180":"_12gv9","drop-area":"_R4bn5"};
21183
21063
 
21184
- var _excluded$b = ["text", "isRequired", "className"];
21064
+ var _excluded$a = ["text", "isRequired", "className"];
21185
21065
  var LabelRequired = function LabelRequired(_ref) {
21186
21066
  var text = _ref.text,
21187
21067
  _ref$isRequired = _ref.isRequired,
21188
21068
  isRequired = _ref$isRequired === void 0 ? true : _ref$isRequired,
21189
21069
  _ref$className = _ref.className,
21190
21070
  className = _ref$className === void 0 ? "" : _ref$className,
21191
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
21071
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
21192
21072
  return React__default.createElement(FormLabel, Object.assign({
21193
21073
  className: "fw-medium mb-1 " + className
21194
21074
  }, rest), text, isRequired && React__default.createElement("span", {
@@ -21242,7 +21122,7 @@ var deleteUserApi = function deleteUserApi(id) {
21242
21122
  return api["delete"](USER_URL + "/delete/" + id);
21243
21123
  };
21244
21124
 
21245
- var _excluded$c = ["ref"],
21125
+ var _excluded$b = ["ref"],
21246
21126
  _excluded2$1 = ["ref"],
21247
21127
  _excluded3$1 = ["ref"],
21248
21128
  _excluded4 = ["ref"],
@@ -21272,7 +21152,7 @@ var UserDialog = function UserDialog(_ref) {
21272
21152
  t = _useTranslation.t;
21273
21153
  var _register = register("fullName"),
21274
21154
  fullNameRef = _register.ref,
21275
- fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$c);
21155
+ fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$b);
21276
21156
  var _register2 = register("email"),
21277
21157
  emailRef = _register2.ref,
21278
21158
  emailBio = _objectWithoutPropertiesLoose(_register2, _excluded2$1);
@@ -21681,7 +21561,8 @@ var UserDialog = function UserDialog(_ref) {
21681
21561
  size: "1rem"
21682
21562
  }) : React__default.createElement(IconButton, {
21683
21563
  className: "bg-success",
21684
- onClick: getDefaultPassCode
21564
+ onClick: getDefaultPassCode,
21565
+ disabled: disabled
21685
21566
  }, React__default.createElement(FaRotateRight, {
21686
21567
  color: "#FFF",
21687
21568
  size: 10
@@ -21708,7 +21589,8 @@ var UserDialog = function UserDialog(_ref) {
21708
21589
  disabled: disabled
21709
21590
  }), React__default.createElement(Box, null, React__default.createElement(IconButton, {
21710
21591
  className: "bg-success",
21711
- onClick: getRandomPassCode
21592
+ onClick: getRandomPassCode,
21593
+ disabled: disabled
21712
21594
  }, React__default.createElement(FaRotateRight, {
21713
21595
  color: "#FFF",
21714
21596
  size: 10
@@ -22369,6 +22251,10 @@ var RecentUserActionDialog = function RecentUserActionDialog(_ref) {
22369
22251
 
22370
22252
  var UserList = function UserList(_ref) {
22371
22253
  var role = _ref.role;
22254
+ var isSuperAdmin = useSelector(function (state) {
22255
+ var _state$common, _state$common$user;
22256
+ 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;
22257
+ });
22372
22258
  var isAdmin = role === Role.Admin;
22373
22259
  var _useUserList = useUserList(role),
22374
22260
  userHeaders = _useUserList.userHeaders,
@@ -22422,7 +22308,7 @@ var UserList = function UserList(_ref) {
22422
22308
  mb: 2
22423
22309
  }, React__default.createElement(Typography, {
22424
22310
  variant: "h4"
22425
- }, t("users")), isAdmin && React__default.createElement("div", {
22311
+ }, t("users")), (isAdmin || isSuperAdmin) && React__default.createElement("div", {
22426
22312
  className: "d-flex"
22427
22313
  }, React__default.createElement("input", {
22428
22314
  type: "file",
@@ -22530,7 +22416,7 @@ var UserList = function UserList(_ref) {
22530
22416
  key: i.id
22531
22417
  }, React__default.createElement(TableCell$1, null, (paging.page - 1) * paging.limit + index + 1), React__default.createElement(TableCell$1, null, i.email), React__default.createElement(TableCell$1, null, i.fullName), React__default.createElement(TableCell$1, null, i.phoneNumber), React__default.createElement(TableCell$1, null, utcToLocalTime(i.createdAt, t("date_time_format"))), React__default.createElement(TableCell$1, null, (_i$classes = i.classes) === null || _i$classes === void 0 ? void 0 : _i$classes.join(", ")), React__default.createElement(TableCell$1, null, (_i$subject = i.subject) === null || _i$subject === void 0 ? void 0 : _i$subject.name), React__default.createElement(TableCell$1, null, !!i.roles && formatRole(i.roles, t)), React__default.createElement(TableCell$1, null, React__default.createElement("div", {
22532
22418
  className: "d-flex"
22533
- }, isAdmin ? React__default.createElement(IconButton, {
22419
+ }, isAdmin || isSuperAdmin ? React__default.createElement(IconButton, {
22534
22420
  color: "default",
22535
22421
  className: styles$5["action-btn"] + " bg-warning text-white me-2",
22536
22422
  onClick: function onClick() {
@@ -22547,7 +22433,7 @@ var UserList = function UserList(_ref) {
22547
22433
  }
22548
22434
  }, React__default.createElement(FaEye$1, {
22549
22435
  size: 12
22550
- })), isAdmin && React__default.createElement(IconButton, {
22436
+ })), (isAdmin || isSuperAdmin) && React__default.createElement(IconButton, {
22551
22437
  onClick: function onClick() {
22552
22438
  return openDeleteDialog(i);
22553
22439
  },
@@ -22577,14 +22463,14 @@ var UserList = function UserList(_ref) {
22577
22463
  }), React__default.createElement(UserDialog, {
22578
22464
  open: openUserDialog,
22579
22465
  data: userDetail,
22580
- disabled: !isAdmin,
22466
+ disabled: !(isAdmin || isSuperAdmin),
22581
22467
  onClose: handleCloseUserDialog,
22582
22468
  onSubmitForm: handleCreateOrUpdateUser
22583
22469
  }), React__default.createElement(RecentUserActionDialog, {
22584
22470
  open: isOpenRecentUserActionDialog,
22585
22471
  onClose: handleCloseRecentUserActionDialog,
22586
22472
  recentUserActions: recentUserActions
22587
- }), isAdmin && React__default.createElement(DeleteUserCsvDialog, {
22473
+ }), (isAdmin || isSuperAdmin) && React__default.createElement(DeleteUserCsvDialog, {
22588
22474
  open: isOpenDeleteUserCsv,
22589
22475
  file: deleteFile,
22590
22476
  onChangeFile: handleChangeDeleteFile,
@@ -23896,9 +23782,6 @@ var TextbookDefaultQuery = {
23896
23782
  sortColumnDirection: OrderType.ASC,
23897
23783
  sortColumnName: TextbookSortBy.Title
23898
23784
  };
23899
- var TEXTBOOK_URL$1 = "/teacher/teacher-admin/textbooks";
23900
- var ADMIN_TEXTBOOK_URL = "/textbooks";
23901
- var SUPER_ADMIN_TEXTBOOK_URL = "/personal/textbooks";
23902
23785
  var DEFAULT_TEXTBOOK = {
23903
23786
  name: "",
23904
23787
  chapters: []
@@ -24066,7 +23949,9 @@ var useTextbookDetail = function useTextbookDetail(props) {
24066
23949
  isReadonlyParam = props.isReadonlyParam,
24067
23950
  navigate = props.navigate,
24068
23951
  id = props.id,
24069
- isSuperAdmin = props.isSuperAdmin;
23952
+ isSuperAdmin = props.isSuperAdmin,
23953
+ onNavigateDetail = props.onNavigateDetail,
23954
+ onNavigateList = props.onNavigateList;
24070
23955
  var _useTranslation = useTranslation(),
24071
23956
  t = _useTranslation.t;
24072
23957
  var dispatch = useDispatch();
@@ -24099,7 +23984,6 @@ var useTextbookDetail = function useTextbookDetail(props) {
24099
23984
  var _useState9 = useState([]),
24100
23985
  categoryList = _useState9[0],
24101
23986
  setCategoryList = _useState9[1];
24102
- var textbookUrl = isSuperAdmin ? SUPER_ADMIN_TEXTBOOK_URL : role === Role.Teacher ? TEXTBOOK_URL$1 : ADMIN_TEXTBOOK_URL;
24103
23987
  var isAdminSite = role === Role.Admin;
24104
23988
  var user = useSelector(function (state) {
24105
23989
  var _state$common;
@@ -24659,10 +24543,7 @@ var useTextbookDetail = function useTextbookDetail(props) {
24659
24543
  subjectId: textbook.subject.id
24660
24544
  };
24661
24545
  return Promise.resolve(createTextbookApi(_body)).then(function (res) {
24662
- var textbookId = res.data.id;
24663
- navigate(textbookUrl + "/" + textbookId, {
24664
- replace: true
24665
- });
24546
+ onNavigateDetail === null || onNavigateDetail === void 0 ? void 0 : onNavigateDetail(res.data, false, true);
24666
24547
  });
24667
24548
  }
24668
24549
  }();
@@ -24705,9 +24586,7 @@ var useTextbookDetail = function useTextbookDetail(props) {
24705
24586
  }
24706
24587
  };
24707
24588
  var handleGoToTextbookList = function handleGoToTextbookList() {
24708
- navigate(textbookUrl, {
24709
- replace: true
24710
- });
24589
+ onNavigateList(true);
24711
24590
  };
24712
24591
  var textbookSubject = useMemo(function () {
24713
24592
  return textbook !== null && textbook !== void 0 && textbook.subject ? {
@@ -25055,12 +24934,12 @@ var ArticleDialog = function ArticleDialog(_ref) {
25055
24934
 
25056
24935
  var styles$7 = {"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"};
25057
24936
 
25058
- var _excluded$d = ["isOpen", "onClose", "handleSaveExam"];
24937
+ var _excluded$c = ["isOpen", "onClose", "handleSaveExam"];
25059
24938
  var CreateExamDrawer = function CreateExamDrawer(props) {
25060
24939
  var isOpen = props.isOpen,
25061
24940
  onClose = props.onClose,
25062
24941
  handleSaveExam = props.handleSaveExam,
25063
- examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$d);
24942
+ examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$c);
25064
24943
  var _useTranslation = useTranslation(),
25065
24944
  t = _useTranslation.t;
25066
24945
  var theme = useTheme();
@@ -25103,7 +24982,8 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
25103
24982
  var _textbook$chapters;
25104
24983
  var navigate = props.navigate,
25105
24984
  as = props.as,
25106
- className = props.className;
24985
+ className = props.className,
24986
+ onNavigateDetail = props.onNavigateDetail;
25107
24987
  var _useTextbookDetail = useTextbookDetail(props),
25108
24988
  id = _useTextbookDetail.id,
25109
24989
  t = _useTextbookDetail.t,
@@ -25152,7 +25032,7 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
25152
25032
  }),
25153
25033
  categoryOptions = _useCategorySelect.categoryOptions;
25154
25034
  var Wrapper = as || Container;
25155
- if (isNotFound) return React__default.createElement(NotFound, {
25035
+ if (isNotFound || id && textbook.isPrepared) return React__default.createElement(NotFound, {
25156
25036
  history: navigate
25157
25037
  });
25158
25038
  return React__default.createElement(Wrapper, {
@@ -25232,7 +25112,7 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
25232
25112
  textbook: textbook,
25233
25113
  onBack: handleGoToTextbookList,
25234
25114
  onSave: handleCreateOrUpdateTextbook,
25235
- hideSave: !!id && isReadonly
25115
+ hideSave: !!id && isReadonly || !onNavigateDetail
25236
25116
  }))), React__default.createElement(Grid, {
25237
25117
  item: true,
25238
25118
  xs: 12,
@@ -25310,8 +25190,8 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
25310
25190
 
25311
25191
  var PAGE_TITLE$7 = "textbooks";
25312
25192
  var useTextbookList = function useTextbookList(props) {
25313
- var role = props.role,
25314
- navigate = props.navigate,
25193
+ var onNavigateCreate = props.onNavigateCreate,
25194
+ onNavigateDetail = props.onNavigateDetail,
25315
25195
  isSuperAdmin = props.isSuperAdmin;
25316
25196
  var _useList = useList(function (search) {
25317
25197
  return getTextbookListApi(search, isSuperAdmin);
@@ -25329,21 +25209,15 @@ var useTextbookList = function useTextbookList(props) {
25329
25209
  getData = _useList.getData;
25330
25210
  var _useTranslation = useTranslation(),
25331
25211
  t = _useTranslation.t;
25332
- var textbookUrl = isSuperAdmin ? SUPER_ADMIN_TEXTBOOK_URL : role === Role.Teacher ? TEXTBOOK_URL$1 : ADMIN_TEXTBOOK_URL;
25333
25212
  var dispatch = useDispatch();
25334
- var handleViewTextbook = function handleViewTextbook(id) {
25335
- console.log(textbookUrl + "/" + id);
25336
- navigate(textbookUrl + "/" + id + "?readonly=true", {
25337
- replace: true
25338
- });
25213
+ var handleViewTextbook = function handleViewTextbook(data) {
25214
+ onNavigateDetail(data, true, true);
25339
25215
  };
25340
- var handleUpdateTextbook = function handleUpdateTextbook(id) {
25341
- navigate(textbookUrl + "/" + id, {
25342
- replace: true
25343
- });
25216
+ var handleUpdateTextbook = function handleUpdateTextbook(data) {
25217
+ onNavigateDetail(data, false, true);
25344
25218
  };
25345
25219
  var handleCreateTextbook = function handleCreateTextbook() {
25346
- pushTo(navigate, textbookUrl + "/create");
25220
+ onNavigateCreate === null || onNavigateCreate === void 0 ? void 0 : onNavigateCreate();
25347
25221
  };
25348
25222
  var toggleConfirmDialog = function toggleConfirmDialog() {
25349
25223
  handleChangeSelectedItem(undefined);
@@ -25572,7 +25446,7 @@ var useTextbookShare = function useTextbookShare(props) {
25572
25446
  var getData = props.getData,
25573
25447
  role = props.role,
25574
25448
  isSuperAdmin = props.isSuperAdmin;
25575
- var _useList = useList(role === Role.Teacher ? function (search) {
25449
+ var _useList = useList(!isSuperAdmin ? function (search) {
25576
25450
  return getTeacherListApi$1(search);
25577
25451
  } : null, DefaultTeacherQuery),
25578
25452
  filterShare = _useList.filter,
@@ -25612,8 +25486,10 @@ var useTextbookShare = function useTextbookShare(props) {
25612
25486
  var _state$common;
25613
25487
  return (state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user) || {};
25614
25488
  });
25615
- var isAdmin = infoUser === null || infoUser === void 0 ? void 0 : (_infoUser$roles = infoUser.roles) === null || _infoUser$roles === void 0 ? void 0 : _infoUser$roles.includes(Role.Admin);
25489
+ var isAdmin = infoUser && (infoUser === null || infoUser === void 0 ? void 0 : (_infoUser$roles = infoUser.roles) === null || _infoUser$roles === void 0 ? void 0 : _infoUser$roles.includes(Role.Admin));
25616
25490
  var isAdminSite = role === Role.Admin;
25491
+ var onAcademy = !!infoUser.academyDomain;
25492
+ var isSuperAdminUser = infoUser && infoUser.isSuperAdmin;
25617
25493
  useEffect(function () {
25618
25494
  if (!isUpdate) {
25619
25495
  filterTeacherNotShared(currentModel);
@@ -25622,6 +25498,8 @@ var useTextbookShare = function useTextbookShare(props) {
25622
25498
  }
25623
25499
  }, [teachers, isUpdate]);
25624
25500
  var handleOpenShareDialog = function handleOpenShareDialog(textbook) {
25501
+ if (textSearchShareRef.current) textSearchShareRef.current.value = "";
25502
+ getData();
25625
25503
  setIsUpdate(false);
25626
25504
  setOpenShareDialog(true);
25627
25505
  setCurrentModel(textbook);
@@ -25646,6 +25524,8 @@ var useTextbookShare = function useTextbookShare(props) {
25646
25524
  setSelectedShare([]);
25647
25525
  };
25648
25526
  var handleOpenUpdateShareDialog = function handleOpenUpdateShareDialog(textbook) {
25527
+ if (textSearchShareRef.current) textSearchShareRef.current.value = "";
25528
+ getData();
25649
25529
  setIsUpdate(true);
25650
25530
  setOpenShareDialog(true);
25651
25531
  setCurrentModel(textbook);
@@ -25700,8 +25580,11 @@ var useTextbookShare = function useTextbookShare(props) {
25700
25580
  });
25701
25581
  setShared(existsTeachers);
25702
25582
  };
25703
- var handleDisable = function handleDisable(textbook) {
25704
- return isAdmin && !isAdminSite || !isAdmin && (!textbook.isShared || textbook.createdBy.id != infoUser.id) || isSuperAdmin;
25583
+ var enabledSave = function enabledSave(textbook) {
25584
+ return isAdminSite || isSuperAdmin || isSuperAdminUser || !isAdmin && textbook.isShared && textbook.createdBy.id === infoUser.id;
25585
+ };
25586
+ var enabledShare = function enabledShare(textbook) {
25587
+ return textbook.isShared && onAcademy && (isAdminSite || isSuperAdminUser || !isAdmin && textbook.createdBy.id === infoUser.id);
25705
25588
  };
25706
25589
  var handleShareTextbook = function handleShareTextbook(teacherIds, textbookId) {
25707
25590
  try {
@@ -25779,13 +25662,16 @@ var useTextbookShare = function useTextbookShare(props) {
25779
25662
  isUpdate: isUpdate,
25780
25663
  handleUpdateSharedTextbook: handleUpdateSharedTextbook,
25781
25664
  currentModel: currentModel,
25782
- handleDisable: handleDisable,
25665
+ enabledSave: enabledSave,
25666
+ enabledShare: enabledShare,
25783
25667
  isAdmin: isAdmin,
25784
25668
  isAdminSite: isAdminSite
25785
25669
  };
25786
25670
  };
25787
25671
 
25788
25672
  var TextbookList = function TextbookList(props) {
25673
+ var _props$createable = props.createable,
25674
+ createable = _props$createable === void 0 ? true : _props$createable;
25789
25675
  var _useTranslation = useTranslation(),
25790
25676
  t = _useTranslation.t;
25791
25677
  var _useTextbookList = useTextbookList(props),
@@ -25831,9 +25717,8 @@ var TextbookList = function TextbookList(props) {
25831
25717
  isUpdate = _useTextbookShare.isUpdate,
25832
25718
  handleUpdateSharedTextbook = _useTextbookShare.handleUpdateSharedTextbook,
25833
25719
  currentModel = _useTextbookShare.currentModel,
25834
- handleDisable = _useTextbookShare.handleDisable,
25835
- isAdmin = _useTextbookShare.isAdmin,
25836
- isAdminSite = _useTextbookShare.isAdminSite;
25720
+ enabledSave = _useTextbookShare.enabledSave,
25721
+ enabledShare = _useTextbookShare.enabledShare;
25837
25722
  return React__default.createElement(LayoutList, {
25838
25723
  title: t(TEXTBOOK_PAGE_TITLE)
25839
25724
  }, React__default.createElement(Grid, {
@@ -25855,14 +25740,14 @@ var TextbookList = function TextbookList(props) {
25855
25740
  justifyContent: "flex-end"
25856
25741
  },
25857
25742
  spacing: 2
25858
- }, (!isAdmin || isAdminSite) && React__default.createElement(Button, {
25743
+ }, createable && React__default.createElement(Button, {
25859
25744
  startIcon: React__default.createElement(FaPlus, {
25860
25745
  size: 12
25861
25746
  }),
25862
25747
  variant: "contained",
25863
25748
  color: "primary",
25864
25749
  onClick: handleCreateTextbook,
25865
- className: (isAdmin && !isAdminSite ? "bg-secondary" : "bg-success") + " text-white"
25750
+ className: "bg-success text-white"
25866
25751
  }, t("create_textbook")))), React__default.createElement(Grid, {
25867
25752
  item: true,
25868
25753
  xs: 12,
@@ -25884,32 +25769,32 @@ var TextbookList = function TextbookList(props) {
25884
25769
  alignItems: "center"
25885
25770
  }, React__default.createElement(IconButton, {
25886
25771
  color: "default",
25887
- className: (handleDisable(i) ? "bg-secondary" : "bg-warning") + " text-white",
25772
+ className: (!enabledSave(i) ? "bg-secondary" : "bg-warning") + " text-white",
25888
25773
  onClick: function onClick() {
25889
- return handleUpdateTextbook(i.id);
25774
+ return handleUpdateTextbook(i);
25890
25775
  },
25891
- disabled: handleDisable(i)
25776
+ disabled: !enabledSave(i)
25892
25777
  }, React__default.createElement(FaPencil, {
25893
25778
  size: 12
25894
25779
  })), React__default.createElement(IconButton, {
25895
25780
  color: "default",
25896
25781
  className: "bg-primary text-white",
25897
25782
  onClick: function onClick() {
25898
- return handleViewTextbook(i.id);
25783
+ return handleViewTextbook(i);
25899
25784
  }
25900
25785
  }, React__default.createElement(FaEye$1, {
25901
25786
  size: 12
25902
25787
  })), React__default.createElement(IconButton, {
25903
- disabled: handleDisable(i) || isAdmin,
25904
- className: (handleDisable(i) || isAdmin ? "bg-secondary" : "bg-info") + " text-white me-1",
25788
+ disabled: !enabledShare(i),
25789
+ className: (!enabledShare(i) ? "bg-secondary" : "bg-info") + " text-white me-1",
25905
25790
  onClick: function onClick() {
25906
25791
  return handleOpenShareDialog(i);
25907
25792
  }
25908
25793
  }, React__default.createElement(FaShare, {
25909
25794
  size: 12
25910
25795
  })), React__default.createElement(IconButton, {
25911
- disabled: handleDisable(i) || isAdmin,
25912
- className: (handleDisable(i) || isAdmin ? "bg-secondary" : "bg-success") + " text-white me-1",
25796
+ disabled: !enabledShare(i),
25797
+ className: (!enabledShare(i) ? "bg-secondary" : "bg-success") + " text-white me-1",
25913
25798
  onClick: function onClick() {
25914
25799
  return handleOpenUpdateShareDialog(i);
25915
25800
  }
@@ -25917,11 +25802,11 @@ var TextbookList = function TextbookList(props) {
25917
25802
  size: 12
25918
25803
  })), React__default.createElement(IconButton, {
25919
25804
  color: "default",
25920
- className: (handleDisable(i) ? "bg-secondary" : "bg-danger") + " text-white mr-1",
25805
+ className: (!enabledSave(i) ? "bg-secondary" : "bg-danger") + " text-white mr-1",
25921
25806
  onClick: function onClick() {
25922
25807
  return handleSelectDeleteTextbook(i);
25923
25808
  },
25924
- disabled: handleDisable(i)
25809
+ disabled: !enabledSave(i)
25925
25810
  }, React__default.createElement(FaTrash, {
25926
25811
  size: 12
25927
25812
  })))));
@@ -26122,12 +26007,12 @@ var useNotificationDetail = function useNotificationDetail(_ref) {
26122
26007
 
26123
26008
  var styles$8 = {"avatar":"_8niRT"};
26124
26009
 
26125
- var _excluded$e = ["value", "disabled", "optionTypeNotification"];
26010
+ var _excluded$d = ["value", "disabled", "optionTypeNotification"];
26126
26011
  var TypeSelector = function TypeSelector(_ref) {
26127
26012
  var value = _ref.value,
26128
26013
  disabled = _ref.disabled,
26129
26014
  optionTypeNotification = _ref.optionTypeNotification,
26130
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
26015
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$d);
26131
26016
  return React__default.createElement(CustomAsyncSelect, Object.assign({
26132
26017
  options: optionTypeNotification,
26133
26018
  value: value
@@ -26519,11 +26404,11 @@ var useNotificationList = function useNotificationList(_ref) {
26519
26404
  };
26520
26405
  };
26521
26406
 
26522
- var _excluded$f = ["value", "optionTypeNotification"];
26407
+ var _excluded$e = ["value", "optionTypeNotification"];
26523
26408
  var SelectFilterType = function SelectFilterType(_ref) {
26524
26409
  var value = _ref.value,
26525
26410
  optionTypeNotification = _ref.optionTypeNotification,
26526
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
26411
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
26527
26412
  return React__default.createElement(CustomAsyncSelect, Object.assign({
26528
26413
  options: optionTypeNotification,
26529
26414
  value: value
@@ -27686,8 +27571,8 @@ var CourseSelector = function CourseSelector(_ref) {
27686
27571
  }));
27687
27572
  };
27688
27573
 
27689
- var TEXTBOOK_URL$2 = BASE_URL + "/api/textbooks";
27690
- var SUPER_ADMIN_TEXTBOOK_URL$1 = SUPER_ADMIN_BASE_URL + "/api/textbook";
27574
+ var TEXTBOOK_URL$1 = BASE_URL + "/api/textbooks";
27575
+ var SUPER_ADMIN_TEXTBOOK_URL = SUPER_ADMIN_BASE_URL + "/api/textbook";
27691
27576
  var PREPARED_TEXTBOOK_URL = BASE_URL + "/api/textbooks/prepared-textbooks";
27692
27577
  var SUPER_ADMIN_PREPARED_TEXTBOOK_URL = SUPER_ADMIN_BASE_URL + "/api/textbook/prepared-textbooks";
27693
27578
  var FILE_URL = BASE_URL + "/api/file/images";
@@ -27696,7 +27581,7 @@ var uploadImageFileApi = function uploadImageFileApi(formData, isAdmin) {
27696
27581
  return apiUpload.post("" + (isAdmin ? SUPER_FILE_URL : FILE_URL), formData);
27697
27582
  };
27698
27583
  var getTextbookDetailApi = function getTextbookDetailApi(id, isAdmin) {
27699
- return api.get((isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : TEXTBOOK_URL$2) + "/" + id);
27584
+ return api.get((isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : TEXTBOOK_URL$1) + "/" + id);
27700
27585
  };
27701
27586
  var getTextbookListApi$1 = function getTextbookListApi(query, isAdmin) {
27702
27587
  return api.get("" + (isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : PREPARED_TEXTBOOK_URL), {
@@ -27710,14 +27595,14 @@ var updateTextbookApi$1 = function updateTextbookApi(values, id, isAdmin) {
27710
27595
  return api.put((isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : PREPARED_TEXTBOOK_URL) + "/" + id, values);
27711
27596
  };
27712
27597
  var getAcademyByTeacher = function getAcademyByTeacher(email, isAdmin) {
27713
- return api.get((isAdmin ? SUPER_ADMIN_TEXTBOOK_URL$1 : TEXTBOOK_URL$2) + "/academy-teacher-owner", {
27598
+ return api.get((isAdmin ? SUPER_ADMIN_TEXTBOOK_URL : TEXTBOOK_URL$1) + "/academy-teacher-owner", {
27714
27599
  params: {
27715
27600
  email: email
27716
27601
  }
27717
27602
  });
27718
27603
  };
27719
27604
  var deleteTextbookApi$1 = function deleteTextbookApi(textbookId, isAdmin) {
27720
- return api["delete"]((isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : TEXTBOOK_URL$2) + "/" + textbookId);
27605
+ return api["delete"]((isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : TEXTBOOK_URL$1) + "/" + textbookId);
27721
27606
  };
27722
27607
 
27723
27608
  var useSelect = function useSelect(_ref) {
@@ -27966,8 +27851,8 @@ var TextbookOwners = function TextbookOwners(_ref) {
27966
27851
  };
27967
27852
 
27968
27853
  var useTextbookManagement = function useTextbookManagement(_ref) {
27969
- var navigate = _ref.navigate,
27970
- textbookId = _ref.textbookId;
27854
+ var textbookId = _ref.textbookId,
27855
+ onNavigateList = _ref.onNavigateList;
27971
27856
  var _useTranslation = useTranslation(),
27972
27857
  t = _useTranslation.t;
27973
27858
  var theme = useTheme();
@@ -27986,7 +27871,6 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
27986
27871
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
27987
27872
  });
27988
27873
  var isSuperAdmin = !!user && !user.academyDomain;
27989
- var isTeacher = ((user === null || user === void 0 ? void 0 : user.roles) || []).includes(Role.Teacher);
27990
27874
  var handleOpenDialog = function handleOpenDialog(item) {
27991
27875
  if (item) {
27992
27876
  setSelectedTextbook(item);
@@ -28049,7 +27933,7 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
28049
27933
  }), isSuperAdmin)).then(function (res) {
28050
27934
  if (res !== null && res !== void 0 && res.data) {
28051
27935
  toast.success(t(!(selectedTextbook !== null && selectedTextbook !== void 0 && selectedTextbook.id) ? "create_the_textbook_successfully" : "update_the_textbook_successfully"));
28052
- pushTo(navigate, !isTeacher ? isSuperAdmin ? "/super-textbook-management" : "/textbook-management" : "/teacher/prepared-exam");
27936
+ onNavigateList();
28053
27937
  }
28054
27938
  });
28055
27939
  }, function (error) {
@@ -28099,7 +27983,7 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
28099
27983
  };
28100
27984
  };
28101
27985
 
28102
- var _excluded$g = ["value"],
27986
+ var _excluded$f = ["value"],
28103
27987
  _excluded2$2 = ["onChange"],
28104
27988
  _excluded3$2 = ["onChange"];
28105
27989
  var VisuallyHiddenInput = styled("input")({
@@ -28152,7 +28036,8 @@ var schema$4 = function schema(t) {
28152
28036
  };
28153
28037
  var PreparedTextbook = function PreparedTextbook(_ref) {
28154
28038
  var _selectedTextbook$sub, _selectedTextbook$cha;
28155
- var navigate = _ref.navigate,
28039
+ var onNavigateList = _ref.onNavigateList,
28040
+ navigate = _ref.navigate,
28156
28041
  textbookId = _ref.textbookId;
28157
28042
  var _useTextbookState = useTextbookState(),
28158
28043
  isAdmin = _useTextbookState.isAdmin,
@@ -28162,7 +28047,7 @@ var PreparedTextbook = function PreparedTextbook(_ref) {
28162
28047
  handleSetChapterSection = _useTextbookState.handleSetChapterSection,
28163
28048
  handleSetSubChapterSection = _useTextbookState.handleSetSubChapterSection;
28164
28049
  var _useTextbookManagemen = useTextbookManagement({
28165
- navigate: navigate,
28050
+ onNavigateList: onNavigateList,
28166
28051
  textbookId: textbookId
28167
28052
  }),
28168
28053
  t = _useTextbookManagemen.t,
@@ -28171,6 +28056,9 @@ var PreparedTextbook = function PreparedTextbook(_ref) {
28171
28056
  selectedTextbook = _useTextbookManagemen.selectedTextbook,
28172
28057
  handleSubmit = _useTextbookManagemen.handleSubmit,
28173
28058
  handleUploadImage = _useTextbookManagemen.handleUploadImage;
28059
+ if (textbookId && selectedTextbook && !selectedTextbook.isPrepared) return React__default.createElement(NotFound, {
28060
+ history: navigate
28061
+ });
28174
28062
  return React__default.createElement(Formik, {
28175
28063
  initialValues: {
28176
28064
  name: (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.name) || "",
@@ -28360,7 +28248,7 @@ var PreparedTextbook = function PreparedTextbook(_ref) {
28360
28248
  render: function render(_ref4) {
28361
28249
  var _ref4$field = _ref4.field,
28362
28250
  value = _ref4$field.value,
28363
- action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$g);
28251
+ action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$f);
28364
28252
  return React__default.createElement(LocalizationProvider$1, {
28365
28253
  dateAdapter: AdapterMoment
28366
28254
  }, React__default.createElement(DatePicker$1, Object.assign({}, action, {
@@ -28838,15 +28726,14 @@ var DeleteTextbookDialog = function DeleteTextbookDialog(_ref) {
28838
28726
  };
28839
28727
 
28840
28728
  var PreparedTextbookList = function PreparedTextbookList(_ref) {
28841
- var navigate = _ref.navigate;
28729
+ var onNavigateDetail = _ref.onNavigateDetail,
28730
+ onNavigteCreate = _ref.onNavigteCreate;
28842
28731
  var _useTextbookList = useTextbookList$1(),
28843
28732
  t = _useTextbookList.t,
28844
28733
  theme = _useTextbookList.theme,
28845
28734
  filter = _useTextbookList.filter,
28846
28735
  paging = _useTextbookList.paging,
28847
- isTeacher = _useTextbookList.isTeacher,
28848
28736
  textbooks = _useTextbookList.textbooks,
28849
- isSuperAdmin = _useTextbookList.isSuperAdmin,
28850
28737
  handleChangePage = _useTextbookList.handleChangePage,
28851
28738
  handleSort = _useTextbookList.handleSort,
28852
28739
  openConfirmDialog = _useTextbookList.openConfirmDialog,
@@ -28867,9 +28754,7 @@ var PreparedTextbookList = function PreparedTextbookList(_ref) {
28867
28754
  sx: {
28868
28755
  width: "fit-content"
28869
28756
  },
28870
- onClick: function onClick() {
28871
- return pushTo(navigate, !isTeacher ? isSuperAdmin ? "/super-textbook-management/create" : "/textbook-management/create" : "/teacher/textbook-management/create");
28872
- }
28757
+ onClick: onNavigteCreate
28873
28758
  }, t("create"))), React__default.createElement(Stack, null, React__default.createElement(Grid, {
28874
28759
  item: true,
28875
28760
  xs: 12
@@ -28916,7 +28801,7 @@ var PreparedTextbookList = function PreparedTextbookList(_ref) {
28916
28801
  color: "default",
28917
28802
  className: styles$9["action-btn"] + " bg-warning text-white me-2",
28918
28803
  onClick: function onClick() {
28919
- return pushTo(navigate, !isTeacher ? isSuperAdmin ? "/super-textbook-management/" + i.id + "/detail" : "/textbook-management/" + i.id + "/detail" : "/teacher/textbook-management/" + i.id + "/detail");
28804
+ return onNavigateDetail(i);
28920
28805
  }
28921
28806
  }, React__default.createElement(HiOutlinePencilAlt, {
28922
28807
  className: styles$9["action-btn--pencil"],
@@ -29080,7 +28965,7 @@ var DefaultFilter = {
29080
28965
  };
29081
28966
 
29082
28967
  var PREPARED_TEXTBOOK_URL$1 = BASE_URL + "/api/textbooks/prepared-textbooks";
29083
- var TEXTBOOK_URL$3 = BASE_URL + "/api/textbooks";
28968
+ var TEXTBOOK_URL$2 = BASE_URL + "/api/textbooks";
29084
28969
  var TEXTBOOK_SESSION_URL$1 = BASE_URL + "/api/textbooksession";
29085
28970
  var getTextbookListApi$2 = function getTextbookListApi(query) {
29086
28971
  return api.get("" + PREPARED_TEXTBOOK_URL$1, {
@@ -29094,7 +28979,7 @@ var startPageApi = function startPageApi(value) {
29094
28979
  return api.post(TEXTBOOK_SESSION_URL$1 + "/study-textbook", _extends({}, value));
29095
28980
  };
29096
28981
  var deleteTextbookApi$2 = function deleteTextbookApi(textbookId) {
29097
- return api["delete"](TEXTBOOK_URL$3 + "/" + textbookId);
28982
+ return api["delete"](TEXTBOOK_URL$2 + "/" + textbookId);
29098
28983
  };
29099
28984
 
29100
28985
  var ADMIN_SUBJECT_URL$2 = SUPER_ADMIN_BASE_URL + "/api/subject";
@@ -29164,17 +29049,29 @@ var usePreparedExam = function usePreparedExam(_ref) {
29164
29049
  var _state$common3, _state$common3$user;
29165
29050
  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.academyDomain;
29166
29051
  });
29167
- var isTeacher = useSelector(function (state) {
29052
+ var isStudent = useSelector(function (state) {
29168
29053
  var _state$common4, _state$common4$user;
29169
29054
  return (state === null || state === void 0 ? void 0 : (_state$common4 = state.common) === null || _state$common4 === void 0 ? void 0 : (_state$common4$user = _state$common4.user) === null || _state$common4$user === void 0 ? void 0 : _state$common4$user.roles) || [];
29055
+ }).includes(Role.Student);
29056
+ var isTeacher = useSelector(function (state) {
29057
+ var _state$common5, _state$common5$user;
29058
+ return (state === null || state === void 0 ? void 0 : (_state$common5 = state.common) === null || _state$common5 === void 0 ? void 0 : (_state$common5$user = _state$common5.user) === null || _state$common5$user === void 0 ? void 0 : _state$common5$user.roles) || [];
29170
29059
  }).includes(Role.Teacher);
29171
29060
  var _useState5 = useState(false),
29172
29061
  openConfirmDialog = _useState5[0],
29173
29062
  setOpenConfirmDialog = _useState5[1];
29174
- var isSuperAdmin = useSelector(function (state) {
29175
- var _state$common5, _state$common5$user;
29176
- return (state === null || state === void 0 ? void 0 : (_state$common5 = state.common) === null || _state$common5 === void 0 ? void 0 : (_state$common5$user = _state$common5.user) === null || _state$common5$user === void 0 ? void 0 : _state$common5$user.roles) || [];
29063
+ var isSuperAdminDomain = useSelector(function (state) {
29064
+ var _state$common6, _state$common6$user;
29065
+ return (state === null || state === void 0 ? void 0 : (_state$common6 = state.common) === null || _state$common6 === void 0 ? void 0 : (_state$common6$user = _state$common6.user) === null || _state$common6$user === void 0 ? void 0 : _state$common6$user.roles) || [];
29177
29066
  }).includes(Role.Admin) && !isDomain;
29067
+ var isAdmin = useSelector(function (state) {
29068
+ var _state$common7, _state$common7$user;
29069
+ return (state === null || state === void 0 ? void 0 : (_state$common7 = state.common) === null || _state$common7 === void 0 ? void 0 : (_state$common7$user = _state$common7.user) === null || _state$common7$user === void 0 ? void 0 : _state$common7$user.roles) || [];
29070
+ }).includes(Role.Admin);
29071
+ var isSuperAdmin = useSelector(function (state) {
29072
+ var _state$common8, _state$common8$user;
29073
+ return state === null || state === void 0 ? void 0 : (_state$common8 = state.common) === null || _state$common8 === void 0 ? void 0 : (_state$common8$user = _state$common8.user) === null || _state$common8$user === void 0 ? void 0 : _state$common8$user.isSuperAdmin;
29074
+ });
29178
29075
  var handleCloseConfirmDialog = function handleCloseConfirmDialog() {
29179
29076
  setOpenConfirmDialog(false);
29180
29077
  };
@@ -29188,7 +29085,7 @@ var usePreparedExam = function usePreparedExam(_ref) {
29188
29085
  };
29189
29086
  setLoading(true);
29190
29087
  var _temp = _catch(function () {
29191
- return Promise.resolve(isSuperAdmin ? getSubjectListAdminApi$2("") : getSubjectListApi$2("")).then(function (res) {
29088
+ return Promise.resolve(isSuperAdminDomain ? getSubjectListAdminApi$2("") : getSubjectListApi$2("")).then(function (res) {
29192
29089
  var _res$data$items = res.data.items,
29193
29090
  items = _res$data$items === void 0 ? [] : _res$data$items;
29194
29091
  setSubjects(items);
@@ -29200,7 +29097,7 @@ var usePreparedExam = function usePreparedExam(_ref) {
29200
29097
  } catch (e) {
29201
29098
  return Promise.reject(e);
29202
29099
  }
29203
- }, [isSuperAdmin]);
29100
+ }, [isSuperAdminDomain]);
29204
29101
  var subjectOptions = subjects.map(function (subject) {
29205
29102
  return {
29206
29103
  label: "" + subject.name,
@@ -29341,7 +29238,10 @@ var usePreparedExam = function usePreparedExam(_ref) {
29341
29238
  isKor: isKor,
29342
29239
  paging: paging,
29343
29240
  user: user,
29241
+ isAdmin: isAdmin,
29344
29242
  isTeacher: isTeacher,
29243
+ isStudent: isStudent,
29244
+ isSuperAdmin: isSuperAdmin,
29345
29245
  monthOptions: monthOptions,
29346
29246
  openConfirmDialog: openConfirmDialog,
29347
29247
  handleOpenConfirmDialog: handleOpenConfirmDialog,
@@ -29517,7 +29417,7 @@ var useTextbookDrawer = function useTextbookDrawer(_ref) {
29517
29417
  };
29518
29418
  var handleRedirectEdit = function handleRedirectEdit() {
29519
29419
  if (!textbookId) return;
29520
- pushTo(navigate, "/teacher/textbook-management/" + textbookId + "/detail");
29420
+ pushTo(navigate, "/teacher/prepared-exam/" + textbookId + "/detail");
29521
29421
  };
29522
29422
  var handleStartFromPage = function handleStartFromPage(values) {
29523
29423
  try {
@@ -29833,7 +29733,7 @@ var ChapterProblemSolvingResultsDialog = function ChapterProblemSolvingResultsDi
29833
29733
  }, t("cancel"))))));
29834
29734
  };
29835
29735
 
29836
- var _excluded$h = ["onChange"];
29736
+ var _excluded$g = ["onChange"];
29837
29737
  var StartPageDialog = function StartPageDialog(_ref) {
29838
29738
  var t = _ref.t,
29839
29739
  onClose = _ref.onClose,
@@ -29894,7 +29794,7 @@ var StartPageDialog = function StartPageDialog(_ref) {
29894
29794
  }, t("page_to_start_with")), React__default.createElement(Field, {
29895
29795
  name: "startPage",
29896
29796
  render: function render(_ref3) {
29897
- var field = _objectWithoutPropertiesLoose(_ref3, _excluded$h);
29797
+ var field = _objectWithoutPropertiesLoose(_ref3, _excluded$g);
29898
29798
  return React__default.createElement(CustomSelectOption, Object.assign({
29899
29799
  menuPosition: "fixed",
29900
29800
  onChange: function onChange(option) {
@@ -30067,7 +29967,7 @@ var Statistic = function Statistic(_ref) {
30067
29967
  fontSize: "12px",
30068
29968
  fontWeight: 500,
30069
29969
  color: styles.darker
30070
- }, (chapter.completedChapterQuestions || 0) / (chapter.totalChapterQuestions || 0) * 100 + "%")), React__default.createElement(Stack, {
29970
+ }, ((chapter.completedChapterQuestions || 0) / (chapter.totalChapterQuestions || 0) * 100).toFixed(2) + "%")), React__default.createElement(Stack, {
30071
29971
  sx: {
30072
29972
  width: "1px",
30073
29973
  position: "absolute",
@@ -30270,7 +30170,7 @@ var TextbookDrawer = function TextbookDrawer(_ref) {
30270
30170
  fontSize: "12px",
30271
30171
  fontWeight: 500,
30272
30172
  color: (textbook === null || textbook === void 0 ? void 0 : textbook.progress) === 0 ? theme.palette.common.black : theme.palette.common.white
30273
- }, ((textbook === null || textbook === void 0 ? void 0 : textbook.progress) || 0) + "%")))), !!(textbook !== null && textbook !== void 0 && textbook.chapters.length) && React__default.createElement(Stack, null, React__default.createElement(Box, {
30173
+ }, ((textbook === null || textbook === void 0 ? void 0 : textbook.progress) || 0).toFixed(2) + "%")))), !!(textbook !== null && textbook !== void 0 && textbook.chapters.length) && React__default.createElement(Stack, null, React__default.createElement(Box, {
30274
30174
  mt: "24px",
30275
30175
  mx: "24px",
30276
30176
  bgcolor: theme.palette.common.white,
@@ -30579,8 +30479,10 @@ var TextbookDetail = function TextbookDetail(_ref) {
30579
30479
  };
30580
30480
 
30581
30481
  var TextbookInfoDrawer = function TextbookInfoDrawer(_ref) {
30582
- var _TeacherTabList$find;
30583
- var isOpen = _ref.isOpen,
30482
+ var _textbook$createdBy, _TeacherTabList$find;
30483
+ var user = _ref.user,
30484
+ isSuperAdmin = _ref.isSuperAdmin,
30485
+ isOpen = _ref.isOpen,
30584
30486
  onClose = _ref.onClose,
30585
30487
  textbookId = _ref.textbookId,
30586
30488
  navigate = _ref.navigate,
@@ -30621,7 +30523,9 @@ var TextbookInfoDrawer = function TextbookInfoDrawer(_ref) {
30621
30523
  }, React__default.createElement(IoClose, {
30622
30524
  color: styles.gray_700,
30623
30525
  size: 32
30624
- })), React__default.createElement(Stack, {
30526
+ })), (isSuperAdmin || (textbook === null || textbook === void 0 ? void 0 : 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) {
30527
+ return i.id === (user === null || user === void 0 ? void 0 : user.id);
30528
+ }))) && React__default.createElement(Stack, {
30625
30529
  flexDirection: "row",
30626
30530
  gap: "16px",
30627
30531
  alignItems: "center"
@@ -30690,10 +30594,13 @@ var TextbookInfoDrawer = function TextbookInfoDrawer(_ref) {
30690
30594
  };
30691
30595
 
30692
30596
  var Textbook = function Textbook(_ref) {
30597
+ var _textbook$createdBy, _textbook$createdBy2;
30693
30598
  var t = _ref.t,
30599
+ user = _ref.user,
30694
30600
  theme = _ref.theme,
30695
30601
  textbook = _ref.textbook,
30696
- isTeacher = _ref.isTeacher,
30602
+ isStudent = _ref.isStudent,
30603
+ isSuperAdmin = _ref.isSuperAdmin,
30697
30604
  navigate = _ref.navigate,
30698
30605
  preparedType = _ref.preparedType,
30699
30606
  preparedFilterType = _ref.preparedFilterType,
@@ -30772,7 +30679,7 @@ var Textbook = function Textbook(_ref) {
30772
30679
  }, React__default.createElement(Stack, {
30773
30680
  flexDirection: "row",
30774
30681
  gap: "10px"
30775
- }, !isTeacher && React__default.createElement(Button, {
30682
+ }, isStudent && React__default.createElement(Button, {
30776
30683
  variant: "contained",
30777
30684
  sx: {
30778
30685
  width: "fit-content",
@@ -30785,7 +30692,9 @@ var Textbook = function Textbook(_ref) {
30785
30692
  onClick: handleOpenDialog
30786
30693
  }, React__default.createElement(FaBookOpen, {
30787
30694
  size: "20px"
30788
- }), t("test_start")), isTeacher && React__default.createElement(Button, {
30695
+ }), 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) {
30696
+ return i.id === (user === null || user === void 0 ? void 0 : user.id);
30697
+ }))) && React__default.createElement(Button, {
30789
30698
  variant: "outlined",
30790
30699
  sx: {
30791
30700
  width: "fit-content",
@@ -30796,11 +30705,11 @@ var Textbook = function Textbook(_ref) {
30796
30705
  maxHeight: "41px"
30797
30706
  },
30798
30707
  onClick: function onClick() {
30799
- return pushTo(navigate, "/teacher/textbook-management/" + (textbook === null || textbook === void 0 ? void 0 : textbook.id) + "/detail");
30708
+ return pushTo(navigate, "/teacher/prepared-exam/" + (textbook === null || textbook === void 0 ? void 0 : textbook.id) + "/detail");
30800
30709
  }
30801
30710
  }, React__default.createElement(FaBookOpen, {
30802
30711
  size: "20px"
30803
- }), t("test_editing")), isTeacher && React__default.createElement(Button, {
30712
+ }), t("test_editing")), !isStudent && React__default.createElement(Button, {
30804
30713
  variant: "contained",
30805
30714
  sx: {
30806
30715
  width: "fit-content",
@@ -30815,7 +30724,9 @@ var Textbook = function Textbook(_ref) {
30815
30724
  }
30816
30725
  }, React__default.createElement(IoInformationCircle, {
30817
30726
  size: "20px"
30818
- }), t("exam_information"))), isTeacher && React__default.createElement(Button, {
30727
+ }), t("exam_information"))), (isSuperAdmin || (textbook === null || textbook === void 0 ? void 0 : textbook.isShared) && ((textbook === null || textbook === void 0 ? void 0 : (_textbook$createdBy2 = textbook.createdBy) === null || _textbook$createdBy2 === void 0 ? void 0 : _textbook$createdBy2.id) === (user === null || user === void 0 ? void 0 : user.id) || textbook.textbookOwners.some(function (i) {
30728
+ return i.id === (user === null || user === void 0 ? void 0 : user.id);
30729
+ }))) && React__default.createElement(Button, {
30819
30730
  variant: "contained",
30820
30731
  sx: {
30821
30732
  width: "fit-content",
@@ -30837,6 +30748,8 @@ var Textbook = function Textbook(_ref) {
30837
30748
  textbookId: textbook.id,
30838
30749
  navigate: navigate
30839
30750
  }), openDetailDialog && React__default.createElement(TextbookInfoDrawer, {
30751
+ user: user,
30752
+ isSuperAdmin: isSuperAdmin,
30840
30753
  isOpen: openDetailDialog,
30841
30754
  onClose: handleCloseDetailDialog,
30842
30755
  textbookId: textbook.id,
@@ -30867,9 +30780,12 @@ var PreparedItem = function PreparedItem(_ref) {
30867
30780
  history: history
30868
30781
  }),
30869
30782
  t = _usePreparedExam.t,
30783
+ user = _usePreparedExam.user,
30870
30784
  theme = _usePreparedExam.theme,
30871
30785
  paging = _usePreparedExam.paging,
30872
- isTeacher = _usePreparedExam.isTeacher,
30786
+ isAdmin = _usePreparedExam.isAdmin,
30787
+ isStudent = _usePreparedExam.isStudent,
30788
+ isSuperAdmin = _usePreparedExam.isSuperAdmin,
30873
30789
  handleChangePage = _usePreparedExam.handleChangePage,
30874
30790
  textbookList = _usePreparedExam.textbookList,
30875
30791
  getTextbookList = _usePreparedExam.getTextbookList,
@@ -31026,7 +30942,7 @@ var PreparedItem = function PreparedItem(_ref) {
31026
30942
  },
31027
30943
  onClick: handleToggleExpand,
31028
30944
  startIcon: React__default.createElement(IoIosArrowDown, null)
31029
- }, t("fold"))), isTeacher && React__default.createElement(Stack, null, React__default.createElement(Button, {
30945
+ }, t("fold"))), !isStudent && !isAdmin && React__default.createElement(Stack, null, React__default.createElement(Button, {
31030
30946
  variant: "contained",
31031
30947
  sx: {
31032
30948
  width: "fit-content",
@@ -31037,7 +30953,7 @@ var PreparedItem = function PreparedItem(_ref) {
31037
30953
  marginRight: "27px"
31038
30954
  },
31039
30955
  onClick: function onClick() {
31040
- return pushTo(navigate, "/teacher/textbook-management/create");
30956
+ return pushTo(navigate, "/teacher/prepared-exam/create");
31041
30957
  }
31042
30958
  }, React__default.createElement(IoAddCircle, null), t("create_a_new_workbook"))))), React__default.createElement(AccordionDetails, {
31043
30959
  sx: {
@@ -31380,9 +31296,11 @@ var PreparedItem = function PreparedItem(_ref) {
31380
31296
  }, textbookList === null || textbookList === void 0 ? void 0 : textbookList.map(function (textbook) {
31381
31297
  return React__default.createElement(Textbook, {
31382
31298
  t: t,
31299
+ user: user,
31383
31300
  theme: theme,
31384
31301
  textbook: textbook,
31385
- isTeacher: isTeacher,
31302
+ isSuperAdmin: isSuperAdmin,
31303
+ isStudent: isStudent,
31386
31304
  navigate: navigate,
31387
31305
  getTextbookList: getTextbookList,
31388
31306
  preparedType: preparedType,
@@ -31431,6 +31349,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
31431
31349
  var isAdmin = role === Role.Admin;
31432
31350
  var isSuperAdmin = user && (!user.academyDomain && !user.isLearningSpace && ((_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(Role.Admin)) || user.isSuperAdmin);
31433
31351
  var isStudentSite = role === Role.Student;
31352
+ var isTeacherSite = role === Role.Teacher;
31434
31353
  var isLearningSpace = user === null || user === void 0 ? void 0 : user.isLearningSpace;
31435
31354
  var _useTranslation = useTranslation(),
31436
31355
  t = _useTranslation.t;
@@ -31524,7 +31443,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
31524
31443
  }, React__default.createElement(GoArrowSwitch, {
31525
31444
  size: 14,
31526
31445
  color: styles.gray_900
31527
- })))))), (isSuperAdmin || !isAdmin) && React__default.createElement(Popover, {
31446
+ })))))), (isSuperAdmin || !isAdmin || isTeacherSite) && React__default.createElement(Popover, {
31528
31447
  open: !!open,
31529
31448
  anchorEl: open,
31530
31449
  onClose: handleClose,