sapp-common-package-test-final 1.0.12 → 1.5.0

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.
@@ -1,6 +1,6 @@
1
1
  import dayjs from 'dayjs';
2
2
  import React, { useState, useEffect, useMemo } from 'react';
3
- import { DatePicker, Select, Calendar, Tooltip, Table } from 'antd';
3
+ import { DatePicker, Tooltip, Table, Select, Calendar } from 'antd';
4
4
  import clsx$1, { clsx } from 'clsx';
5
5
  import isBetween from 'dayjs/plugin/isBetween';
6
6
 
@@ -56,8 +56,13 @@ var useEffectAfterMounted = function useEffectAfterMounted(callback, dependencie
56
56
  }, dependencies);
57
57
  };
58
58
 
59
+ var HOURS_PER_DAY = 24;
59
60
  var MINUTES_PER_HOUR = 60;
60
61
  var TIME_FORMAT = 'HH:mm';
62
+ var MIN_HEIGHT_HIDE_DETAILS = 140;
63
+ var MIN_HEIGHT_HIDE_ALL = 105;
64
+ var MIN_HEIGHT_EVENT = 50;
65
+ var BORDER_WEEKLY_CELL = 1;
61
66
  var DAYS_OF_WEEK;
62
67
  (function (DAYS_OF_WEEK) {
63
68
  DAYS_OF_WEEK["Monday"] = "Monday";
@@ -103,13 +108,15 @@ var EVENT_TYPES;
103
108
  (function (EVENT_TYPES) {
104
109
  EVENT_TYPES["TEACHING"] = "TEACHING";
105
110
  EVENT_TYPES["BUSY"] = "BUSY";
106
- EVENT_TYPES["TIME_OFF"] = "TIME_OFF";
111
+ EVENT_TYPES["HOLIDAY"] = "HOLIDAY";
107
112
  EVENT_TYPES["OTHER"] = "OTHER";
113
+ EVENT_TYPES["LIVE_ONLINE"] = "LIVE_ONLINE";
108
114
  })(EVENT_TYPES || (EVENT_TYPES = {}));
109
- var FORMAT_DATE_CARLENDA = {
110
- MONTH_AND_WEEK: 'MMMM, YYYY',
111
- DATE: 'MMMM DD, YYYY'
112
- };
115
+ var FORMAT_DATE_CARLENDA;
116
+ (function (FORMAT_DATE_CARLENDA) {
117
+ FORMAT_DATE_CARLENDA["MONTH_AND_WEEK"] = "MMMM DD";
118
+ FORMAT_DATE_CARLENDA["DATE"] = "DD";
119
+ })(FORMAT_DATE_CARLENDA || (FORMAT_DATE_CARLENDA = {}));
113
120
  var LEARNING_MODE;
114
121
  (function (LEARNING_MODE) {
115
122
  LEARNING_MODE["ONLINE"] = "ONLINE";
@@ -119,15 +126,20 @@ var LEARNING_MODE;
119
126
  LEARNING_MODE["HOLIDAY"] = "HOLIDAY";
120
127
  LEARNING_MODE["OVERDUE"] = "OVERDUE";
121
128
  LEARNING_MODE["TEST"] = "TEST";
129
+ LEARNING_MODE["KEY_BEFORE_CONTENT"] = "KEY_BEFORE_CONTENT";
122
130
  })(LEARNING_MODE || (LEARNING_MODE = {}));
131
+ var CALENDAR_TYPE;
132
+ (function (CALENDAR_TYPE) {
133
+ CALENDAR_TYPE["OPS"] = "OPS";
134
+ CALENDAR_TYPE["LMS"] = "LMS";
135
+ })(CALENDAR_TYPE || (CALENDAR_TYPE = {}));
123
136
 
124
137
  var _convertType;
125
138
  var customDateFormat = function customDateFormat(value, formatStr) {
126
139
  return dayjs(value).format(formatStr);
127
140
  };
128
- var convertType = (_convertType = {}, _convertType[EVENT_TYPES.TEACHING] = 'info', _convertType[EVENT_TYPES.BUSY] = 'error', _convertType[EVENT_TYPES.TIME_OFF] = 'warning', _convertType[EVENT_TYPES.OTHER] = 'success', _convertType);
141
+ var convertType = (_convertType = {}, _convertType[EVENT_TYPES.TEACHING] = 'info', _convertType[EVENT_TYPES.BUSY] = 'error', _convertType[EVENT_TYPES.HOLIDAY] = 'warning', _convertType[EVENT_TYPES.OTHER] = 'success', _convertType[EVENT_TYPES.LIVE_ONLINE] = 'purple', _convertType);
129
142
  var daysOfWeekKeys = Object.values(DAYS_OF_WEEK);
130
- var hoursOfDayKeys = Object.values(HOUR_OF_DAY);
131
143
  var calculateNormOfWeek = function calculateNormOfWeek(norms, events, startDate, endDate) {
132
144
  var norm = norms.find(function (norm) {
133
145
  return startDate.isBetween(norm.startDate, norm.endDate, 'day', '[]') && endDate.isBetween(norm.startDate, norm.endDate, 'day', '[]');
@@ -182,7 +194,9 @@ var checkIsAllday = function checkIsAllday(startDate, endDate) {
182
194
  }
183
195
  return startDate.format(TIME_FORMAT) === startDate.startOf('day').format(TIME_FORMAT) && endDate.format(TIME_FORMAT) === endDate.endOf('day').format(TIME_FORMAT) && startDate.isBefore(endDate);
184
196
  };
197
+ var hoursOfDayKeys = Object.values(HOUR_OF_DAY);
185
198
 
199
+ var _getIconEvent;
186
200
  var Left = function Left() {
187
201
  return React.createElement("svg", {
188
202
  width: '16',
@@ -271,42 +285,87 @@ var Star = function Star() {
271
285
  fill: '#F57C00'
272
286
  }));
273
287
  };
274
- var LeftArrowIcon = function LeftArrowIcon() {
288
+ var TestIcon = function TestIcon() {
275
289
  return React.createElement("svg", {
276
- width: '8',
277
- height: '11',
278
- viewBox: '0 0 8 11',
279
- fill: 'currentColor',
290
+ width: '14',
291
+ height: '15',
292
+ viewBox: '0 0 14 15',
293
+ fill: 'none',
280
294
  xmlns: 'http://www.w3.org/2000/svg'
281
295
  }, React.createElement("path", {
282
- d: 'M7.3125 0.368526L7.3125 10.631C7.3125 10.9388 6.9875 11.1107 6.76562 10.9201L0.815625 5.78884C0.645313 5.64196 0.645313 5.35915 0.815625 5.21071L6.76562 0.079463C6.9875 -0.111162 7.3125 0.0607128 7.3125 0.368526Z',
283
- fill: '#404041'
296
+ d: 'M4.38413 3.03685H7.85239C8.24984 3.03685 8.52203 2.6436 8.37463 2.28174L7.99366 1.34663C7.90843 1.13708 7.7017 1 7.47142 1H4.76462C4.53482 1 4.32762 1.13754 4.24238 1.34663L3.86189 2.28174C3.71449 2.6436 3.98668 3.03685 4.38413 3.03685Z',
297
+ fill: '#FFB800'
298
+ }), React.createElement("path", {
299
+ d: 'M12.7209 8.27831C12.3488 7.9183 11.7508 7.9183 11.3788 8.27831L10.9775 8.67433L12.3206 9.98607L12.7209 9.59375C13.0929 9.22912 13.0929 8.64294 12.7209 8.27831Z',
300
+ fill: '#FFB800'
301
+ }), React.createElement("path", {
302
+ d: 'M10.4791 9.16455L8.18108 11.4169C8.12928 11.4631 8.09631 11.5277 8.0869 11.597L7.90795 12.6124C7.87028 12.8385 8.06806 13.0324 8.29881 12.9955L9.33952 12.8247C9.40545 12.8108 9.47138 12.7785 9.51847 12.7324L11.8212 10.4754L10.4791 9.16455Z',
303
+ fill: '#FFB800'
304
+ }), React.createElement("path", {
305
+ d: 'M9.68361 2.01953H9.02857L9.03092 2.02553C9.18727 2.40816 9.13923 2.84156 8.90331 3.18312C8.66738 3.52513 8.27464 3.7296 7.85317 3.7296H4.38444C3.96297 3.7296 3.57023 3.52559 3.33431 3.18312C3.09791 2.8411 3.05035 2.40816 3.20622 2.02507L3.20857 2.01953H2.55401C1.69224 2.01953 1 2.70263 1 3.54267V11.4768C1 12.3169 1.69224 13 2.55401 13H7.25888C7.20285 12.8412 7.1826 12.6709 7.21085 12.5006L7.39074 11.4791C7.41805 11.2728 7.53154 11.0591 7.70625 10.904L10.196 8.46286L10.8764 7.79037C10.9852 7.68514 11.1081 7.60298 11.2367 7.5319V3.54267C11.2376 2.70263 10.5407 2.01953 9.68361 2.01953ZM3.90128 9.69568H3.47229C3.23824 9.69568 3.04846 9.50967 3.04846 9.28028C3.04846 9.05088 3.23824 8.86488 3.47229 8.86488H3.90176C4.1358 8.86488 4.32558 9.05088 4.32558 9.28028C4.32558 9.50967 4.13533 9.69568 3.90128 9.69568ZM3.90128 7.17512H3.47229C3.23824 7.17512 3.04846 6.98911 3.04846 6.75972C3.04846 6.53032 3.23824 6.34432 3.47229 6.34432H3.90176C4.1358 6.34432 4.32558 6.53032 4.32558 6.75972C4.32558 6.98911 4.13533 7.17512 3.90128 7.17512ZM7.69683 9.69522H5.60128C5.36723 9.69522 5.17745 9.50921 5.17745 9.27981C5.17745 9.05042 5.36723 8.86441 5.60128 8.86441H7.69683C7.93087 8.86441 8.12065 9.05042 8.12065 9.27981C8.12065 9.50921 7.93135 9.69522 7.69683 9.69522ZM8.76533 7.17512H5.60033C5.36629 7.17512 5.17651 6.98911 5.17651 6.75972C5.17651 6.53032 5.36629 6.34432 5.60033 6.34432H8.76533C8.99937 6.34432 9.18915 6.53032 9.18915 6.75972C9.18915 6.98911 8.99937 7.17512 8.76533 7.17512Z',
306
+ fill: '#FFB800'
284
307
  }));
285
308
  };
286
- var RightArrowIcon = function RightArrowIcon() {
309
+ var HiddenEyeIcon = function HiddenEyeIcon() {
287
310
  return React.createElement("svg", {
288
- width: '8',
289
- height: '11',
290
- viewBox: '0 0 8 11',
291
- fill: 'currentColor',
311
+ width: '16',
312
+ height: '17',
313
+ viewBox: '0 0 16 17',
314
+ fill: 'none',
292
315
  xmlns: 'http://www.w3.org/2000/svg'
293
316
  }, React.createElement("path", {
294
- d: 'M0.6875 0.368526L0.6875 10.631C0.6875 10.9388 1.0125 11.1107 1.23438 10.9201L7.18437 5.78884C7.35469 5.64196 7.35469 5.35915 7.18437 5.21071L1.23438 0.079463C1.0125 -0.111162 0.6875 0.0607128 0.6875 0.368526Z',
295
- fill: '#404041'
317
+ d: 'M7.92867 10.5001C8.45911 10.5001 8.96782 10.2894 9.34289 9.91436C9.71796 9.53929 9.92868 9.03058 9.92868 8.50015C9.92868 8.44158 9.926 8.38354 9.921 8.32622L7.75475 10.4925C7.81207 10.4975 7.86992 10.5001 7.92867 10.5001ZM14.5487 2.31372L13.7858 1.55157C13.759 1.5248 13.7227 1.50977 13.6848 1.50977C13.647 1.50977 13.6106 1.5248 13.5839 1.55157L11.6317 3.50425C10.5548 2.9539 9.34427 2.67872 8.0001 2.67872C4.56796 2.67872 2.00725 4.46622 0.31796 8.04122C0.250059 8.185 0.214844 8.34203 0.214844 8.50104C0.214844 8.66005 0.250059 8.81708 0.31796 8.96086C0.99296 10.3826 1.80576 11.5222 2.75635 12.3796L0.867246 14.268C0.840475 14.2948 0.825437 14.3311 0.825437 14.369C0.825437 14.4069 0.840475 14.4432 0.867246 14.47L1.62957 15.2323C1.65636 15.2591 1.69268 15.2741 1.73055 15.2741C1.76842 15.2741 1.80474 15.2591 1.83153 15.2323L14.5487 2.51586C14.562 2.50259 14.5725 2.48684 14.5797 2.46949C14.5869 2.45215 14.5906 2.43356 14.5906 2.41479C14.5906 2.39602 14.5869 2.37743 14.5797 2.36008C14.5725 2.34274 14.562 2.32698 14.5487 2.31372ZM4.78582 8.50015C4.78577 7.9573 4.92632 7.4237 5.1938 6.95132C5.46127 6.47894 5.84653 6.08389 6.31206 5.80466C6.77758 5.52543 7.30749 5.37154 7.85017 5.35798C8.39285 5.34442 8.92979 5.47166 9.40868 5.72729L8.54046 6.5955C8.19032 6.48339 7.81606 6.46989 7.45875 6.55648C7.10143 6.64307 6.77488 6.82641 6.51491 7.08638C6.25494 7.34635 6.0716 7.67291 5.98501 8.03022C5.89841 8.38753 5.91192 8.76179 6.02403 9.11193L5.15582 9.98015C4.91218 9.52493 4.78506 9.01646 4.78582 8.50015Z',
318
+ fill: '#DCDDDD'
319
+ }), React.createElement("path", {
320
+ d: 'M15.6819 8.03917C15.0533 6.71536 14.3052 5.6359 13.4374 4.80078L10.8635 7.37489C11.0805 7.94206 11.1286 8.55992 11.002 9.15383C10.8754 9.74774 10.5795 10.2923 10.1501 10.7217C9.72073 11.1511 9.17618 11.4469 8.58227 11.5735C7.98836 11.7001 7.3705 11.652 6.80333 11.4351L4.62012 13.6183C5.63297 14.087 6.75952 14.3213 7.99976 14.3213C11.4319 14.3213 13.9926 12.5338 15.6819 8.95882C15.7498 8.81504 15.785 8.65801 15.785 8.499C15.785 8.33999 15.7498 8.18295 15.6819 8.03917Z',
321
+ fill: '#DCDDDD'
296
322
  }));
297
323
  };
298
- var FilterIcon = function FilterIcon() {
324
+ var EyeIcon = function EyeIcon() {
299
325
  return React.createElement("svg", {
300
- width: '35',
301
- height: '35',
302
- viewBox: '0 0 35 35',
303
- fill: 'currentColor',
326
+ width: '16',
327
+ height: '17',
328
+ viewBox: '0 0 16 17',
329
+ fill: 'none',
304
330
  xmlns: 'http://www.w3.org/2000/svg'
305
331
  }, React.createElement("path", {
306
- d: 'M26.5 8.4961V26.5036H8.5V8.4961H26.5ZM28 6.99609L7 6.99619L7 28.0036L28 27.9961V6.99609ZM10.2625 9.9886H17.7625V24.9886H10.2625V9.9886Z',
307
- fill: 'currentColor'
332
+ d: 'M5.92868 8.50014C5.92868 9.03057 6.13939 9.53928 6.51446 9.91435C6.88953 10.2894 7.39824 10.5001 7.92868 10.5001C8.45911 10.5001 8.96782 10.2894 9.34289 9.91435C9.71796 9.53928 9.92868 9.03057 9.92868 8.50014C9.92868 7.96971 9.71796 7.461 9.34289 7.08593C8.96782 6.71085 8.45911 6.50014 7.92868 6.50014C7.39824 6.50014 6.88953 6.71085 6.51446 7.08593C6.13939 7.461 5.92868 7.96971 5.92868 8.50014ZM15.6822 8.03943C13.9894 4.47335 11.4305 2.67871 8.0001 2.67871C4.56796 2.67871 2.01082 4.47335 0.31796 8.04121C0.250059 8.18499 0.214844 8.34203 0.214844 8.50103C0.214844 8.66004 0.250059 8.81707 0.31796 8.96085C2.01082 12.5269 4.56975 14.3216 8.0001 14.3216C11.4322 14.3216 13.9894 12.5269 15.6822 8.95907C15.8197 8.66978 15.8197 8.33407 15.6822 8.03943ZM7.92868 11.643C6.19296 11.643 4.78582 10.2359 4.78582 8.50014C4.78582 6.76443 6.19296 5.35728 7.92868 5.35728C9.66439 5.35728 11.0715 6.76443 11.0715 8.50014C11.0715 10.2359 9.66439 11.643 7.92868 11.643Z',
333
+ fill: '#DCDDDD'
334
+ }));
335
+ };
336
+ var FlagIcon = function FlagIcon() {
337
+ return React.createElement("svg", {
338
+ width: '14',
339
+ height: '15',
340
+ viewBox: '0 0 14 15',
341
+ fill: 'none',
342
+ xmlns: 'http://www.w3.org/2000/svg'
343
+ }, React.createElement("path", {
344
+ d: 'M11.229 5.1665L12.7165 3.18317C12.7813 3.09646 12.8208 2.99343 12.8304 2.8856C12.8401 2.77776 12.8196 2.66936 12.7711 2.57252C12.7227 2.47568 12.6483 2.39422 12.5563 2.33723C12.4642 2.28025 12.3581 2.24999 12.2498 2.24984H5.24984C5.24984 2.09513 5.18838 1.94675 5.07898 1.83736C4.96959 1.72796 4.82121 1.6665 4.6665 1.6665C4.51179 1.6665 4.36342 1.72796 4.25402 1.83736C4.14463 1.94675 4.08317 2.09513 4.08317 2.24984V12.1665H3.49984C3.34513 12.1665 3.19675 12.228 3.08736 12.3374C2.97796 12.4468 2.9165 12.5951 2.9165 12.7498C2.9165 12.9045 2.97796 13.0529 3.08736 13.1623C3.19675 13.2717 3.34513 13.3332 3.49984 13.3332H5.83317C5.98788 13.3332 6.13625 13.2717 6.24565 13.1623C6.35505 13.0529 6.4165 12.9045 6.4165 12.7498C6.4165 12.5951 6.35505 12.4468 6.24565 12.3374C6.13625 12.228 5.98788 12.1665 5.83317 12.1665H5.24984V8.08317H12.2498C12.3581 8.08302 12.4642 8.05276 12.5563 7.99578C12.6483 7.93879 12.7227 7.85733 12.7711 7.76049C12.8196 7.66365 12.8401 7.55525 12.8304 7.44741C12.8208 7.33957 12.7813 7.23654 12.7165 7.14984L11.229 5.1665Z',
345
+ fill: '#FFB800'
308
346
  }));
309
347
  };
348
+ var GoldStarIcon = function GoldStarIcon() {
349
+ return React.createElement("svg", {
350
+ width: '14',
351
+ height: '15',
352
+ viewBox: '0 0 14 15',
353
+ fill: 'none',
354
+ xmlns: 'http://www.w3.org/2000/svg'
355
+ }, React.createElement("g", {
356
+ clipPath: 'url(#clip0_23522_33890)'
357
+ }, React.createElement("path", {
358
+ d: 'M13.9308 5.27509L9.73388 4.66514L7.85774 0.86162C7.8065 0.757482 7.7222 0.67318 7.61806 0.621937C7.35689 0.493005 7.03951 0.600449 6.90893 0.86162L5.03279 4.66514L0.835862 5.27509C0.720153 5.29162 0.614362 5.34617 0.533366 5.42882C0.435446 5.52946 0.381488 5.66486 0.383347 5.80527C0.385207 5.94568 0.442733 6.0796 0.543284 6.17762L3.57982 9.13811L2.86242 13.3185C2.8456 13.4158 2.85636 13.5158 2.89348 13.6072C2.93061 13.6987 2.99261 13.7779 3.07246 13.8359C3.15231 13.8939 3.24682 13.9283 3.34526 13.9353C3.4437 13.9424 3.54213 13.9216 3.62941 13.8756L7.38333 11.9019L11.1373 13.8756C11.2397 13.9301 11.3588 13.9483 11.4728 13.9285C11.7604 13.8789 11.9538 13.6061 11.9042 13.3185L11.1869 9.13811L14.2234 6.17762C14.306 6.09662 14.3606 5.99083 14.3771 5.87512C14.4217 5.58585 14.2201 5.31807 13.9308 5.27509Z',
359
+ fill: '#FFB800'
360
+ })), React.createElement("defs", null, React.createElement("clipPath", {
361
+ id: 'clip0_23522_33890'
362
+ }, React.createElement("rect", {
363
+ width: '14',
364
+ height: '14',
365
+ fill: 'white',
366
+ transform: 'translate(0 0.5)'
367
+ }))));
368
+ };
310
369
  var TagIcon = function TagIcon() {
311
370
  return React.createElement("svg", {
312
371
  width: '20',
@@ -330,7 +389,7 @@ var EducationIcon = function EducationIcon() {
330
389
  fill: 'none',
331
390
  xmlns: 'http://www.w3.org/2000/svg'
332
391
  }, React.createElement("g", {
333
- clipPath: 'url(#clip0_19555_31783)'
392
+ clipPath: 'url(#clip0_22306_18116)'
334
393
  }, React.createElement("path", {
335
394
  d: 'M10 14.9699L3.75 11.3984V15.243L10 18.7148L16.25 15.243V11.3984L10 14.9699Z',
336
395
  fill: '#21272A'
@@ -338,7 +397,7 @@ var EducationIcon = function EducationIcon() {
338
397
  d: 'M20.0098 8.0002L10 2.28027L-0.00976562 8.0002L10 13.7201L18.125 9.07715V15.5002H20V8.00566L20.0098 8.0002Z',
339
398
  fill: '#21272A'
340
399
  })), React.createElement("defs", null, React.createElement("clipPath", {
341
- id: 'clip0_19555_31783'
400
+ id: 'clip0_22306_18116'
342
401
  }, React.createElement("rect", {
343
402
  width: '20',
344
403
  height: '20',
@@ -346,40 +405,19 @@ var EducationIcon = function EducationIcon() {
346
405
  transform: 'translate(0 0.5)'
347
406
  }))));
348
407
  };
349
- var BookIcon = function BookIcon() {
408
+ var FilterIcon = function FilterIcon() {
350
409
  return React.createElement("svg", {
351
- width: '14',
352
- height: '15',
353
- viewBox: '0 0 14 15',
354
- fill: 'none',
410
+ width: '35',
411
+ height: '35',
412
+ viewBox: '0 0 35 35',
413
+ fill: 'currentColor',
355
414
  xmlns: 'http://www.w3.org/2000/svg'
356
415
  }, React.createElement("path", {
357
- d: 'M6.56246 3.55091H6.52163C5.24353 2.80405 3.83672 2.30346 2.37413 2.07508C2.22462 2.0524 2.07197 2.06228 1.92663 2.10404C1.78129 2.14581 1.64669 2.21847 1.53203 2.31707C1.41737 2.41566 1.32536 2.53786 1.2623 2.67531C1.19923 2.81275 1.1666 2.96219 1.16663 3.11341V10.3526C1.1661 10.599 1.25325 10.8376 1.41248 11.0257C1.57171 11.2138 1.79265 11.3391 2.03579 11.3792C3.59665 11.6587 5.10804 12.1658 6.52163 12.8842H6.56246V3.55091ZM3.19079 4.88675H4.51496C4.63099 4.88675 4.74227 4.93284 4.82432 5.01489C4.90637 5.09693 4.95246 5.20821 4.95246 5.32425C4.95246 5.44028 4.90637 5.55156 4.82432 5.63361C4.74227 5.71565 4.63099 5.76175 4.51496 5.76175H3.19079C3.07476 5.76175 2.96348 5.71565 2.88144 5.63361C2.79939 5.55156 2.75329 5.44028 2.75329 5.32425C2.75329 5.20821 2.79939 5.09693 2.88144 5.01489C2.96348 4.93284 3.07476 4.88675 3.19079 4.88675ZM4.94079 7.51175H3.19079C3.13334 7.51175 3.07645 7.50043 3.02337 7.47844C2.97029 7.45646 2.92206 7.42423 2.88144 7.38361C2.84081 7.34298 2.80858 7.29475 2.7866 7.24167C2.76461 7.18859 2.75329 7.1317 2.75329 7.07425C2.75329 7.01679 2.76461 6.9599 2.7866 6.90682C2.80858 6.85374 2.84081 6.80551 2.88144 6.76489C2.92206 6.72426 2.97029 6.69204 3.02337 6.67005C3.07645 6.64806 3.13334 6.63675 3.19079 6.63675H4.94079C5.05683 6.63675 5.16811 6.68284 5.25015 6.76489C5.3322 6.84693 5.37829 6.95821 5.37829 7.07425C5.37829 7.19028 5.3322 7.30156 5.25015 7.38361C5.16811 7.46565 5.05683 7.51175 4.94079 7.51175ZM12.8333 3.07258V10.3759C12.8359 10.6193 12.7525 10.8558 12.5977 11.0436C12.443 11.2315 12.2268 11.3586 11.9875 11.4026C10.4162 11.6579 8.89472 12.1578 7.47829 12.8842H7.43746V3.55091H7.47829C8.75371 2.81159 10.15 2.30403 11.6025 2.05175C11.7521 2.02656 11.9054 2.03394 12.052 2.07337C12.1985 2.11281 12.3349 2.18337 12.4517 2.28025C12.5685 2.37714 12.6631 2.49806 12.7289 2.63479C12.7948 2.77152 12.8304 2.92084 12.8333 3.07258Z',
358
- fill: '#FFB800'
416
+ d: 'M26.5 8.4961V26.5036H8.5V8.4961H26.5ZM28 6.99609L7 6.99619L7 28.0036L28 27.9961V6.99609ZM10.2625 9.9886H17.7625V24.9886H10.2625V9.9886Z',
417
+ fill: 'currentColor'
359
418
  }));
360
419
  };
361
- var GoldStarIcon = function GoldStarIcon() {
362
- return React.createElement("svg", {
363
- width: '14',
364
- height: '15',
365
- viewBox: '0 0 14 15',
366
- fill: 'none',
367
- xmlns: 'http://www.w3.org/2000/svg'
368
- }, React.createElement("g", {
369
- clipPath: 'url(#clip0_19479_10426)'
370
- }, React.createElement("path", {
371
- d: 'M13.9307 5.27509L9.73376 4.66514L7.85762 0.86162C7.80638 0.757482 7.72207 0.67318 7.61794 0.621937C7.35676 0.493005 7.03939 0.600449 6.90881 0.86162L5.03267 4.66514L0.83574 5.27509C0.720031 5.29162 0.61424 5.34617 0.533244 5.42882C0.435324 5.52946 0.381366 5.66486 0.383225 5.80527C0.385085 5.94568 0.442611 6.0796 0.543162 6.17762L3.57969 9.13811L2.8623 13.3185C2.84548 13.4158 2.85624 13.5158 2.89336 13.6072C2.93049 13.6987 2.99249 13.7779 3.07234 13.8359C3.15219 13.8939 3.2467 13.9283 3.34514 13.9353C3.44358 13.9424 3.54201 13.9216 3.62928 13.8756L7.38321 11.9019L11.1371 13.8756C11.2396 13.9301 11.3586 13.9483 11.4727 13.9285C11.7603 13.8789 11.9537 13.6061 11.9041 13.3185L11.1867 9.13811L14.2233 6.17762C14.3059 6.09662 14.3605 5.99083 14.377 5.87512C14.4216 5.58585 14.22 5.31807 13.9307 5.27509Z',
372
- fill: '#FFB800'
373
- })), React.createElement("defs", null, React.createElement("clipPath", {
374
- id: 'clip0_19479_10426'
375
- }, React.createElement("rect", {
376
- width: '14',
377
- height: '14',
378
- fill: 'white',
379
- transform: 'translate(0 0.5)'
380
- }))));
381
- };
382
- var EyeIcon = function EyeIcon() {
420
+ var LeftArrowIcon = function LeftArrowIcon() {
383
421
  return React.createElement("svg", {
384
422
  width: '16',
385
423
  height: '17',
@@ -387,27 +425,42 @@ var EyeIcon = function EyeIcon() {
387
425
  fill: 'none',
388
426
  xmlns: 'http://www.w3.org/2000/svg'
389
427
  }, React.createElement("path", {
390
- d: 'M5.92868 8.50014C5.92868 9.03057 6.13939 9.53928 6.51446 9.91435C6.88953 10.2894 7.39824 10.5001 7.92868 10.5001C8.45911 10.5001 8.96782 10.2894 9.34289 9.91435C9.71796 9.53928 9.92868 9.03057 9.92868 8.50014C9.92868 7.96971 9.71796 7.461 9.34289 7.08593C8.96782 6.71085 8.45911 6.50014 7.92868 6.50014C7.39824 6.50014 6.88953 6.71085 6.51446 7.08593C6.13939 7.461 5.92868 7.96971 5.92868 8.50014ZM15.6822 8.03943C13.9894 4.47335 11.4305 2.67871 8.0001 2.67871C4.56796 2.67871 2.01082 4.47335 0.31796 8.04121C0.250059 8.18499 0.214844 8.34203 0.214844 8.50103C0.214844 8.66004 0.250059 8.81707 0.31796 8.96085C2.01082 12.5269 4.56975 14.3216 8.0001 14.3216C11.4322 14.3216 13.9894 12.5269 15.6822 8.95907C15.8197 8.66978 15.8197 8.33407 15.6822 8.03943ZM7.92868 11.643C6.19296 11.643 4.78582 10.2359 4.78582 8.50014C4.78582 6.76443 6.19296 5.35728 7.92868 5.35728C9.66439 5.35728 11.0715 6.76443 11.0715 8.50014C11.0715 10.2359 9.66439 11.643 7.92868 11.643Z',
391
- fill: '#DCDDDD'
428
+ d: 'M11.3125 3.36853V13.631C11.3125 13.9388 10.9875 14.1107 10.7656 13.9201L4.81563 8.78884C4.64531 8.64196 4.64531 8.35915 4.81563 8.21071L10.7656 3.07946C10.9875 2.88884 11.3125 3.06071 11.3125 3.36853Z',
429
+ fill: '#404041'
392
430
  }));
393
431
  };
394
- var HiddenEyeIcon = function HiddenEyeIcon() {
432
+ var RightArrowIcon = function RightArrowIcon() {
395
433
  return React.createElement("svg", {
396
- width: '16',
397
- height: '17',
398
- viewBox: '0 0 16 17',
434
+ width: '8',
435
+ height: '11',
436
+ viewBox: '0 0 8 11',
399
437
  fill: 'none',
400
438
  xmlns: 'http://www.w3.org/2000/svg'
401
439
  }, React.createElement("path", {
402
- d: 'M7.92867 10.5001C8.45911 10.5001 8.96782 10.2894 9.34289 9.91436C9.71796 9.53929 9.92868 9.03058 9.92868 8.50015C9.92868 8.44158 9.926 8.38354 9.921 8.32622L7.75475 10.4925C7.81207 10.4975 7.86992 10.5001 7.92867 10.5001ZM14.5487 2.31372L13.7858 1.55157C13.759 1.5248 13.7227 1.50977 13.6848 1.50977C13.647 1.50977 13.6106 1.5248 13.5839 1.55157L11.6317 3.50425C10.5548 2.9539 9.34427 2.67872 8.0001 2.67872C4.56796 2.67872 2.00725 4.46622 0.31796 8.04122C0.250059 8.185 0.214844 8.34203 0.214844 8.50104C0.214844 8.66005 0.250059 8.81708 0.31796 8.96086C0.99296 10.3826 1.80576 11.5222 2.75635 12.3796L0.867246 14.268C0.840475 14.2948 0.825437 14.3311 0.825437 14.369C0.825437 14.4069 0.840475 14.4432 0.867246 14.47L1.62957 15.2323C1.65636 15.2591 1.69268 15.2741 1.73055 15.2741C1.76842 15.2741 1.80474 15.2591 1.83153 15.2323L14.5487 2.51586C14.562 2.50259 14.5725 2.48684 14.5797 2.46949C14.5869 2.45215 14.5906 2.43356 14.5906 2.41479C14.5906 2.39602 14.5869 2.37743 14.5797 2.36008C14.5725 2.34274 14.562 2.32698 14.5487 2.31372ZM4.78582 8.50015C4.78577 7.9573 4.92632 7.4237 5.1938 6.95132C5.46127 6.47894 5.84653 6.08389 6.31206 5.80466C6.77758 5.52543 7.30749 5.37154 7.85017 5.35798C8.39285 5.34442 8.92979 5.47166 9.40868 5.72729L8.54046 6.5955C8.19032 6.48339 7.81606 6.46989 7.45875 6.55648C7.10143 6.64307 6.77488 6.82641 6.51491 7.08638C6.25494 7.34635 6.0716 7.67291 5.98501 8.03022C5.89841 8.38753 5.91192 8.76179 6.02403 9.11193L5.15582 9.98015C4.91218 9.52493 4.78506 9.01646 4.78582 8.50015Z',
403
- fill: '#DCDDDD'
404
- }), React.createElement("path", {
405
- d: 'M15.6819 8.03917C15.0533 6.71536 14.3052 5.6359 13.4374 4.80078L10.8635 7.37489C11.0805 7.94206 11.1286 8.55992 11.002 9.15383C10.8754 9.74774 10.5795 10.2923 10.1501 10.7217C9.72073 11.1511 9.17618 11.4469 8.58227 11.5735C7.98836 11.7001 7.3705 11.652 6.80333 11.4351L4.62012 13.6183C5.63297 14.087 6.75952 14.3213 7.99976 14.3213C11.4319 14.3213 13.9926 12.5338 15.6819 8.95882C15.7498 8.81504 15.785 8.65801 15.785 8.499C15.785 8.33999 15.7498 8.18295 15.6819 8.03917Z',
406
- fill: '#DCDDDD'
440
+ d: 'M0.6875 0.368526L0.6875 10.631C0.6875 10.9388 1.0125 11.1107 1.23438 10.9201L7.18437 5.78884C7.35469 5.64196 7.35469 5.35915 7.18437 5.21071L1.23438 0.079463C1.0125 -0.111162 0.6875 0.0607128 0.6875 0.368526Z',
441
+ fill: '#404041'
407
442
  }));
408
443
  };
444
+ var getIconEvent = (_getIconEvent = {}, _getIconEvent[EVENT_TYPES.TEACHING] = React.createElement(Book, null), _getIconEvent[EVENT_TYPES.BUSY] = React.createElement(CalendarDelete, null), _getIconEvent[EVENT_TYPES.HOLIDAY] = React.createElement(Star, null), _getIconEvent[EVENT_TYPES.OTHER] = React.createElement(CalendarAccept, null), _getIconEvent[EVENT_TYPES.LIVE_ONLINE] = '', _getIconEvent);
445
+ var getIconforEvent = function getIconforEvent(event) {
446
+ if (event.source === CALENDAR_TYPE.LMS) {
447
+ var icon = [];
448
+ if (event.isCaseStudy) {
449
+ icon.push(React.createElement(GoldStarIcon, null));
450
+ }
451
+ if (event.isTest) {
452
+ icon.push(React.createElement(TestIcon, null));
453
+ }
454
+ if (event.isKeyContentBefore) {
455
+ icon.push(React.createElement(FlagIcon, null));
456
+ }
457
+ return icon;
458
+ } else {
459
+ return getIconEvent[event.type];
460
+ }
461
+ };
409
462
 
410
- var styles = {"flex":"_2hGgU","transform":"_3-Pu9","cursor-pointer":"_2Mcv6","rounded-none":"_3EfQZ","border-gray-4":"_3-NVJ","bg-button":"_3-gs3","bg-info/10":"_2ENMR","bg-white":"_rF-HF","!text-error":"_3mBZd","text-black":"_Irb_H","text-gray-600":"_1pL5w","text-info":"_NLvfI","text-secondary-text":"_H-zEU","filter":"_p0OEu","sapp-calendar":"_18t93","btn":"_1oiD_","icon":"_-E7rn","btn-default":"_3WrnL","btn-primary":"_2-qBL","event-info":"_xYqjb","event-warning":"_1oq3N","event-success":"_1hTMm","event-error":"_1hEJk","event-default":"_8FWXy","sapp-calendar__container":"_102cL","header-calendar":"_3Yvs5","header-calendar__nav":"_18m93","header-calendar__date-picker":"_2GTYD","header-calendar__title":"_35LQ0","header-calendar__controls":"_FqVqb","header-calendar__divider":"_3kHog","monthly-calendar":"_2NDGW","weekly-calendar":"_1QrJs","monthly-calendar__title":"_3Tsy4","monthly-calendar__title-active":"_1Dyjm","weekly-norm__cell":"_sGK9m","weekly-norm__value":"_1Jsb-","monthly-calendar__cell":"_2hVZ4","monthly-calendar__cell--active":"_1uenJ","calendar-tooltip":"_2Uo1f","monthly-event__title":"_2gsg7","monthly-event__date":"_2GtPn","weekly-calendar__title":"_5WuQ8","weekly-calendar__cell":"_3lPkV","weekly-event":"_hnHem","weekly-event__title":"_21a0T","weekly-event__date":"_PiKmX","weekly-event--collapse":"_1pvXT","btn-lms-default":"_1GA3p","text-lms-primary":"_1gLzS","select-mode":"_12I9I","ant-select-dropdown-placement-bottomLeft":"_1ZvuX","header-calendar_filter":"_1fd_Y","lms-calendar__tablet":"_1sVO3"};
463
+ var styles = {"transform":"_3-Pu9","cursor-pointer":"_2Mcv6","resize":"_uCXxT","rounded-none":"_3EfQZ","border":"_3-abu","border-gray-4":"_3-NVJ","bg-button":"_3-gs3","bg-info/10":"_2ENMR","bg-white":"_rF-HF","!text-error":"_3mBZd","text-black":"_Irb_H","text-gray-600":"_1pL5w","text-info":"_NLvfI","text-secondary-text":"_H-zEU","!filter":"_3vIFr","filter":"_p0OEu","sapp-calendar":"_18t93","btn":"_1oiD_","icon":"_-E7rn","btn-default":"_3WrnL","btn-primary":"_2-qBL","event-info":"_xYqjb","event-warning":"_1oq3N","event-success":"_1hTMm","event-purple":"_30cym","event-error":"_1hEJk","event-default":"_8FWXy","sapp-calendar__container":"_102cL","header-calendar":"_3Yvs5","header-calendar__nav":"_18m93","header-calendar__date-picker":"_2GTYD","header-calendar__title":"_35LQ0","header-calendar__controls":"_FqVqb","header-calendar__divider":"_3kHog","monthly-calendar":"_2NDGW","weekly-calendar":"_1QrJs","monthly-calendar__title":"_3Tsy4","monthly-calendar__title-active":"_1Dyjm","weekly-norm__cell":"_sGK9m","weekly-norm__value":"_1Jsb-","monthly-calendar__cell":"_2hVZ4","monthly-calendar__cell--active":"_1uenJ","calendar-tooltip":"_2Uo1f","monthly-event__title":"_2gsg7","monthly-event__date":"_2GtPn","weekly-calendar__title":"_5WuQ8","weekly-calendar__cell":"_3lPkV","event--min-height":"_ZZSJH","weekly-event":"_hnHem","weekly-event__title":"_21a0T","weekly-event__date":"_PiKmX","weekly-event--collapse":"_1pvXT","btn-lms-default":"_1GA3p","ant-select-dropdown":"__OFBr","text-lms-primary":"_1gLzS","header-calendar_filter":"_1fd_Y","ant-picker-calendar-header":"_2IWLV","ant-picker-calendar-mode-switch":"_2jvy8","hover-item":"_3im6B","weekly-event__title_icon":"_3OUWM","monthly-event__date_tablet":"_2HhKK","calendar-filter":"_2n63y","see-more":"_1uakm","weekly-calendar-lms__cell":"__PqI3"};
411
464
 
412
465
  var Button = function Button(_ref) {
413
466
  var _ref$type = _ref.type,
@@ -416,6 +469,7 @@ var Button = function Button(_ref) {
416
469
  color = _ref$color === void 0 ? 'default' : _ref$color,
417
470
  onClick = _ref.onClick,
418
471
  children = _ref.children;
472
+ console.log('value:', styles["btn-" + color]);
419
473
  return React.createElement("button", {
420
474
  type: type,
421
475
  onClick: onClick,
@@ -495,263 +549,50 @@ var HeaderCalendar = function HeaderCalendar(_ref) {
495
549
  }, "Week")));
496
550
  };
497
551
 
498
- var SelectBox = function SelectBox(_ref) {
499
- var value = _ref.value,
500
- options = _ref.options,
501
- defaultValue = _ref.defaultValue,
502
- _ref$className = _ref.className,
503
- className = _ref$className === void 0 ? '' : _ref$className,
504
- disabled = _ref.disabled,
505
- onChange = _ref.onChange;
506
- return React.createElement(Select, {
507
- defaultValue: defaultValue,
508
- className: className,
509
- disabled: disabled,
510
- options: options,
511
- value: value,
512
- onChange: onChange
513
- });
552
+ var CustomTooltip = function CustomTooltip(_ref) {
553
+ var title = _ref.title,
554
+ children = _ref.children,
555
+ _ref$placement = _ref.placement,
556
+ placement = _ref$placement === void 0 ? 'top' : _ref$placement;
557
+ return React.createElement(Tooltip, {
558
+ color: '#ffffff',
559
+ title: React.createElement("div", {
560
+ className: styles['text-gray-600']
561
+ }, title),
562
+ placement: placement
563
+ }, React.createElement("div", null, children));
514
564
  };
515
565
 
516
- var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
517
- var title = _ref.title,
518
- showTeacherName = _ref.showTeacherName,
519
- currentDate = _ref.currentDate,
520
- setCurrentDate = _ref.setCurrentDate,
521
- calendarMode = _ref.calendarMode,
522
- setCalendarMode = _ref.setCalendarMode,
523
- toggleTurnOnFilter = _ref.toggleTurnOnFilter,
524
- filter = _ref.filter;
525
- var options = [{
526
- value: 'month',
527
- label: 'Month'
528
- }, {
529
- value: 'week',
530
- label: 'Week'
531
- }];
532
- var handleChangeDate = function handleChangeDate(date) {
533
- setCurrentDate(date);
534
- };
535
- var handleChangeMode = function handleChangeMode(mode) {
536
- setCalendarMode(mode);
537
- setCurrentDate(dayjs());
538
- };
539
- return React.createElement("div", {
540
- className: styles['header-calendar']
541
- }, React.createElement("div", {
542
- className: styles['header-calendar_filter']
543
- }, React.createElement("div", {
544
- className: clsx$1('cursor-pointer', filter.isOpen && styles['text-lms-primary']),
545
- onClick: toggleTurnOnFilter
546
- }, React.createElement(FilterIcon, null)), React.createElement("div", {
547
- className: "" + styles['header-calendar__nav']
548
- }, React.createElement(Icon, {
549
- icon: React.createElement(LeftArrowIcon, null),
550
- onClick: function onClick() {
551
- return handleChangeDate(currentDate.subtract(1, calendarMode));
552
- },
553
- className: styles['rounded-none']
554
- }), React.createElement(DatePicker, {
555
- picker: calendarMode === 'day' ? 'date' : calendarMode,
556
- onChange: handleChangeDate,
557
- format: function format(value) {
558
- return customDateFormat(value, calendarMode === 'day' ? FORMAT_DATE_CARLENDA.DATE : FORMAT_DATE_CARLENDA.MONTH_AND_WEEK);
566
+ var MonthlyEvent = function MonthlyEvent(_ref) {
567
+ var _event$title, _event$title2;
568
+ var event = _ref.event,
569
+ isSameMonth = _ref.isSameMonth,
570
+ onEventDetail = _ref.onEventDetail;
571
+ var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
572
+ var formattedDateStart = customDateFormat(event.startDate, TIME_FORMAT);
573
+ return React.createElement(React.Fragment, null, React.createElement("li", {
574
+ className: styles["event-" + (isSameMonth ? convertType[event.type] : 'default')],
575
+ style: {
576
+ cursor: 'pointer'
559
577
  },
560
- value: currentDate,
561
- allowClear: false,
562
- suffixIcon: null,
563
- className: styles['header-calendar__date-picker'],
564
- size: 'large'
565
- }), React.createElement(Icon, {
566
- icon: React.createElement(RightArrowIcon, null),
567
- onClick: function onClick() {
568
- return handleChangeDate(currentDate.add(1, calendarMode));
569
- }
570
- }))), showTeacherName && React.createElement("div", {
571
- className: styles['header-calendar__title']
572
- }, title), React.createElement("div", {
573
- className: styles['header-calendar__controls']
574
- }, React.createElement(Button, {
575
- color: 'lms-default',
576
578
  onClick: function onClick() {
577
- return handleChangeDate(dayjs());
578
- }
579
- }, "Today"), React.createElement("div", {
580
- className: styles['header-calendar__divider']
581
- }), React.createElement(SelectBox, {
582
- value: calendarMode,
583
- options: options,
584
- className: 'select-mode',
585
- onChange: function onChange(mode) {
586
- handleChangeMode(mode);
579
+ return onEventDetail && onEventDetail(event);
587
580
  }
588
- })));
589
- };
590
-
591
- var styles$1 = {"ant-picker-calendar-header":"_2Y9jk","ant-radio-group":"_3puh0","ant-picker-calendar-month-select":"_1b_yY","calendar-filter":"_1K0QG","calendar-filter_title":"_1kmo4","calendar-filter_note_blue":"_3yl3q","calendar-filter_note_pureple":"_dS6FM","calendar-filter_note_green":"_2v-Pp","calendar-filter_note_yellow":"_1u4J8","calendar-filter_note_red":"_1RLYM","calendar-filter_content_list_item":"_29aaM","calendar-filter_content_item_eye":"_1yCoo"};
592
-
593
- var FilterCalendar = function FilterCalendar(_ref) {
594
- var filter = _ref.filter,
595
- setFilter = _ref.setFilter,
596
- courses = _ref.courses;
597
- var noteFilter = useMemo(function () {
598
- return [{
599
- title: 'Online',
600
- icon: React.createElement("div", {
601
- className: styles$1['calendar-filter_note_blue']
602
- }),
603
- value: LEARNING_MODE.ONLINE
604
- }, {
605
- title: 'Live Online',
606
- icon: React.createElement("div", {
607
- className: styles$1['calendar-filter_note_pureple']
608
- }),
609
- value: LEARNING_MODE.LIVE_ONLINE
610
- }, {
611
- title: 'Offline',
612
- icon: React.createElement("div", {
613
- className: styles$1['calendar-filter_note_green']
614
- }),
615
- value: LEARNING_MODE.OFFLINE
616
- }, {
617
- title: 'Case Study',
618
- icon: React.createElement(GoldStarIcon, null),
619
- value: LEARNING_MODE.CASE_STUDY
620
- }, {
621
- title: 'Test',
622
- icon: React.createElement(BookIcon, null),
623
- value: LEARNING_MODE.TEST
624
- }, {
625
- title: 'Holiday',
626
- icon: React.createElement("div", {
627
- className: styles$1['calendar-filter_note_yellow']
628
- }),
629
- value: LEARNING_MODE.HOLIDAY
630
- }, {
631
- title: 'Overdue',
632
- icon: React.createElement("div", {
633
- className: styles$1['calendar-filter_note_red']
634
- }),
635
- value: LEARNING_MODE.OVERDUE
636
- }];
637
- }, []);
638
- var handleFilter = function handleFilter(type, value) {
639
- switch (type) {
640
- case 'course':
641
- {
642
- setFilter(function (prev) {
643
- var courseId = prev.courseId || [];
644
- var updatedCourseId = courseId.includes(value) ? courseId.filter(function (item) {
645
- return item !== value;
646
- }) : [].concat(courseId, [value]);
647
- return _extends({}, prev, {
648
- courseId: updatedCourseId
649
- });
650
- });
651
- break;
652
- }
653
- case 'note':
654
- {
655
- setFilter(function (prev) {
656
- var typeArray = prev.type || [];
657
- var updatedType = typeArray.includes(value) ? typeArray.filter(function (item) {
658
- return item !== value;
659
- }) : [].concat(typeArray, [value]);
660
- return _extends({}, prev, {
661
- type: updatedType
662
- });
663
- });
664
- break;
665
- }
666
- case 'day':
667
- {
668
- setFilter(function (prev) {
669
- return _extends({}, prev, {
670
- day: value
671
- });
672
- });
673
- break;
674
- }
675
- }
676
- };
677
- var handleFilterday = function handleFilterday(date) {
678
- handleFilter('day', date.toString());
679
- };
680
- return React.createElement("div", {
681
- className: styles$1['calendar-filter']
682
- }, React.createElement(Calendar, {
683
- mode: 'month',
684
- fullscreen: false,
685
- onChange: handleFilterday
686
- }), React.createElement("div", null, React.createElement("div", {
687
- className: styles$1['calendar-filter_title']
688
- }, React.createElement(TagIcon, null), React.createElement("h3", null, "Notes")), React.createElement("div", null, noteFilter.map(function (item) {
689
- var _filter$type;
690
- return React.createElement("div", {
691
- className: styles$1['calendar-filter_content_list_item'],
692
- key: item.value
693
- }, React.createElement("div", {
694
- className: styles$1['calendar-filter_content_list_item']
695
- }, item.icon, item.title), React.createElement("div", {
696
- onClick: function onClick() {
697
- return handleFilter('note', item.value);
698
- },
699
- className: styles$1['calendar-filter_content_item_eye']
700
- }, (_filter$type = filter.type) !== null && _filter$type !== void 0 && _filter$type.includes(item.value) ? React.createElement(EyeIcon, null) : React.createElement(HiddenEyeIcon, null)));
701
- }))), React.createElement("div", null, React.createElement("div", {
702
- className: styles$1['calendar-filter_title']
703
- }, React.createElement(EducationIcon, null), React.createElement("h3", null, "My courses")), React.createElement("div", null, courses === null || courses === void 0 ? void 0 : courses.map(function (item, key) {
704
- var _filter$courseId;
705
- return React.createElement("div", {
706
- key: key,
707
- className: styles$1['calendar-filter_content_list_item']
708
- }, React.createElement("div", {
709
- className: styles$1['calendar-filter_content_list_item']
710
- }, item.name), React.createElement("div", {
711
- onClick: function onClick() {
712
- return handleFilter('course', item.id);
713
- },
714
- className: styles$1['calendar-filter_content_item_eye']
715
- }, (_filter$courseId = filter.courseId) !== null && _filter$courseId !== void 0 && _filter$courseId.includes(item.id) ? React.createElement(EyeIcon, null) : React.createElement(HiddenEyeIcon, null)));
716
- }))));
717
- };
718
-
719
- var CustomTooltip = function CustomTooltip(_ref) {
720
- var title = _ref.title,
721
- children = _ref.children,
722
- _ref$placement = _ref.placement,
723
- placement = _ref$placement === void 0 ? 'top' : _ref$placement;
724
- return React.createElement(Tooltip, {
725
- color: '#ffffff',
726
- title: React.createElement("div", {
727
- className: styles['text-gray-600']
728
- }, title),
729
- placement: placement
730
- }, React.createElement("div", null, children));
731
- };
732
-
733
- var MonthlyEvent = function MonthlyEvent(_ref) {
734
- var event = _ref.event,
735
- isSameMonth = _ref.isSameMonth,
736
- onEventDetail = _ref.onEventDetail;
737
- var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
738
- return React.createElement(React.Fragment, null, React.createElement("li", {
739
- className: styles["event-" + (isSameMonth ? convertType[event.type] : 'default')],
740
- style: {
741
- cursor: 'pointer'
742
- },
743
- onClick: function onClick() {
744
- return onEventDetail && onEventDetail(event);
745
- }
746
- }, React.createElement("div", {
747
- className: styles['monthly-event__title']
748
- }, React.createElement(CustomTooltip, {
749
- title: event.title
750
- }, event.title)), React.createElement("div", {
751
- className: styles['monthly-event__date']
752
- }, React.createElement(CustomTooltip, {
753
- title: formattedDate
754
- }, formattedDate))));
581
+ }, React.createElement("div", {
582
+ className: styles['monthly-event__title']
583
+ }, React.createElement("div", {
584
+ className: styles['weekly-event__title_icon']
585
+ }, getIconforEvent(event)), React.createElement(CustomTooltip, {
586
+ title: event.title
587
+ }, (event === null || event === void 0 ? void 0 : (_event$title = event.title) === null || _event$title === void 0 ? void 0 : _event$title.length) > 5 ? (event === null || event === void 0 ? void 0 : (_event$title2 = event.title) === null || _event$title2 === void 0 ? void 0 : _event$title2.slice(0, 5)) + '...' : event === null || event === void 0 ? void 0 : event.title)), React.createElement("div", {
588
+ className: styles['monthly-event__date']
589
+ }, React.createElement(CustomTooltip, {
590
+ title: formattedDate
591
+ }, formattedDate)), React.createElement("div", {
592
+ className: styles['monthly-event__date_tablet']
593
+ }, getIconforEvent(event), React.createElement(CustomTooltip, {
594
+ title: formattedDate
595
+ }, formattedDateStart))));
755
596
  };
756
597
 
757
598
  var MonthlyCell = function MonthlyCell(_ref) {
@@ -903,56 +744,62 @@ var MonthlyCalendar = function MonthlyCalendar(_ref) {
903
744
  });
904
745
  };
905
746
 
906
- var _getIconEvent;
907
- var getIconEvent = (_getIconEvent = {}, _getIconEvent[EVENT_TYPES.TEACHING] = React.createElement(Book, null), _getIconEvent[EVENT_TYPES.BUSY] = React.createElement(CalendarDelete, null), _getIconEvent[EVENT_TYPES.TIME_OFF] = React.createElement(Star, null), _getIconEvent[EVENT_TYPES.OTHER] = React.createElement(CalendarAccept, null), _getIconEvent);
908
- var calculateBoxSize = function calculateBoxSize(startTime, endTime) {
747
+ var calculateBoxSize = function calculateBoxSize(startTime, endTime, isAllDay) {
748
+ if (isAllDay) {
749
+ return {
750
+ top: 10,
751
+ height: 50
752
+ };
753
+ }
909
754
  var minutes = dayjs(startTime).minute();
910
- var diffMinutes = dayjs(endTime).diff(startTime, 'hour', true);
755
+ var diffMinutes = dayjs(endTime).diff(startTime, 'minute', true);
756
+ var top = Math.floor(minutes / MINUTES_PER_HOUR * 100);
757
+ var height = Math.floor(diffMinutes / MINUTES_PER_HOUR * 100);
758
+ var border = Math.floor((top + height) / MINUTES_PER_HOUR * BORDER_WEEKLY_CELL);
911
759
  return {
912
- width: diffMinutes || 1,
913
- left: Math.floor(minutes / MINUTES_PER_HOUR * 100)
760
+ top: top,
761
+ height: height + border
914
762
  };
915
763
  };
916
- var LMSWeeklyEvent = function LMSWeeklyEvent(_ref) {
764
+ var WeeklyEvent = function WeeklyEvent(_ref) {
917
765
  var event = _ref.event,
918
766
  onOpenDetail = _ref.onOpenDetail,
919
- onEventDetail = _ref.onEventDetail;
767
+ onEventDetail = _ref.onEventDetail,
768
+ zIndex = _ref.zIndex;
769
+ var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate, event.isAllDay),
770
+ top = _calculateBoxSize.top,
771
+ height = _calculateBoxSize.height;
772
+ var isMinHeight = height < MIN_HEIGHT_EVENT;
920
773
  var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
921
- var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate),
922
- width = _calculateBoxSize.width,
923
- left = _calculateBoxSize.left;
924
774
  return React.createElement("div", {
925
- className: styles["event-" + convertType[event.type]],
775
+ className: clsx$1(styles["event-" + convertType[event.type]], isMinHeight && styles['event--min-height']),
926
776
  onClick: function onClick() {
927
777
  onOpenDetail(dayjs(event.startDate).toDate(), [event]);
928
778
  onEventDetail && onEventDetail(event);
929
779
  },
930
780
  style: {
931
- top: "0%",
932
- height: "100%",
933
- width: width * 100 + '%',
934
- left: left + '%',
935
- zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
781
+ top: top + "%",
782
+ height: Math.max(height, MIN_HEIGHT_EVENT) + "%",
783
+ zIndex: zIndex
936
784
  }
937
785
  }, React.createElement("div", {
938
- className: clsx$1(styles['weekly-event'])
786
+ className: clsx$1(styles['weekly-event'], height <= MIN_HEIGHT_HIDE_ALL && styles['weekly-event--collapse'])
939
787
  }, React.createElement("div", {
940
- className: clsx$1(styles['weekly-event--collapse'])
788
+ className: clsx$1(height <= MIN_HEIGHT_HIDE_DETAILS && styles['weekly-event--collapse'])
941
789
  }, React.createElement("div", {
942
- className: styles.flex
943
- }, getIconEvent[event.type]), React.createElement("div", {
944
790
  className: styles['weekly-event__title']
945
- }, React.createElement(CustomTooltip, {
791
+ }, React.createElement("div", {
792
+ className: styles['weekly-event__title_icon']
793
+ }, getIconforEvent(event)), React.createElement(CustomTooltip, {
946
794
  title: event.title
947
- }, event.title))), React.createElement("div", {
795
+ }, event.title.length > 5 ? event.title.slice(0, 5) + '...' : '')), React.createElement("div", {
948
796
  className: styles['weekly-event__date']
949
797
  }, React.createElement(CustomTooltip, {
950
798
  title: formattedDate
951
- }, formattedDate))));
799
+ }, formattedDate)))));
952
800
  };
953
801
 
954
- var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
955
- var _events;
802
+ var WeeklyCell = function WeeklyCell(_ref) {
956
803
  var events = _ref.events,
957
804
  date = _ref.date,
958
805
  onOpenDetail = _ref.onOpenDetail,
@@ -963,19 +810,19 @@ var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
963
810
  if (e.target !== e.currentTarget) return;
964
811
  onOpenCreate(dayjs(date).toDate());
965
812
  };
966
- events = (_events = events) === null || _events === void 0 ? void 0 : _events.sort(function (a, b) {
813
+ events.sort(function (a, b) {
967
814
  return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
968
815
  });
969
816
  var renderWeeklyEvent = useMemo(function () {
970
- var _events2, _events3, _events4;
971
- var isAllDay = (_events2 = events) === null || _events2 === void 0 ? void 0 : _events2.some(function (item) {
817
+ var isAllDay = events.some(function (item) {
972
818
  return item.isAllDay;
973
819
  });
974
- if (isAllDay && ((_events3 = events) === null || _events3 === void 0 ? void 0 : _events3.length) > 1) {
975
- return React.createElement(React.Fragment, null, React.createElement(LMSWeeklyEvent, {
820
+ if (isAllDay && events.length > 1) {
821
+ return React.createElement(React.Fragment, null, React.createElement(WeeklyEvent, {
976
822
  event: events[0],
977
823
  onOpenDetail: onOpenDetail,
978
- onEventDetail: onEventDetail
824
+ onEventDetail: onEventDetail,
825
+ zIndex: 1
979
826
  }), React.createElement("div", {
980
827
  className: styles['see-more']
981
828
  }, React.createElement(CustomTooltip, {
@@ -983,21 +830,23 @@ var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
983
830
  title: React.createElement("div", {
984
831
  className: styles['calendar-tooltip']
985
832
  }, events.slice(1, events.length).map(function (event, index) {
986
- return React.createElement(LMSWeeklyEvent, {
833
+ return React.createElement(WeeklyEvent, {
987
834
  event: event,
988
835
  onOpenDetail: onOpenDetail,
989
836
  onEventDetail: onEventDetail,
990
- key: index + 1
837
+ key: index + 1,
838
+ zIndex: index + 1
991
839
  });
992
840
  }))
993
841
  }, "+", Math.max(events.length - 1, 0), " More")));
994
842
  }
995
- return (_events4 = events) === null || _events4 === void 0 ? void 0 : _events4.map(function (event, index) {
996
- return React.createElement(LMSWeeklyEvent, {
843
+ return events.map(function (event, index) {
844
+ return React.createElement(WeeklyEvent, {
997
845
  key: index,
998
846
  event: event,
999
847
  onOpenDetail: onOpenDetail,
1000
- onEventDetail: onEventDetail
848
+ onEventDetail: onEventDetail,
849
+ zIndex: index + 1
1001
850
  });
1002
851
  });
1003
852
  }, [events]);
@@ -1008,29 +857,56 @@ var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
1008
857
  };
1009
858
 
1010
859
  dayjs.extend(isBetween);
1011
- var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
860
+ var getEventAllDay = function getEventAllDay(events, targetDate) {
861
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
862
+ var currentDate = targetDate.add(index, 'day');
863
+ acc[day] = {
864
+ events: events.reduce(function (filteredEvents, event) {
865
+ if (dayjs(event.startDate).isSame(currentDate.startOf('day')) && checkIsAllday(dayjs(event.startDate), dayjs(event.endDate))) {
866
+ filteredEvents.push(_extends({}, event, {
867
+ isAllDay: true
868
+ }));
869
+ }
870
+ return filteredEvents;
871
+ }, []),
872
+ date: currentDate
873
+ };
874
+ return acc;
875
+ }, {});
876
+ };
877
+ var getEventsOfDay = function getEventsOfDay(events, targetHour) {
878
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
879
+ var currentDate = targetHour.add(index, 'day');
880
+ acc[day] = {
881
+ events: events.filter(function (event) {
882
+ return dayjs(event.startDate).isSame(currentDate, 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
883
+ }),
884
+ date: currentDate
885
+ };
886
+ return acc;
887
+ }, {});
888
+ };
889
+ var WeeklyCalendar = function WeeklyCalendar(_ref) {
1012
890
  var startDate = _ref.startDate,
891
+ endDate = _ref.endDate,
1013
892
  events = _ref.events,
893
+ norms = _ref.norms,
894
+ showWeeklyNorm = _ref.showWeeklyNorm,
1014
895
  onOpenDetail = _ref.onOpenDetail,
1015
896
  onOpenCreate = _ref.onOpenCreate,
1016
897
  onEventDetail = _ref.onEventDetail,
1017
- loading = _ref.loading;
1018
- var getEventsOfHour = function getEventsOfHour(events, targetHour) {
1019
- return hoursOfDayKeys.reduce(function (acc, hour) {
1020
- acc[hour] = {
1021
- events: events.filter(function (event) {
1022
- return dayjs(event.startDate).isSame(dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour + ":00"), 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
1023
- }),
1024
- date: dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour)
1025
- };
1026
- return acc;
1027
- }, {});
1028
- };
898
+ loading = _ref.loading,
899
+ type = _ref.type;
1029
900
  var getTableColumns = function getTableColumns() {
901
+ var _calculateNormOfWeek = calculateNormOfWeek(norms, events, startDate, endDate),
902
+ normOfWeek = _calculateNormOfWeek.normOfWeek,
903
+ totalNorm = _calculateNormOfWeek.totalNorm;
1030
904
  var hourColumn = {
1031
905
  title: React.createElement("div", {
1032
906
  className: styles['weekly-calendar__title']
1033
- }),
907
+ }, showWeeklyNorm && React.createElement(React.Fragment, null, React.createElement("div", null, "Weekly Norm"), React.createElement("div", {
908
+ className: clsx$1(normOfWeek > totalNorm && styles['!text-error'])
909
+ }, normOfWeek + "/" + totalNorm))),
1034
910
  dataIndex: 'hour',
1035
911
  key: 'hour',
1036
912
  width: 1,
@@ -1038,31 +914,18 @@ var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
1038
914
  return React.createElement("div", null, value);
1039
915
  }
1040
916
  };
1041
- var hours = Array.from({
1042
- length: 17
1043
- }, function (_, i) {
1044
- return 7 + i;
1045
- });
1046
- var timeColums = hours.map(function (time, index) {
917
+ var dayColumns = Object.values(DAYS_OF_WEEK).map(function (day, index) {
1047
918
  return {
1048
919
  title: React.createElement("div", {
1049
920
  className: styles['weekly-calendar__title']
1050
- }, time % 2 !== 0 ? React.createElement("div", {
1051
- style: {
1052
- textAlign: 'start'
1053
- }
1054
- }, time < 10 ? '0' + time + ':00' : time + ':00') : React.createElement("div", {
1055
- style: {
1056
- minWidth: '35px'
1057
- }
1058
- })),
1059
- dataIndex: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
1060
- key: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
921
+ }, React.createElement("div", null, day.slice(0, 3)), React.createElement("div", null, dayjs(startDate).add(index, 'day').format('DD/MM'))),
922
+ dataIndex: day,
923
+ key: day,
1061
924
  render: function render(value) {
1062
- return React.createElement(LMSWeeklyCell, {
925
+ return React.createElement(WeeklyCell, {
1063
926
  key: index,
1064
- events: value === null || value === void 0 ? void 0 : value.events,
1065
- date: value === null || value === void 0 ? void 0 : value.date,
927
+ events: value.events,
928
+ date: value.date,
1066
929
  onOpenDetail: onOpenDetail,
1067
930
  onOpenCreate: onOpenCreate,
1068
931
  onEventDetail: onEventDetail
@@ -1070,15 +933,211 @@ var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
1070
933
  }
1071
934
  };
1072
935
  });
1073
- return [hourColumn].concat(timeColums);
936
+ return [hourColumn].concat(dayColumns);
1074
937
  };
1075
938
  var getTableData = function getTableData() {
1076
939
  var data = [];
1077
- for (var i = 0; i < 7; i++) {
1078
- var targetHour = dayjs(startDate).add(i, 'day');
940
+ data.push(_extends({
941
+ id: -1,
942
+ hour: 'All day'
943
+ }, getEventAllDay(events, startDate)));
944
+ var count = type === CALENDAR_TYPE.LMS ? 7 : 0;
945
+ for (var i = count; i < HOURS_PER_DAY; i++) {
946
+ var targetHour = dayjs(startDate).add(i, 'hour');
1079
947
  data.push(_extends({
1080
948
  id: i,
1081
- hour: React.createElement("div", null, React.createElement("div", {
949
+ hour: targetHour.format('HH:mm')
950
+ }, getEventsOfDay(events, targetHour)));
951
+ }
952
+ return data;
953
+ };
954
+ return React.createElement(Table, {
955
+ rowKey: function rowKey(record) {
956
+ return record.id;
957
+ },
958
+ columns: getTableColumns(),
959
+ dataSource: getTableData(),
960
+ pagination: false,
961
+ rowHoverable: false,
962
+ className: styles['weekly-calendar'],
963
+ loading: loading
964
+ });
965
+ };
966
+
967
+ var calculateBoxSize$1 = function calculateBoxSize(startTime, endTime) {
968
+ var minutes = dayjs(startTime).minute();
969
+ var diffMinutes = dayjs(endTime).diff(startTime, 'hour', true);
970
+ return {
971
+ width: diffMinutes || 1,
972
+ left: Math.floor(minutes / MINUTES_PER_HOUR * 100)
973
+ };
974
+ };
975
+ var LMSWeeklyEvent = function LMSWeeklyEvent(_ref) {
976
+ var event = _ref.event,
977
+ onOpenDetail = _ref.onOpenDetail,
978
+ onEventDetail = _ref.onEventDetail;
979
+ var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
980
+ var _calculateBoxSize = calculateBoxSize$1(event.startDate, event.endDate),
981
+ width = _calculateBoxSize.width,
982
+ left = _calculateBoxSize.left;
983
+ return React.createElement("div", {
984
+ className: styles["event-" + convertType[event.type]],
985
+ onClick: function onClick() {
986
+ onOpenDetail(dayjs(event.startDate).toDate(), [event]);
987
+ onEventDetail && onEventDetail(event);
988
+ },
989
+ style: {
990
+ top: "0%",
991
+ height: "100%",
992
+ width: width * 100 + '%',
993
+ left: left + '%',
994
+ zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
995
+ }
996
+ }, React.createElement("div", {
997
+ className: clsx$1(styles['weekly-event'])
998
+ }, React.createElement("div", {
999
+ className: clsx$1(styles['weekly-event--collapse'])
1000
+ }, React.createElement("div", {
1001
+ className: styles['weekly-event__title']
1002
+ }, React.createElement("div", {
1003
+ className: styles['weekly-event__title_icon']
1004
+ }, getIconforEvent(event)), React.createElement(CustomTooltip, {
1005
+ title: event.title
1006
+ }, event.title.length > 5 ? event.title.slice(0, 5) + '...' : ''))), React.createElement("div", {
1007
+ className: styles['weekly-event__date']
1008
+ }, React.createElement(CustomTooltip, {
1009
+ title: formattedDate
1010
+ }, formattedDate))));
1011
+ };
1012
+
1013
+ var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
1014
+ var _events;
1015
+ var events = _ref.events,
1016
+ date = _ref.date,
1017
+ onOpenDetail = _ref.onOpenDetail,
1018
+ onOpenCreate = _ref.onOpenCreate,
1019
+ onEventDetail = _ref.onEventDetail;
1020
+ var isToday = dayjs().isSame(date, 'day');
1021
+ var handleOpenCreateModal = function handleOpenCreateModal(e) {
1022
+ if (e.target !== e.currentTarget) return;
1023
+ onOpenCreate(dayjs(date).toDate());
1024
+ };
1025
+ events = (_events = events) === null || _events === void 0 ? void 0 : _events.sort(function (a, b) {
1026
+ return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
1027
+ });
1028
+ var renderWeeklyEvent = useMemo(function () {
1029
+ var _events2, _events3, _events4;
1030
+ var isAllDay = (_events2 = events) === null || _events2 === void 0 ? void 0 : _events2.some(function (item) {
1031
+ return item.isAllDay;
1032
+ });
1033
+ if (isAllDay && ((_events3 = events) === null || _events3 === void 0 ? void 0 : _events3.length) > 1) {
1034
+ return React.createElement(React.Fragment, null, React.createElement(LMSWeeklyEvent, {
1035
+ event: events[0],
1036
+ onOpenDetail: onOpenDetail,
1037
+ onEventDetail: onEventDetail
1038
+ }), React.createElement("div", {
1039
+ className: styles['see-more']
1040
+ }, React.createElement(CustomTooltip, {
1041
+ placement: 'bottom',
1042
+ title: React.createElement("div", {
1043
+ className: styles['calendar-tooltip']
1044
+ }, events.slice(1, events.length).map(function (event, index) {
1045
+ return React.createElement(LMSWeeklyEvent, {
1046
+ event: event,
1047
+ onOpenDetail: onOpenDetail,
1048
+ onEventDetail: onEventDetail,
1049
+ key: index + 1
1050
+ });
1051
+ }))
1052
+ }, "+", Math.max(events.length - 1, 0), " More")));
1053
+ }
1054
+ return (_events4 = events) === null || _events4 === void 0 ? void 0 : _events4.map(function (event, index) {
1055
+ return React.createElement(LMSWeeklyEvent, {
1056
+ key: index,
1057
+ event: event,
1058
+ onOpenDetail: onOpenDetail,
1059
+ onEventDetail: onEventDetail
1060
+ });
1061
+ });
1062
+ }, [events]);
1063
+ return React.createElement("div", {
1064
+ className: styles['weekly-calendar__cell'] + " " + styles['weekly-calendar-lms__cell'] + " " + (isToday ? styles['bg-info/10'] : styles['bg-white']),
1065
+ onClick: handleOpenCreateModal
1066
+ }, renderWeeklyEvent);
1067
+ };
1068
+
1069
+ dayjs.extend(isBetween);
1070
+ var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
1071
+ var startDate = _ref.startDate,
1072
+ events = _ref.events,
1073
+ onOpenDetail = _ref.onOpenDetail,
1074
+ onOpenCreate = _ref.onOpenCreate,
1075
+ onEventDetail = _ref.onEventDetail,
1076
+ loading = _ref.loading;
1077
+ var getEventsOfHour = function getEventsOfHour(events, targetHour) {
1078
+ return hoursOfDayKeys.reduce(function (acc, hour) {
1079
+ acc[hour] = {
1080
+ events: events.filter(function (event) {
1081
+ return dayjs(event.startDate).isSame(dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour + ":00"), 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
1082
+ }),
1083
+ date: dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour)
1084
+ };
1085
+ return acc;
1086
+ }, {});
1087
+ };
1088
+ var getTableColumns = function getTableColumns() {
1089
+ var hourColumn = {
1090
+ title: React.createElement("div", {
1091
+ className: styles['weekly-calendar__title']
1092
+ }),
1093
+ dataIndex: 'hour',
1094
+ key: 'hour',
1095
+ width: 1,
1096
+ render: function render(value) {
1097
+ return React.createElement("div", null, value);
1098
+ }
1099
+ };
1100
+ var hours = Array.from({
1101
+ length: 17
1102
+ }, function (_, i) {
1103
+ return 7 + i;
1104
+ });
1105
+ var timeColums = hours.map(function (time, index) {
1106
+ return {
1107
+ title: React.createElement("div", {
1108
+ className: styles['weekly-calendar__title']
1109
+ }, time % 2 !== 0 ? React.createElement("div", {
1110
+ style: {
1111
+ textAlign: 'start'
1112
+ }
1113
+ }, time < 10 ? '0' + time + ':00' : time + ':00') : React.createElement("div", {
1114
+ style: {
1115
+ minWidth: '35px'
1116
+ }
1117
+ })),
1118
+ dataIndex: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
1119
+ key: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
1120
+ render: function render(value) {
1121
+ return React.createElement(LMSWeeklyCell, {
1122
+ key: index,
1123
+ events: value === null || value === void 0 ? void 0 : value.events,
1124
+ date: value === null || value === void 0 ? void 0 : value.date,
1125
+ onOpenDetail: onOpenDetail,
1126
+ onOpenCreate: onOpenCreate,
1127
+ onEventDetail: onEventDetail
1128
+ });
1129
+ }
1130
+ };
1131
+ });
1132
+ return [hourColumn].concat(timeColums);
1133
+ };
1134
+ var getTableData = function getTableData() {
1135
+ var data = [];
1136
+ for (var i = 0; i < 7; i++) {
1137
+ var targetHour = dayjs(startDate).add(i + 1, 'day');
1138
+ data.push(_extends({
1139
+ id: i,
1140
+ hour: React.createElement("div", null, React.createElement("div", {
1082
1141
  className: styles['lms-calendar__tablet']
1083
1142
  }, Object.values(DAYS_OF_WEEK_SHORTEN)[i]), React.createElement("div", {
1084
1143
  className: styles['lms-calendar__tablet']
@@ -1100,6 +1159,282 @@ var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
1100
1159
  });
1101
1160
  };
1102
1161
 
1162
+ function LMSModeWeeklyCalendar(_ref) {
1163
+ var startDate = _ref.startDate,
1164
+ endDate = _ref.endDate,
1165
+ events = _ref.events,
1166
+ norms = _ref.norms,
1167
+ _ref$showWeeklyNorm = _ref.showWeeklyNorm,
1168
+ showWeeklyNorm = _ref$showWeeklyNorm === void 0 ? false : _ref$showWeeklyNorm,
1169
+ onOpenDetail = _ref.onOpenDetail,
1170
+ onOpenCreate = _ref.onOpenCreate,
1171
+ onEventDetail = _ref.onEventDetail,
1172
+ loading = _ref.loading;
1173
+ var _useState = useState(window.innerWidth),
1174
+ windowWidth = _useState[0],
1175
+ setWindowWidth = _useState[1];
1176
+ useEffect(function () {
1177
+ var handleResize = function handleResize() {
1178
+ setWindowWidth(window.innerWidth);
1179
+ };
1180
+ window.addEventListener('resize', handleResize);
1181
+ return function () {
1182
+ window.removeEventListener('resize', handleResize);
1183
+ };
1184
+ }, []);
1185
+ return React.createElement(React.Fragment, null, windowWidth > 1024 ? React.createElement(WeeklyCalendar, {
1186
+ startDate: startDate,
1187
+ endDate: endDate,
1188
+ events: events,
1189
+ norms: norms,
1190
+ showWeeklyNorm: showWeeklyNorm,
1191
+ onOpenDetail: onOpenDetail,
1192
+ onOpenCreate: onOpenCreate,
1193
+ onEventDetail: onEventDetail,
1194
+ loading: loading,
1195
+ type: CALENDAR_TYPE.LMS
1196
+ }) : React.createElement(LMSWeeklyCalendar, {
1197
+ startDate: startDate,
1198
+ endDate: endDate,
1199
+ events: events,
1200
+ norms: norms,
1201
+ onOpenDetail: onOpenDetail,
1202
+ onOpenCreate: onOpenCreate,
1203
+ onEventDetail: onEventDetail,
1204
+ loading: loading,
1205
+ type: CALENDAR_TYPE.LMS
1206
+ }));
1207
+ }
1208
+
1209
+ var SelectBox = function SelectBox(_ref) {
1210
+ var value = _ref.value,
1211
+ options = _ref.options,
1212
+ defaultValue = _ref.defaultValue,
1213
+ _ref$className = _ref.className,
1214
+ className = _ref$className === void 0 ? '' : _ref$className,
1215
+ disabled = _ref.disabled,
1216
+ onChange = _ref.onChange;
1217
+ return React.createElement(Select, {
1218
+ defaultValue: defaultValue,
1219
+ className: className,
1220
+ disabled: disabled,
1221
+ options: options,
1222
+ value: value,
1223
+ onChange: onChange
1224
+ });
1225
+ };
1226
+
1227
+ var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
1228
+ var title = _ref.title,
1229
+ showTeacherName = _ref.showTeacherName,
1230
+ currentDate = _ref.currentDate,
1231
+ setCurrentDate = _ref.setCurrentDate,
1232
+ calendarMode = _ref.calendarMode,
1233
+ setCalendarMode = _ref.setCalendarMode,
1234
+ toggleTurnOnFilter = _ref.toggleTurnOnFilter,
1235
+ filter = _ref.filter,
1236
+ hasFilter = _ref.hasFilter;
1237
+ var options = [{
1238
+ value: 'month',
1239
+ label: 'Month'
1240
+ }, {
1241
+ value: 'week',
1242
+ label: 'Week'
1243
+ }];
1244
+ var handleChangeDate = function handleChangeDate(date) {
1245
+ setCurrentDate(date);
1246
+ };
1247
+ var handleChangeMode = function handleChangeMode(mode) {
1248
+ setCalendarMode(mode);
1249
+ setCurrentDate(dayjs());
1250
+ };
1251
+ return React.createElement("div", {
1252
+ className: styles['header-calendar']
1253
+ }, React.createElement("div", {
1254
+ className: styles['header-calendar_filter']
1255
+ }, hasFilter && React.createElement("div", {
1256
+ className: clsx$1(styles['hover-item'], filter.isOpen && styles['text-lms-primary']),
1257
+ onClick: toggleTurnOnFilter
1258
+ }, React.createElement(FilterIcon, null)), React.createElement("div", {
1259
+ className: "" + styles['header-calendar__nav']
1260
+ }, React.createElement(Icon, {
1261
+ icon: React.createElement(LeftArrowIcon, null),
1262
+ onClick: function onClick() {
1263
+ return handleChangeDate(currentDate.subtract(1, calendarMode));
1264
+ },
1265
+ className: styles['rounded-none']
1266
+ }), React.createElement(DatePicker, {
1267
+ picker: calendarMode === 'day' ? 'date' : calendarMode,
1268
+ onChange: handleChangeDate,
1269
+ format: function format(value) {
1270
+ return customDateFormat(value, calendarMode === 'day' ? FORMAT_DATE_CARLENDA.DATE : FORMAT_DATE_CARLENDA.MONTH_AND_WEEK);
1271
+ },
1272
+ value: currentDate,
1273
+ allowClear: false,
1274
+ suffixIcon: null,
1275
+ className: styles['header-calendar__date-picker'],
1276
+ size: 'large'
1277
+ }), React.createElement(Icon, {
1278
+ icon: React.createElement(RightArrowIcon, null),
1279
+ onClick: function onClick() {
1280
+ return handleChangeDate(currentDate.add(1, calendarMode));
1281
+ }
1282
+ }))), showTeacherName && React.createElement("div", {
1283
+ className: styles['header-calendar__title']
1284
+ }, title), React.createElement("div", {
1285
+ className: styles['header-calendar__controls']
1286
+ }, React.createElement(Button, {
1287
+ color: 'lms-default',
1288
+ onClick: function onClick() {
1289
+ return handleChangeDate(dayjs());
1290
+ }
1291
+ }, "Today"), React.createElement("div", {
1292
+ className: styles['header-calendar__divider']
1293
+ }), React.createElement(SelectBox, {
1294
+ value: calendarMode,
1295
+ options: options,
1296
+ className: 'select-mode',
1297
+ onChange: function onChange(mode) {
1298
+ handleChangeMode(mode);
1299
+ }
1300
+ })));
1301
+ };
1302
+
1303
+ var styles$1 = {"ant-picker-calendar-header":"_2Y9jk","ant-radio-group":"_3puh0","ant-picker-calendar-month-select":"_1b_yY","calendar-filter":"_1K0QG","calendar-filter_title":"_1kmo4","calendar-filter_note_blue":"_3yl3q","calendar-filter_note_pureple":"_dS6FM","calendar-filter_note_green":"_2v-Pp","calendar-filter_note_yellow":"_1u4J8","calendar-filter_note_red":"_1RLYM","calendar-filter_content_list_item":"_29aaM","calendar-filter_content_item_eye":"_1yCoo"};
1304
+
1305
+ var FilterCalendar = function FilterCalendar(_ref) {
1306
+ var filter = _ref.filter,
1307
+ setFilter = _ref.setFilter,
1308
+ courses = _ref.courses,
1309
+ onRefetchAPI = _ref.onRefetchAPI;
1310
+ var noteFilter = useMemo(function () {
1311
+ return [{
1312
+ title: 'Online',
1313
+ icon: React.createElement("div", {
1314
+ className: styles$1['calendar-filter_note_blue']
1315
+ }),
1316
+ value: LEARNING_MODE.ONLINE
1317
+ }, {
1318
+ title: 'Live Online',
1319
+ icon: React.createElement("div", {
1320
+ className: styles$1['calendar-filter_note_pureple']
1321
+ }),
1322
+ value: LEARNING_MODE.LIVE_ONLINE
1323
+ }, {
1324
+ title: 'Offline',
1325
+ icon: React.createElement("div", {
1326
+ className: styles$1['calendar-filter_note_green']
1327
+ }),
1328
+ value: LEARNING_MODE.OFFLINE
1329
+ }, {
1330
+ title: 'Test',
1331
+ icon: React.createElement(TestIcon, null),
1332
+ value: LEARNING_MODE.TEST
1333
+ }, {
1334
+ title: 'Case Study',
1335
+ icon: React.createElement(GoldStarIcon, null),
1336
+ value: LEARNING_MODE.CASE_STUDY
1337
+ }, {
1338
+ title: 'Key Content Before',
1339
+ icon: React.createElement(FlagIcon, null),
1340
+ value: LEARNING_MODE.KEY_BEFORE_CONTENT
1341
+ }, {
1342
+ title: 'Holiday',
1343
+ icon: React.createElement("div", {
1344
+ className: styles$1['calendar-filter_note_yellow']
1345
+ }),
1346
+ value: LEARNING_MODE.HOLIDAY
1347
+ }, {
1348
+ title: 'Overdue',
1349
+ icon: React.createElement("div", {
1350
+ className: styles$1['calendar-filter_note_red']
1351
+ }),
1352
+ value: LEARNING_MODE.OVERDUE
1353
+ }];
1354
+ }, []);
1355
+ var handleFilter = function handleFilter(type, value) {
1356
+ switch (type) {
1357
+ case 'course':
1358
+ {
1359
+ setFilter(function (prev) {
1360
+ var courseId = prev.courseId || [];
1361
+ var updatedCourseId = courseId.includes(value) ? courseId.filter(function (item) {
1362
+ return item !== value;
1363
+ }) : [].concat(courseId, [value]);
1364
+ return _extends({}, prev, {
1365
+ courseId: updatedCourseId
1366
+ });
1367
+ });
1368
+ break;
1369
+ }
1370
+ case 'note':
1371
+ {
1372
+ setFilter(function (prev) {
1373
+ var typeArray = prev.type || [];
1374
+ var updatedType = typeArray.includes(value) ? typeArray.filter(function (item) {
1375
+ return item !== value;
1376
+ }) : [].concat(typeArray, [value]);
1377
+ return _extends({}, prev, {
1378
+ type: updatedType
1379
+ });
1380
+ });
1381
+ break;
1382
+ }
1383
+ case 'day':
1384
+ {
1385
+ setFilter(function (prev) {
1386
+ return _extends({}, prev, {
1387
+ day: value
1388
+ });
1389
+ });
1390
+ break;
1391
+ }
1392
+ }
1393
+ };
1394
+ var handleFilterday = function handleFilterday(date) {
1395
+ onRefetchAPI(date.toDate());
1396
+ handleFilter('day', date.toString());
1397
+ };
1398
+ return React.createElement("div", {
1399
+ className: styles$1['calendar-filter']
1400
+ }, React.createElement(Calendar, {
1401
+ mode: 'month',
1402
+ className: styles$1['custom-today-picker'],
1403
+ fullscreen: false,
1404
+ onChange: handleFilterday
1405
+ }), React.createElement("div", null, React.createElement("div", {
1406
+ className: styles$1['calendar-filter_title']
1407
+ }, React.createElement(TagIcon, null), React.createElement("h3", null, "Notes")), React.createElement("div", null, noteFilter.map(function (item) {
1408
+ var _filter$type;
1409
+ return React.createElement("div", {
1410
+ className: styles$1['calendar-filter_content_list_item'],
1411
+ key: item.value
1412
+ }, React.createElement("div", {
1413
+ className: styles$1['calendar-filter_content_list_item']
1414
+ }, item.icon, item.title), React.createElement("div", {
1415
+ onClick: function onClick() {
1416
+ return handleFilter('note', item.value);
1417
+ },
1418
+ className: styles$1['calendar-filter_content_item_eye']
1419
+ }, (_filter$type = filter.type) !== null && _filter$type !== void 0 && _filter$type.includes(item.value) ? React.createElement(EyeIcon, null) : React.createElement(HiddenEyeIcon, null)));
1420
+ }))), React.createElement("div", null, React.createElement("div", {
1421
+ className: styles$1['calendar-filter_title']
1422
+ }, React.createElement(EducationIcon, null), React.createElement("h3", null, "My courses")), React.createElement("div", null, courses === null || courses === void 0 ? void 0 : courses.map(function (item, key) {
1423
+ var _filter$courseId;
1424
+ return React.createElement("div", {
1425
+ key: key,
1426
+ className: styles$1['calendar-filter_content_list_item']
1427
+ }, React.createElement("div", {
1428
+ className: styles$1['calendar-filter_content_list_item']
1429
+ }, item.name), React.createElement("div", {
1430
+ onClick: function onClick() {
1431
+ return handleFilter('course', item.id);
1432
+ },
1433
+ className: styles$1['calendar-filter_content_item_eye']
1434
+ }, (_filter$courseId = filter.courseId) !== null && _filter$courseId !== void 0 && _filter$courseId.includes(item.id) ? React.createElement(EyeIcon, null) : React.createElement(HiddenEyeIcon, null)));
1435
+ }))));
1436
+ };
1437
+
1103
1438
  var SAPPCalendar = function SAPPCalendar(_ref) {
1104
1439
  var teacherName = _ref.teacherName,
1105
1440
  events = _ref.events,
@@ -1115,80 +1450,81 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
1115
1450
  onEventDetail = _ref.onEventDetail,
1116
1451
  loading = _ref.loading,
1117
1452
  _ref$type = _ref.type,
1118
- type = _ref$type === void 0 ? 'normal' : _ref$type,
1453
+ type = _ref$type === void 0 ? 'OPS' : _ref$type,
1119
1454
  courses = _ref.courses,
1120
- onFilter = _ref.onFilter;
1455
+ onfilter = _ref.onfilter,
1456
+ _ref$hasFilter = _ref.hasFilter,
1457
+ hasFilter = _ref$hasFilter === void 0 ? false : _ref$hasFilter,
1458
+ _ref$headerType = _ref.headerType,
1459
+ headerType = _ref$headerType === void 0 ? CALENDAR_TYPE.OPS : _ref$headerType;
1121
1460
  var _useState = useState(dayjs()),
1122
1461
  currentDate = _useState[0],
1123
1462
  setCurrentDate = _useState[1];
1124
- var _useState2 = useState('week'),
1463
+ var _useState2 = useState('month'),
1125
1464
  calendarMode = _useState2[0],
1126
1465
  setCalendarMode = _useState2[1];
1127
1466
  var _useState3 = useState({
1467
+ courseId: courses ? courses.map(function (item) {
1468
+ return item.id;
1469
+ }) : [],
1128
1470
  isOpen: false,
1129
1471
  type: Object.values(LEARNING_MODE),
1130
- courseId: courses !== null && courses !== void 0 && courses.length ? courses === null || courses === void 0 ? void 0 : courses.map(function (item) {
1131
- return item.id;
1132
- }) : []
1472
+ day: ''
1133
1473
  }),
1134
1474
  filter = _useState3[0],
1135
1475
  setFilter = _useState3[1];
1136
1476
  var startDate = useMemo(function () {
1137
- if (calendarMode === 'day') {
1138
- return dayjs(currentDate).startOf('day');
1139
- }
1140
1477
  return dayjs(currentDate).startOf(calendarMode).startOf('week').add(1, 'day');
1141
1478
  }, [currentDate, calendarMode]);
1142
1479
  var endDate = useMemo(function () {
1143
- if (calendarMode === 'day') {
1144
- return dayjs(currentDate).endOf('day');
1145
- }
1146
1480
  return dayjs(currentDate).endOf(calendarMode).endOf('week').add(1, 'day');
1147
1481
  }, [currentDate, calendarMode]);
1148
1482
  var splittedEvents = splitEventsIntoDays(events);
1149
1483
  splittedEvents.sort(function (a, b) {
1150
1484
  return dayjs(a.startDate).diff(b.startDate);
1151
1485
  });
1152
- var handleToggleFilter = function handleToggleFilter() {
1153
- setFilter(function (prev) {
1154
- return _extends({}, filter, {
1155
- isOpen: !prev.isOpen
1156
- });
1157
- });
1486
+ var handleFilterDate = function handleFilterDate(date) {
1487
+ setCurrentDate(date);
1158
1488
  };
1489
+ useEffect(function () {
1490
+ onfilter && onfilter(filter);
1491
+ }, [filter]);
1159
1492
  useEffectAfterMounted(function () {
1160
1493
  onRefetchAPI(startDate.toDate(), endDate.toDate());
1161
1494
  }, [startDate, endDate]);
1162
- console.log('course:', courses);
1163
- useEffect(function () {
1164
- if (type === 'filter') {
1165
- onFilter && onFilter(filter);
1166
- }
1167
- }, [filter]);
1168
1495
  return React.createElement("div", {
1169
1496
  className: styles['sapp-calendar']
1170
1497
  }, filter.isOpen && React.createElement(FilterCalendar, {
1171
- courses: courses,
1172
1498
  filter: filter,
1173
- setFilter: setFilter
1499
+ setFilter: setFilter,
1500
+ onRefetchAPI: function onRefetchAPI(date) {
1501
+ return handleFilterDate(dayjs(date));
1502
+ }
1174
1503
  }), React.createElement("div", {
1175
1504
  className: styles['sapp-calendar__container']
1176
- }, type === 'normal' ? React.createElement(HeaderCalendar, {
1505
+ }, headerType === CALENDAR_TYPE.LMS ? React.createElement(LMSHeaderCalendar, {
1177
1506
  title: teacherName,
1178
1507
  showTeacherName: showTeacherName,
1179
1508
  currentDate: currentDate,
1180
1509
  setCurrentDate: setCurrentDate,
1181
1510
  calendarMode: calendarMode,
1182
- setCalendarMode: setCalendarMode
1183
- }) : React.createElement(LMSHeaderCalendar, {
1511
+ setCalendarMode: setCalendarMode,
1512
+ toggleTurnOnFilter: function toggleTurnOnFilter() {
1513
+ return setFilter(function (prev) {
1514
+ return _extends({}, prev, {
1515
+ isOpen: !filter.isOpen
1516
+ });
1517
+ });
1518
+ },
1519
+ hasFilter: hasFilter,
1520
+ filter: filter
1521
+ }) : React.createElement(HeaderCalendar, {
1184
1522
  title: teacherName,
1185
1523
  showTeacherName: showTeacherName,
1186
1524
  currentDate: currentDate,
1187
1525
  setCurrentDate: setCurrentDate,
1188
1526
  calendarMode: calendarMode,
1189
- setCalendarMode: setCalendarMode,
1190
- toggleTurnOnFilter: handleToggleFilter,
1191
- filter: filter
1527
+ setCalendarMode: setCalendarMode
1192
1528
  }), calendarMode === 'month' && React.createElement(MonthlyCalendar, {
1193
1529
  currentDate: currentDate,
1194
1530
  startDate: startDate,
@@ -1200,11 +1536,22 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
1200
1536
  onOpenCreate: onOpenCreate,
1201
1537
  onEventDetail: onEventDetail,
1202
1538
  loading: loading
1203
- }), calendarMode === 'week' && React.createElement(LMSWeeklyCalendar, {
1539
+ }), calendarMode === 'week' && type === CALENDAR_TYPE.LMS && React.createElement(LMSModeWeeklyCalendar, {
1540
+ startDate: startDate,
1541
+ endDate: endDate,
1542
+ events: splittedEvents,
1543
+ norms: norms,
1544
+ showWeeklyNorm: showWeeklyNorm,
1545
+ onOpenDetail: onOpenDetail,
1546
+ onOpenCreate: onOpenCreate,
1547
+ onEventDetail: onEventDetail,
1548
+ loading: loading
1549
+ }), calendarMode === 'week' && type === CALENDAR_TYPE.OPS && React.createElement(WeeklyCalendar, {
1204
1550
  startDate: startDate,
1205
1551
  endDate: endDate,
1206
1552
  events: splittedEvents,
1207
1553
  norms: norms,
1554
+ showWeeklyNorm: showWeeklyNorm,
1208
1555
  onOpenDetail: onOpenDetail,
1209
1556
  onOpenCreate: onOpenCreate,
1210
1557
  onEventDetail: onEventDetail,