sapp-common-package-test-final 1.0.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.
Files changed (34) hide show
  1. package/README.md +30 -0
  2. package/dist/components/SAPPCalendar/DailyCalendar/DailyCalendar.d.ts +16 -0
  3. package/dist/components/SAPPCalendar/DailyCalendar/DailyCell.d.ts +12 -0
  4. package/dist/components/SAPPCalendar/DailyCalendar/DailyEvent.d.ts +9 -0
  5. package/dist/components/SAPPCalendar/FilterCalendar/FilterCalendar.d.ts +8 -0
  6. package/dist/components/SAPPCalendar/HeaderCalendar/HeaderCalendar.d.ts +13 -0
  7. package/dist/components/SAPPCalendar/HeaderCalendar/LMSHeaderCalendar.d.ts +15 -0
  8. package/dist/components/SAPPCalendar/MonthlyCalendar/MonthlyCalendar.d.ts +17 -0
  9. package/dist/components/SAPPCalendar/MonthlyCalendar/MonthlyCell.d.ts +13 -0
  10. package/dist/components/SAPPCalendar/MonthlyCalendar/MonthlyEvent.d.ts +9 -0
  11. package/dist/components/SAPPCalendar/SAPPCalendar.d.ts +17 -0
  12. package/dist/components/SAPPCalendar/WeeklyCalendar/WeeklyCalendar.d.ts +16 -0
  13. package/dist/components/SAPPCalendar/WeeklyCalendar/WeeklyCell.d.ts +12 -0
  14. package/dist/components/SAPPCalendar/WeeklyCalendar/WeeklyEvent.d.ts +9 -0
  15. package/dist/components/SAPPCalendar/common/Button.d.ts +11 -0
  16. package/dist/components/SAPPCalendar/common/CustomTooltip.d.ts +9 -0
  17. package/dist/components/SAPPCalendar/common/Icon.d.ts +9 -0
  18. package/dist/components/SAPPCalendar/common/SelectBox.d.ts +15 -0
  19. package/dist/components/SAPPCalendar/common/form/HookFormCheckbox.d.ts +3 -0
  20. package/dist/components/SAPPCalendar/filter/index.d.ts +8 -0
  21. package/dist/components/SAPPCalendar/filter-calendar/index.d.ts +8 -0
  22. package/dist/constants/index.d.ts +22 -0
  23. package/dist/hooks/useEffectAfterMounted.d.ts +1 -0
  24. package/dist/icons/index.d.ts +16 -0
  25. package/dist/index.css +997 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.js +1188 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/index.modern.js +1184 -0
  30. package/dist/index.modern.js.map +1 -0
  31. package/dist/index.test.d.ts +1 -0
  32. package/dist/types/index.d.ts +48 -0
  33. package/dist/utils/index.d.ts +9 -0
  34. package/package.json +72 -0
@@ -0,0 +1,1184 @@
1
+ import dayjs from 'dayjs';
2
+ import React, { useState, useEffect, useMemo } from 'react';
3
+ import { DatePicker, Tooltip, Table, Select, Calendar } from 'antd';
4
+ import clsx$1, { clsx } from 'clsx';
5
+ import isBetween from 'dayjs/plugin/isBetween';
6
+
7
+ function _arrayLikeToArray(r, a) {
8
+ (null == a || a > r.length) && (a = r.length);
9
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
10
+ return n;
11
+ }
12
+ function _createForOfIteratorHelperLoose(r, e) {
13
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
14
+ if (t) return (t = t.call(r)).next.bind(t);
15
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
16
+ t && (r = t);
17
+ var o = 0;
18
+ return function () {
19
+ return o >= r.length ? {
20
+ done: !0
21
+ } : {
22
+ done: !1,
23
+ value: r[o++]
24
+ };
25
+ };
26
+ }
27
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
28
+ }
29
+ function _extends() {
30
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
31
+ for (var e = 1; e < arguments.length; e++) {
32
+ var t = arguments[e];
33
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
34
+ }
35
+ return n;
36
+ }, _extends.apply(null, arguments);
37
+ }
38
+ function _unsupportedIterableToArray(r, a) {
39
+ if (r) {
40
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
41
+ var t = {}.toString.call(r).slice(8, -1);
42
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
43
+ }
44
+ }
45
+
46
+ var useEffectAfterMounted = function useEffectAfterMounted(callback, dependencies) {
47
+ var _useState = useState(false),
48
+ mounted = _useState[0],
49
+ setMounted = _useState[1];
50
+ useEffect(function () {
51
+ if (!mounted) {
52
+ setMounted(true);
53
+ return;
54
+ }
55
+ return callback();
56
+ }, dependencies);
57
+ };
58
+
59
+ var HOURS_PER_DAY = 24;
60
+ var MINUTES_PER_HOUR = 60;
61
+ var TIME_FORMAT = 'HH:mm';
62
+ var DAYS_OF_WEEK;
63
+ (function (DAYS_OF_WEEK) {
64
+ DAYS_OF_WEEK["Monday"] = "Monday";
65
+ DAYS_OF_WEEK["Tuesday"] = "Tuesday";
66
+ DAYS_OF_WEEK["Wednesday"] = "Wednesday";
67
+ DAYS_OF_WEEK["Thursday"] = "Thursday";
68
+ DAYS_OF_WEEK["Friday"] = "Friday";
69
+ DAYS_OF_WEEK["Saturday"] = "Saturday";
70
+ DAYS_OF_WEEK["Sunday"] = "Sunday";
71
+ })(DAYS_OF_WEEK || (DAYS_OF_WEEK = {}));
72
+ var EVENT_TYPES;
73
+ (function (EVENT_TYPES) {
74
+ EVENT_TYPES["TEACHING"] = "TEACHING";
75
+ EVENT_TYPES["BUSY"] = "BUSY";
76
+ EVENT_TYPES["TIME_OFF"] = "TIME_OFF";
77
+ EVENT_TYPES["OTHER"] = "OTHER";
78
+ })(EVENT_TYPES || (EVENT_TYPES = {}));
79
+ var FORMAT_DATE_CARLENDA = {
80
+ MONTH_AND_WEEK: 'MMMM, YYYY',
81
+ DATE: 'MMMM DD, YYYY'
82
+ };
83
+
84
+ var _convertType;
85
+ var customDateFormat = function customDateFormat(value, formatStr) {
86
+ return dayjs(value).format(formatStr);
87
+ };
88
+ 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);
89
+ var daysOfWeekKeys = Object.values(DAYS_OF_WEEK);
90
+ var calculateNormOfWeek = function calculateNormOfWeek(norms, events, startDate, endDate) {
91
+ var norm = norms.find(function (norm) {
92
+ return startDate.isBetween(norm.startDate, norm.endDate, 'day', '[]') && endDate.isBetween(norm.startDate, norm.endDate, 'day', '[]');
93
+ });
94
+ if (!norm) {
95
+ return {
96
+ normOfWeek: 0,
97
+ totalNorm: 0
98
+ };
99
+ }
100
+ var normsOfWeek = events.filter(function (event) {
101
+ return dayjs(event.startDate).isBetween(startDate, endDate, 'day', '[]') && endDate.isBetween(startDate, endDate, 'day', '[]') && event.type === EVENT_TYPES.TEACHING;
102
+ });
103
+ return {
104
+ normOfWeek: normsOfWeek.length,
105
+ totalNorm: norm.maxShift
106
+ };
107
+ };
108
+ var splitEventsIntoDays = function splitEventsIntoDays(events) {
109
+ var splittedEvents = [];
110
+ for (var _iterator = _createForOfIteratorHelperLoose(events), _step; !(_step = _iterator()).done;) {
111
+ var event = _step.value;
112
+ var startDate = dayjs(event.startDate);
113
+ var endDate = dayjs(event.endDate);
114
+ var isSameDay = startDate.isSame(endDate, 'day');
115
+ if (isSameDay) {
116
+ splittedEvents.push(event);
117
+ continue;
118
+ }
119
+ splittedEvents.push(_extends({}, event, {
120
+ startDate: startDate.toDate(),
121
+ endDate: startDate.endOf('day').toDate()
122
+ }));
123
+ var currentDate = startDate.startOf('day').add(1, 'day');
124
+ while (currentDate.isBefore(endDate, 'day')) {
125
+ splittedEvents.push(_extends({}, event, {
126
+ startDate: currentDate.startOf('day').toDate(),
127
+ endDate: currentDate.endOf('day').toDate()
128
+ }));
129
+ currentDate = currentDate.add(1, 'day');
130
+ }
131
+ splittedEvents.push(_extends({}, event, {
132
+ startDate: endDate.startOf('day').toDate(),
133
+ endDate: endDate.toDate()
134
+ }));
135
+ }
136
+ return splittedEvents;
137
+ };
138
+ var checkIsAllday = function checkIsAllday(startDate, endDate) {
139
+ if (!startDate.isValid() || !endDate.isValid()) {
140
+ return false;
141
+ }
142
+ return startDate.format(TIME_FORMAT) === startDate.startOf('day').format(TIME_FORMAT) && endDate.format(TIME_FORMAT) === endDate.endOf('day').format(TIME_FORMAT) && startDate.isBefore(endDate);
143
+ };
144
+
145
+ var Left = function Left() {
146
+ return React.createElement("svg", {
147
+ width: '16',
148
+ height: '16',
149
+ viewBox: '0 0 16 16',
150
+ fill: 'none',
151
+ xmlns: 'http://www.w3.org/2000/svg'
152
+ }, React.createElement("path", {
153
+ d: 'M9.68642 12.6136C9.59868 12.6141 9.5117 12.5973 9.43048 12.5641C9.34925 12.5309 9.27538 12.482 9.21308 12.4202L5.25975 8.47356C5.13793 8.3458 5.06887 8.17674 5.06642 8.00023C5.06591 7.91249 5.08273 7.82551 5.1159 7.74429C5.14908 7.66306 5.19796 7.58919 5.25975 7.52689L9.21308 3.58023C9.34062 3.47101 9.50467 3.41394 9.67245 3.42042C9.84024 3.4269 9.9994 3.49645 10.1181 3.61518C10.2369 3.73391 10.3064 3.89307 10.3129 4.06086C10.3194 4.22864 10.2623 4.39269 10.1531 4.52023L6.66642 8.00023L10.1398 11.4802C10.2639 11.6051 10.3336 11.7741 10.3336 11.9502C10.3336 12.1264 10.2639 12.2953 10.1398 12.4202C10.0189 12.5402 9.85668 12.6094 9.68642 12.6136Z',
154
+ fill: '#252F4A'
155
+ }));
156
+ };
157
+ var Right = function Right() {
158
+ return React.createElement("svg", {
159
+ width: '16',
160
+ height: '16',
161
+ viewBox: '0 0 16 16',
162
+ fill: 'none',
163
+ xmlns: 'http://www.w3.org/2000/svg'
164
+ }, React.createElement("path", {
165
+ d: 'M6.84715 12.6666C6.75894 12.6662 6.67169 12.6483 6.59044 12.614C6.50919 12.5797 6.43556 12.5295 6.37381 12.4666C6.24965 12.3416 6.17995 12.1727 6.17995 11.9966C6.17995 11.8204 6.24965 11.6515 6.37381 11.5266L9.85381 7.99989L6.37381 4.55322C6.31165 4.49019 6.26252 4.41553 6.22921 4.3335C6.19591 4.25148 6.17908 4.1637 6.1797 4.07517C6.18032 3.98665 6.19837 3.89911 6.23282 3.81756C6.26727 3.73601 6.31744 3.66205 6.38048 3.59989C6.44351 3.53773 6.51817 3.48859 6.6002 3.45529C6.68222 3.42198 6.77 3.40516 6.85853 3.40578C6.94705 3.4064 7.03459 3.42445 7.11614 3.4589C7.19769 3.49334 7.27165 3.54352 7.33381 3.60655L11.2805 7.55989C11.4046 7.6848 11.4743 7.85376 11.4743 8.02989C11.4743 8.20601 11.4046 8.37498 11.2805 8.49989L7.33381 12.4466C7.27224 12.5148 7.19722 12.5696 7.11347 12.6074C7.02972 12.6453 6.93905 12.6654 6.84715 12.6666Z',
166
+ fill: '#252F4A'
167
+ }));
168
+ };
169
+ var Book = function Book() {
170
+ return React.createElement("svg", {
171
+ width: '20',
172
+ height: '20',
173
+ viewBox: '0 0 20 20',
174
+ fill: 'none',
175
+ xmlns: 'http://www.w3.org/2000/svg'
176
+ }, React.createElement("path", {
177
+ fillRule: 'evenodd',
178
+ clipRule: 'evenodd',
179
+ d: 'M7.36051 3.61971C6.37671 3.45978 5.3735 3.45977 4.38969 3.61969C4.04645 3.67549 3.70164 3.7585 2.93716 3.94368C2.81469 3.97335 2.74354 3.99072 2.69032 4.00583C2.6569 4.01532 2.64293 4.02058 2.6395 4.02196C2.6395 4.02196 2.6395 4.02196 2.6395 4.02196C2.57147 4.05542 2.52252 4.11776 2.50609 4.19125C2.50556 4.19493 2.50375 4.2097 2.5024 4.24419C2.50024 4.29939 2.50011 4.37254 2.50011 4.49846V15.8196C2.50011 15.9083 2.50015 15.9626 2.50105 16.0033C2.50163 16.0294 2.50244 16.041 2.50265 16.0437C2.52153 16.1749 2.64055 16.2691 2.7739 16.2564C2.7766 16.2559 2.78803 16.254 2.81375 16.2484C2.85362 16.2397 2.90644 16.2269 2.99264 16.206L3.00819 16.2023C3.34117 16.1216 3.52697 16.0766 3.71304 16.0384C5.13954 15.7457 6.61067 15.7457 8.03717 16.0384C8.22321 16.0766 8.40898 16.1216 8.74185 16.2022L9.25011 16.3253V4.04958L8.81305 3.94371C8.04857 3.75852 7.70375 3.6755 7.36051 3.61971ZM10.7501 4.04959V16.3253L11.2582 16.2023C11.5912 16.1216 11.777 16.0766 11.963 16.0384C13.3895 15.7457 14.8607 15.7457 16.2872 16.0384C16.4732 16.0766 16.659 16.1216 16.992 16.2023L17.0076 16.206C17.0938 16.2269 17.1466 16.2397 17.1865 16.2484C17.2256 16.257 17.2317 16.257 17.2242 16.2562C17.3584 16.2701 17.4786 16.1756 17.4976 16.0437C17.4978 16.041 17.4986 16.0294 17.4992 16.0033C17.5001 15.9626 17.5001 15.9083 17.5001 15.8196V4.49852C17.5001 4.37258 17.5 4.29943 17.4978 4.24423C17.4965 4.20973 17.4947 4.19496 17.4941 4.19129C17.4777 4.11779 17.4287 4.05545 17.3607 4.022C17.3573 4.02062 17.3433 4.01536 17.3099 4.00587C17.2567 3.99075 17.1855 3.97338 17.063 3.94372C16.2985 3.75853 15.9537 3.67551 15.6104 3.61972C14.6267 3.45981 13.6235 3.45981 12.6398 3.61972C12.2965 3.67551 11.9517 3.75853 11.1872 3.94372L10.7501 4.04959ZM4.14902 2.13913C5.29223 1.95329 6.45799 1.9533 7.6012 2.13914C8.00774 2.20523 8.41052 2.30281 9.13225 2.47765L9.80168 2.63981C9.87479 2.65752 9.91513 2.66723 9.94602 2.67381C9.97272 2.67949 9.97804 2.67967 9.97581 2.67945C9.99197 2.68102 10.0082 2.68102 10.0244 2.67945C10.0222 2.67967 10.0275 2.67949 10.0542 2.67381C10.0851 2.66723 10.1254 2.65752 10.1985 2.63982L10.868 2.47765C11.5897 2.30281 11.9925 2.20524 12.3991 2.13915C13.5423 1.95333 14.708 1.95333 15.8511 2.13915C16.2577 2.20524 16.6605 2.30281 17.3822 2.47765L17.4162 2.48588C17.4319 2.48969 17.4478 2.4935 17.4637 2.49732C17.6482 2.5417 17.8425 2.58844 18.0149 2.67215C18.4972 2.9064 18.8457 3.34888 18.9599 3.87292C19.0008 4.0602 19.0005 4.26011 19.0002 4.44971C19.0001 4.46606 19.0001 4.48234 19.0001 4.49852V15.8196C19.0001 15.8317 19.0001 15.8438 19.0001 15.8559C19.0003 15.9884 19.0004 16.1238 18.9843 16.2426C18.8576 17.1797 18.0092 17.8457 17.0693 17.7482C16.9501 17.7358 16.8185 17.7038 16.6896 17.6724C16.6779 17.6696 16.6661 17.6667 16.6544 17.6639C16.3018 17.5784 16.1428 17.54 15.9857 17.5078C14.7581 17.2559 13.4921 17.2559 12.2645 17.5078C12.1074 17.54 11.9484 17.5784 11.5958 17.6639L10.5517 17.9168C10.5427 17.9189 10.5337 17.9211 10.5246 17.9233C10.4134 17.9504 10.2943 17.9794 10.1697 17.9915C10.0569 18.0025 9.9433 18.0025 9.83048 17.9915C9.70589 17.9794 9.5868 17.9504 9.47557 17.9233C9.4665 17.9211 9.45749 17.9189 9.44854 17.9168L8.40443 17.6639C8.05182 17.5784 7.89278 17.54 7.7357 17.5078C6.50811 17.2559 5.2421 17.2559 4.01452 17.5078C3.85743 17.54 3.6984 17.5784 3.34578 17.6639C3.33408 17.6667 3.32234 17.6696 3.31058 17.6724C3.18171 17.7038 3.05015 17.7358 2.93091 17.7482C1.991 17.8457 1.14259 17.1797 1.01588 16.2426C0.999808 16.1238 0.999947 15.9883 1.00008 15.8559C1.00009 15.8438 1.00011 15.8317 1.00011 15.8196V4.49846C1.00011 4.48228 1.00008 4.466 1.00005 4.44965C0.999745 4.26006 0.999419 4.06018 1.04026 3.8729C1.15455 3.34885 1.50299 2.90636 1.98536 2.67211C2.15773 2.5884 2.35205 2.54166 2.53655 2.49729C2.55245 2.49346 2.56828 2.48965 2.58402 2.48584L2.61796 2.47762C3.3397 2.30278 3.74248 2.20521 4.14902 2.13913Z',
180
+ fill: '#025EFF'
181
+ }));
182
+ };
183
+ var CalendarDelete = function CalendarDelete() {
184
+ return React.createElement("svg", {
185
+ width: '20',
186
+ height: '20',
187
+ viewBox: '0 0 20 20',
188
+ fill: 'none',
189
+ xmlns: 'http://www.w3.org/2000/svg'
190
+ }, React.createElement("path", {
191
+ fillRule: 'evenodd',
192
+ clipRule: 'evenodd',
193
+ d: 'M6.75 1C7.16421 1 7.5 1.33579 7.5 1.75V3H12.5V1.75C12.5 1.33579 12.8358 1 13.25 1C13.6642 1 14 1.33579 14 1.75V3H16.25C17.7688 3 19 4.23122 19 5.75V8.75C19 9.16421 18.6642 9.5 18.25 9.5H2.5V16.25C2.5 16.9404 3.05964 17.5 3.75 17.5H8.75C9.16421 17.5 9.5 17.8358 9.5 18.25C9.5 18.6642 9.16421 19 8.75 19H3.75C2.23122 19 1 17.7688 1 16.25V5.75C1 4.23122 2.23122 3 3.75 3H6V1.75C6 1.33579 6.33579 1 6.75 1ZM6 4.5H3.75C3.05964 4.5 2.5 5.05964 2.5 5.75V8H17.5V5.75C17.5 5.05964 16.9404 4.5 16.25 4.5H14V5.25C14 5.66421 13.6642 6 13.25 6C12.8358 6 12.5 5.66421 12.5 5.25V4.5H7.5V5.25C7.5 5.66421 7.16421 6 6.75 6C6.33579 6 6 5.66421 6 5.25V4.5ZM12 15.75C12 15.3358 12.3358 15 12.75 15H19.25C19.6642 15 20 15.3358 20 15.75C20 16.1642 19.6642 16.5 19.25 16.5H12.75C12.3358 16.5 12 16.1642 12 15.75Z',
194
+ fill: '#D20306'
195
+ }));
196
+ };
197
+ var CalendarAccept = function CalendarAccept() {
198
+ return React.createElement("svg", {
199
+ width: '20',
200
+ height: '20',
201
+ viewBox: '0 0 20 20',
202
+ fill: 'none',
203
+ xmlns: 'http://www.w3.org/2000/svg'
204
+ }, React.createElement("g", {
205
+ clipPath: 'url(#clip0_678_4877)'
206
+ }, React.createElement("path", {
207
+ fillRule: 'evenodd',
208
+ clipRule: 'evenodd',
209
+ d: 'M6.75 1C7.16421 1 7.5 1.33579 7.5 1.75V3H12.5V1.75C12.5 1.33579 12.8358 1 13.25 1C13.6642 1 14 1.33579 14 1.75V3H16.25C17.7688 3 19 4.23122 19 5.75V8.75C19 9.16421 18.6642 9.5 18.25 9.5H2.5V16.25C2.5 16.9404 3.05964 17.5 3.75 17.5H8.75C9.16421 17.5 9.5 17.8358 9.5 18.25C9.5 18.6642 9.16421 19 8.75 19H3.75C2.23122 19 1 17.7688 1 16.25V5.75C1 4.23122 2.23122 3 3.75 3H6V1.75C6 1.33579 6.33579 1 6.75 1ZM6 4.5H3.75C3.05964 4.5 2.5 5.05964 2.5 5.75V8H17.5V5.75C17.5 5.05964 16.9404 4.5 16.25 4.5H14V5.25C14 5.66421 13.6642 6 13.25 6C12.8358 6 12.5 5.66421 12.5 5.25V4.5H7.5V5.25C7.5 5.66421 7.16421 6 6.75 6C6.33579 6 6 5.66421 6 5.25V4.5ZM19.765 13.2047C20.0661 13.4891 20.0797 13.9638 19.7953 14.265L15.5453 18.765C15.4014 18.9173 15.2005 19.0025 14.991 18.9999C14.7815 18.9974 14.5827 18.9074 14.4425 18.7517L12.1925 16.2517C11.9154 15.9438 11.9404 15.4696 12.2483 15.1925C12.5562 14.9154 13.0304 14.9404 13.3075 15.2483L15.0133 17.1436L18.7047 13.235C18.9891 12.9339 19.4638 12.9203 19.765 13.2047Z',
210
+ fill: '#07AF17'
211
+ })), React.createElement("defs", null, React.createElement("clipPath", {
212
+ id: 'clip0_678_4877'
213
+ }, React.createElement("rect", {
214
+ width: '20',
215
+ height: '20',
216
+ fill: 'white'
217
+ }))));
218
+ };
219
+ var Star = function Star() {
220
+ return React.createElement("svg", {
221
+ width: '20',
222
+ height: '20',
223
+ viewBox: '0 0 20 20',
224
+ fill: 'none',
225
+ xmlns: 'http://www.w3.org/2000/svg'
226
+ }, React.createElement("path", {
227
+ fillRule: 'evenodd',
228
+ clipRule: 'evenodd',
229
+ d: 'M10.0928 2.52324C9.99905 2.47488 9.86181 2.50026 9.79335 2.64522L8.00799 6.42557C7.76215 6.94613 7.27807 7.32297 6.69953 7.41082L2.70736 8.01703C2.66367 8.02366 2.61758 8.04593 2.57857 8.08775C2.47149 8.20255 2.47467 8.39827 2.58316 8.50878L5.47192 11.4514C5.87611 11.8631 6.05323 12.4463 5.96057 13.0109L5.27863 17.1659C5.2674 17.2343 5.27853 17.3035 5.30766 17.3614C5.3787 17.5027 5.51526 17.5255 5.60897 17.474L9.17967 15.5123C9.69201 15.2308 10.3079 15.2308 10.8202 15.5123L14.3909 17.474C14.434 17.4977 14.48 17.5045 14.5234 17.4967C14.5864 17.4854 14.6553 17.4449 14.7056 17.3752C14.754 17.3081 14.7706 17.2347 14.7603 17.1681L14.0393 13.0109C13.9466 12.4463 14.1238 11.8631 14.5279 11.4514L17.4167 8.50878C17.4568 8.46792 17.4872 8.40957 17.4968 8.34084C17.5227 8.15465 17.3972 8.03293 17.2925 8.01703L13.3003 7.41082C12.7218 7.32297 12.2377 6.94613 11.9919 6.42557L10.2065 2.64522C10.1788 2.58657 10.1367 2.54586 10.0928 2.52324ZM8.437 2.00466C8.85086 1.12835 9.89685 0.734429 10.7804 1.1901C11.1257 1.36818 11.3985 1.65664 11.5629 2.00466L13.3482 5.78501C13.3898 5.87307 13.4613 5.91807 13.5255 5.92782L17.5177 6.53403C18.4915 6.6819 19.1133 7.60658 18.9825 8.54743C18.9296 8.92748 18.7578 9.28392 18.4871 9.5596L15.5984 12.5022C15.5379 12.5637 15.5029 12.662 15.5191 12.7656L16.2401 16.9229C16.4008 17.902 15.7151 18.807 14.788 18.9732C14.4037 19.042 14.0097 18.976 13.6686 18.7887L10.0979 16.8269C10.0354 16.7926 9.96447 16.7926 9.90194 16.8269L6.33123 18.7887C5.46031 19.2671 4.40376 18.9024 3.96767 18.0356C3.79485 17.692 3.7363 17.3015 3.79843 16.9229L4.48038 12.7679C4.49751 12.6635 4.4624 12.5642 4.40151 12.5022L1.51275 9.5596C0.840839 8.87517 0.828048 7.76534 1.48168 7.0646C1.74558 6.78168 2.09641 6.59261 2.48217 6.53403L6.47434 5.92782C6.53853 5.91807 6.61006 5.87307 6.65165 5.78501L8.437 2.00466Z',
230
+ fill: '#F57C00'
231
+ }));
232
+ };
233
+ var LeftArrowIcon = function LeftArrowIcon() {
234
+ return React.createElement("svg", {
235
+ width: '8',
236
+ height: '11',
237
+ viewBox: '0 0 8 11',
238
+ fill: 'currentColor',
239
+ xmlns: 'http://www.w3.org/2000/svg'
240
+ }, React.createElement("path", {
241
+ 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',
242
+ fill: '#404041'
243
+ }));
244
+ };
245
+ var RightArrowIcon = function RightArrowIcon() {
246
+ return React.createElement("svg", {
247
+ width: '8',
248
+ height: '11',
249
+ viewBox: '0 0 8 11',
250
+ fill: 'currentColor',
251
+ xmlns: 'http://www.w3.org/2000/svg'
252
+ }, React.createElement("path", {
253
+ 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',
254
+ fill: '#404041'
255
+ }));
256
+ };
257
+ var FilterIcon = function FilterIcon() {
258
+ return React.createElement("svg", {
259
+ width: '35',
260
+ height: '35',
261
+ viewBox: '0 0 35 35',
262
+ fill: 'currentColor',
263
+ xmlns: 'http://www.w3.org/2000/svg'
264
+ }, React.createElement("path", {
265
+ 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',
266
+ fill: 'currentColor'
267
+ }));
268
+ };
269
+ var TagIcon = function TagIcon() {
270
+ return React.createElement("svg", {
271
+ width: '20',
272
+ height: '21',
273
+ viewBox: '0 0 20 21',
274
+ fill: 'none',
275
+ xmlns: 'http://www.w3.org/2000/svg'
276
+ }, React.createElement("path", {
277
+ d: 'M11.25 1.125L0 12.375L6.875 19.25L18.125 8V1.125H11.25ZM14.375 6.125C14.1278 6.125 13.8861 6.05169 13.6805 5.91434C13.475 5.77699 13.3148 5.58176 13.2201 5.35335C13.1255 5.12495 13.1008 4.87361 13.149 4.63114C13.1972 4.38866 13.3163 4.16593 13.4911 3.99112C13.6659 3.8163 13.8887 3.69725 14.1311 3.64902C14.3736 3.60079 14.6249 3.62554 14.8534 3.72015C15.0818 3.81476 15.277 3.97498 15.4143 4.18054C15.5517 4.3861 15.625 4.62777 15.625 4.875C15.625 5.20652 15.4933 5.52446 15.2589 5.75888C15.0245 5.9933 14.7065 6.125 14.375 6.125Z',
278
+ fill: '#21272A'
279
+ }), React.createElement("path", {
280
+ d: 'M18.75 3V8.625L8.47266 18.9023L9.45313 19.875L20 9.25V3H18.75Z',
281
+ fill: '#21272A'
282
+ }));
283
+ };
284
+ var EducationIcon = function EducationIcon() {
285
+ return React.createElement("svg", {
286
+ width: '20',
287
+ height: '21',
288
+ viewBox: '0 0 20 21',
289
+ fill: 'none',
290
+ xmlns: 'http://www.w3.org/2000/svg'
291
+ }, React.createElement("g", {
292
+ clipPath: 'url(#clip0_19555_31783)'
293
+ }, React.createElement("path", {
294
+ d: 'M10 14.9699L3.75 11.3984V15.243L10 18.7148L16.25 15.243V11.3984L10 14.9699Z',
295
+ fill: '#21272A'
296
+ }), React.createElement("path", {
297
+ d: 'M20.0098 8.0002L10 2.28027L-0.00976562 8.0002L10 13.7201L18.125 9.07715V15.5002H20V8.00566L20.0098 8.0002Z',
298
+ fill: '#21272A'
299
+ })), React.createElement("defs", null, React.createElement("clipPath", {
300
+ id: 'clip0_19555_31783'
301
+ }, React.createElement("rect", {
302
+ width: '20',
303
+ height: '20',
304
+ fill: 'white',
305
+ transform: 'translate(0 0.5)'
306
+ }))));
307
+ };
308
+ var BookIcon = function BookIcon() {
309
+ return React.createElement("svg", {
310
+ width: '14',
311
+ height: '15',
312
+ viewBox: '0 0 14 15',
313
+ fill: 'none',
314
+ xmlns: 'http://www.w3.org/2000/svg'
315
+ }, React.createElement("path", {
316
+ 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',
317
+ fill: '#FFB800'
318
+ }));
319
+ };
320
+ var GoldStarIcon = function GoldStarIcon() {
321
+ return React.createElement("svg", {
322
+ width: '14',
323
+ height: '15',
324
+ viewBox: '0 0 14 15',
325
+ fill: 'none',
326
+ xmlns: 'http://www.w3.org/2000/svg'
327
+ }, React.createElement("g", {
328
+ clipPath: 'url(#clip0_19479_10426)'
329
+ }, React.createElement("path", {
330
+ 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',
331
+ fill: '#FFB800'
332
+ })), React.createElement("defs", null, React.createElement("clipPath", {
333
+ id: 'clip0_19479_10426'
334
+ }, React.createElement("rect", {
335
+ width: '14',
336
+ height: '14',
337
+ fill: 'white',
338
+ transform: 'translate(0 0.5)'
339
+ }))));
340
+ };
341
+ var EyeIcon = function EyeIcon() {
342
+ return React.createElement("svg", {
343
+ width: '16',
344
+ height: '17',
345
+ viewBox: '0 0 16 17',
346
+ fill: 'none',
347
+ xmlns: 'http://www.w3.org/2000/svg'
348
+ }, React.createElement("path", {
349
+ 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',
350
+ fill: '#DCDDDD'
351
+ }));
352
+ };
353
+ var HiddenEyeIcon = function HiddenEyeIcon() {
354
+ return React.createElement("svg", {
355
+ width: '16',
356
+ height: '17',
357
+ viewBox: '0 0 16 17',
358
+ fill: 'none',
359
+ xmlns: 'http://www.w3.org/2000/svg'
360
+ }, React.createElement("path", {
361
+ 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',
362
+ fill: '#DCDDDD'
363
+ }), React.createElement("path", {
364
+ 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',
365
+ fill: '#DCDDDD'
366
+ }));
367
+ };
368
+
369
+ 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"};
370
+
371
+ var Button = function Button(_ref) {
372
+ var _ref$type = _ref.type,
373
+ type = _ref$type === void 0 ? 'button' : _ref$type,
374
+ _ref$color = _ref.color,
375
+ color = _ref$color === void 0 ? 'default' : _ref$color,
376
+ onClick = _ref.onClick,
377
+ children = _ref.children;
378
+ return React.createElement("button", {
379
+ type: type,
380
+ onClick: onClick,
381
+ className: styles.btn + " " + styles["btn-" + color]
382
+ }, children);
383
+ };
384
+
385
+ var Icon = function Icon(_ref) {
386
+ var icon = _ref.icon,
387
+ onClick = _ref.onClick,
388
+ className = _ref.className;
389
+ return React.createElement("div", {
390
+ className: clsx(styles.icon, onClick && styles['cursor-pointer'], className),
391
+ onClick: onClick
392
+ }, icon);
393
+ };
394
+
395
+ var HeaderCalendar = function HeaderCalendar(_ref) {
396
+ var title = _ref.title,
397
+ showTeacherName = _ref.showTeacherName,
398
+ currentDate = _ref.currentDate,
399
+ setCurrentDate = _ref.setCurrentDate,
400
+ calendarMode = _ref.calendarMode,
401
+ setCalendarMode = _ref.setCalendarMode;
402
+ var handleChangeDate = function handleChangeDate(date) {
403
+ setCurrentDate(date);
404
+ };
405
+ var handleChangeMode = function handleChangeMode(mode) {
406
+ setCalendarMode(mode);
407
+ setCurrentDate(dayjs());
408
+ };
409
+ return React.createElement("div", {
410
+ className: styles['header-calendar']
411
+ }, React.createElement("div", {
412
+ className: styles['header-calendar__nav']
413
+ }, React.createElement(Icon, {
414
+ icon: React.createElement(Left, null),
415
+ onClick: function onClick() {
416
+ return handleChangeDate(currentDate.subtract(1, calendarMode));
417
+ }
418
+ }), React.createElement(DatePicker, {
419
+ picker: calendarMode === 'day' ? 'date' : calendarMode,
420
+ onChange: handleChangeDate,
421
+ format: function format(value) {
422
+ return customDateFormat(value, 'MMMM, YYYY');
423
+ },
424
+ value: currentDate,
425
+ allowClear: false,
426
+ suffixIcon: null,
427
+ className: styles['header-calendar__date-picker'],
428
+ size: 'large'
429
+ }), React.createElement(Icon, {
430
+ icon: React.createElement(Right, null),
431
+ onClick: function onClick() {
432
+ return handleChangeDate(currentDate.add(1, calendarMode));
433
+ }
434
+ })), showTeacherName && React.createElement("div", {
435
+ className: styles['header-calendar__title']
436
+ }, title), React.createElement("div", {
437
+ className: styles['header-calendar__controls']
438
+ }, React.createElement(Button, {
439
+ onClick: function onClick() {
440
+ return handleChangeDate(dayjs());
441
+ }
442
+ }, "Today"), React.createElement("div", {
443
+ className: styles['header-calendar__divider']
444
+ }), React.createElement(Button, {
445
+ color: calendarMode === 'month' ? 'primary' : 'default',
446
+ onClick: function onClick() {
447
+ return handleChangeMode('month');
448
+ }
449
+ }, "Month"), React.createElement(Button, {
450
+ color: calendarMode === 'week' ? 'primary' : 'default',
451
+ onClick: function onClick() {
452
+ return handleChangeMode('week');
453
+ }
454
+ }, "Week")));
455
+ };
456
+
457
+ var CustomTooltip = function CustomTooltip(_ref) {
458
+ var title = _ref.title,
459
+ children = _ref.children,
460
+ _ref$placement = _ref.placement,
461
+ placement = _ref$placement === void 0 ? 'top' : _ref$placement;
462
+ return React.createElement(Tooltip, {
463
+ color: '#ffffff',
464
+ title: React.createElement("div", {
465
+ className: styles['text-gray-600']
466
+ }, title),
467
+ placement: placement
468
+ }, React.createElement("div", null, children));
469
+ };
470
+
471
+ var _getIconEvent;
472
+ var calculateBoxSize = function calculateBoxSize(startTime, endTime, isAllDay) {
473
+ if (isAllDay) {
474
+ return {
475
+ top: 10,
476
+ height: 50
477
+ };
478
+ }
479
+ var minutes = dayjs(startTime).minute();
480
+ var diffMinutes = dayjs(endTime).diff(startTime, 'minute', true);
481
+ return {
482
+ top: Math.floor(minutes / MINUTES_PER_HOUR * 100),
483
+ height: Math.floor(diffMinutes / MINUTES_PER_HOUR * 100)
484
+ };
485
+ };
486
+ 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);
487
+ var MIN_HEIGHT_HIDE_DETAILS = 140;
488
+ var MIN_HEIGHT_HIDE_ALL = 105;
489
+ var WeeklyEvent = function WeeklyEvent(_ref) {
490
+ var event = _ref.event,
491
+ onOpenDetail = _ref.onOpenDetail,
492
+ onEventDetail = _ref.onEventDetail;
493
+ var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate, event.isAllDay),
494
+ top = _calculateBoxSize.top,
495
+ height = _calculateBoxSize.height;
496
+ var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
497
+ return React.createElement("div", {
498
+ className: styles["event-" + convertType[event.type]],
499
+ onClick: function onClick() {
500
+ onOpenDetail(dayjs(event.startDate).toDate(), [event]);
501
+ onEventDetail && onEventDetail(event);
502
+ },
503
+ style: {
504
+ top: top + "%",
505
+ height: height + "%",
506
+ zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
507
+ }
508
+ }, React.createElement("div", {
509
+ className: clsx$1(styles['weekly-event'], height <= MIN_HEIGHT_HIDE_ALL && styles['weekly-event--collapse'])
510
+ }, React.createElement("div", {
511
+ className: styles.flex
512
+ }, getIconEvent[event.type]), React.createElement("div", {
513
+ className: clsx$1(height <= MIN_HEIGHT_HIDE_DETAILS && styles['weekly-event--collapse'])
514
+ }, React.createElement("div", {
515
+ className: styles['weekly-event__title']
516
+ }, React.createElement(CustomTooltip, {
517
+ title: event.title
518
+ }, event.title)), React.createElement("div", {
519
+ className: styles['weekly-event__date']
520
+ }, React.createElement(CustomTooltip, {
521
+ title: formattedDate
522
+ }, formattedDate)))));
523
+ };
524
+
525
+ var WeeklyCell = function WeeklyCell(_ref) {
526
+ var events = _ref.events,
527
+ date = _ref.date,
528
+ onOpenDetail = _ref.onOpenDetail,
529
+ onOpenCreate = _ref.onOpenCreate,
530
+ onEventDetail = _ref.onEventDetail;
531
+ var isToday = dayjs().isSame(date, 'day');
532
+ var handleOpenCreateModal = function handleOpenCreateModal(e) {
533
+ if (e.target !== e.currentTarget) return;
534
+ onOpenCreate(dayjs(date).toDate());
535
+ };
536
+ events.sort(function (a, b) {
537
+ return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
538
+ });
539
+ var renderWeeklyEvent = useMemo(function () {
540
+ var isAllDay = events.some(function (item) {
541
+ return item.isAllDay;
542
+ });
543
+ if (isAllDay && events.length > 1) {
544
+ return React.createElement(React.Fragment, null, React.createElement(WeeklyEvent, {
545
+ event: events[0],
546
+ onOpenDetail: onOpenDetail,
547
+ onEventDetail: onEventDetail
548
+ }), React.createElement("div", {
549
+ className: styles['see-more']
550
+ }, React.createElement(CustomTooltip, {
551
+ placement: 'bottom',
552
+ title: React.createElement("div", {
553
+ className: styles['calendar-tooltip']
554
+ }, events.slice(1, events.length).map(function (event, index) {
555
+ return React.createElement(WeeklyEvent, {
556
+ event: event,
557
+ onOpenDetail: onOpenDetail,
558
+ onEventDetail: onEventDetail,
559
+ key: index + 1
560
+ });
561
+ }))
562
+ }, "+", Math.max(events.length - 1, 0), " More")));
563
+ }
564
+ return events.map(function (event, index) {
565
+ return React.createElement(WeeklyEvent, {
566
+ key: index,
567
+ event: event,
568
+ onOpenDetail: onOpenDetail,
569
+ onEventDetail: onEventDetail
570
+ });
571
+ });
572
+ }, [events]);
573
+ return React.createElement("div", {
574
+ className: styles['weekly-calendar__cell'] + " " + (isToday ? styles['bg-info/10'] : styles['bg-white']),
575
+ onClick: handleOpenCreateModal
576
+ }, renderWeeklyEvent);
577
+ };
578
+
579
+ dayjs.extend(isBetween);
580
+ var getEventAllDay = function getEventAllDay(events, targetDate) {
581
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
582
+ var currentDate = targetDate.add(index, 'day');
583
+ acc[day] = {
584
+ events: events.reduce(function (filteredEvents, event) {
585
+ if (dayjs(event.startDate).isSame(currentDate.startOf('day')) && checkIsAllday(dayjs(event.startDate), dayjs(event.endDate))) {
586
+ filteredEvents.push(_extends({}, event, {
587
+ isAllDay: true
588
+ }));
589
+ }
590
+ return filteredEvents;
591
+ }, []),
592
+ date: currentDate
593
+ };
594
+ return acc;
595
+ }, {});
596
+ };
597
+ var getEventsOfDay = function getEventsOfDay(events, targetHour) {
598
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
599
+ var currentDate = targetHour.add(index, 'day');
600
+ acc[day] = {
601
+ events: events.filter(function (event) {
602
+ return dayjs(event.startDate).isSame(currentDate, 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
603
+ }),
604
+ date: currentDate
605
+ };
606
+ return acc;
607
+ }, {});
608
+ };
609
+ var WeeklyCalendar = function WeeklyCalendar(_ref) {
610
+ var startDate = _ref.startDate,
611
+ endDate = _ref.endDate,
612
+ events = _ref.events,
613
+ norms = _ref.norms,
614
+ showWeeklyNorm = _ref.showWeeklyNorm,
615
+ onOpenDetail = _ref.onOpenDetail,
616
+ onOpenCreate = _ref.onOpenCreate,
617
+ onEventDetail = _ref.onEventDetail,
618
+ loading = _ref.loading;
619
+ var getTableColumns = function getTableColumns() {
620
+ var _calculateNormOfWeek = calculateNormOfWeek(norms, events, startDate, endDate),
621
+ normOfWeek = _calculateNormOfWeek.normOfWeek,
622
+ totalNorm = _calculateNormOfWeek.totalNorm;
623
+ var hourColumn = {
624
+ title: React.createElement("div", {
625
+ className: styles['weekly-calendar__title']
626
+ }, showWeeklyNorm && React.createElement(React.Fragment, null, React.createElement("div", null, "Weekly Norm"), React.createElement("div", {
627
+ className: clsx$1(normOfWeek > totalNorm && styles['!text-error'])
628
+ }, normOfWeek + "/" + totalNorm))),
629
+ dataIndex: 'hour',
630
+ key: 'hour',
631
+ width: 1,
632
+ render: function render(value) {
633
+ return React.createElement("div", null, value);
634
+ }
635
+ };
636
+ var dayColumns = Object.values(DAYS_OF_WEEK).map(function (day, index) {
637
+ return {
638
+ title: React.createElement("div", {
639
+ className: styles['weekly-calendar__title']
640
+ }, React.createElement("div", null, day.slice(0, 3)), React.createElement("div", null, dayjs(startDate).add(index, 'day').format('DD/MM'))),
641
+ dataIndex: day,
642
+ key: day,
643
+ render: function render(value) {
644
+ return React.createElement(WeeklyCell, {
645
+ key: index,
646
+ events: value.events,
647
+ date: value.date,
648
+ onOpenDetail: onOpenDetail,
649
+ onOpenCreate: onOpenCreate,
650
+ onEventDetail: onEventDetail
651
+ });
652
+ }
653
+ };
654
+ });
655
+ return [hourColumn].concat(dayColumns);
656
+ };
657
+ var getTableData = function getTableData() {
658
+ var data = [];
659
+ data.push(_extends({
660
+ id: -1,
661
+ hour: 'All day'
662
+ }, getEventAllDay(events, startDate)));
663
+ for (var i = 0; i < HOURS_PER_DAY; i++) {
664
+ var targetHour = dayjs(startDate).add(i, 'hour');
665
+ data.push(_extends({
666
+ id: i,
667
+ hour: targetHour.format('HH:mm')
668
+ }, getEventsOfDay(events, targetHour)));
669
+ }
670
+ return data;
671
+ };
672
+ return React.createElement(Table, {
673
+ rowKey: function rowKey(record) {
674
+ return record.id;
675
+ },
676
+ columns: getTableColumns(),
677
+ dataSource: getTableData(),
678
+ pagination: false,
679
+ rowHoverable: false,
680
+ className: styles['weekly-calendar'],
681
+ loading: loading
682
+ });
683
+ };
684
+
685
+ var SelectBox = function SelectBox(_ref) {
686
+ var value = _ref.value,
687
+ options = _ref.options,
688
+ defaultValue = _ref.defaultValue,
689
+ _ref$className = _ref.className,
690
+ className = _ref$className === void 0 ? '' : _ref$className,
691
+ disabled = _ref.disabled,
692
+ onChange = _ref.onChange;
693
+ return React.createElement(Select, {
694
+ defaultValue: defaultValue,
695
+ className: className,
696
+ disabled: disabled,
697
+ options: options,
698
+ value: value,
699
+ onChange: onChange
700
+ });
701
+ };
702
+
703
+ var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
704
+ var title = _ref.title,
705
+ showTeacherName = _ref.showTeacherName,
706
+ currentDate = _ref.currentDate,
707
+ setCurrentDate = _ref.setCurrentDate,
708
+ calendarMode = _ref.calendarMode,
709
+ setCalendarMode = _ref.setCalendarMode,
710
+ toggleTurnOnFilter = _ref.toggleTurnOnFilter,
711
+ filter = _ref.filter;
712
+ var options = [{
713
+ value: 'month',
714
+ label: 'Month'
715
+ }, {
716
+ value: 'week',
717
+ label: 'Week'
718
+ }];
719
+ var handleChangeDate = function handleChangeDate(date) {
720
+ setCurrentDate(date);
721
+ };
722
+ var handleChangeMode = function handleChangeMode(mode) {
723
+ setCalendarMode(mode);
724
+ setCurrentDate(dayjs());
725
+ };
726
+ return React.createElement("div", {
727
+ className: styles['header-calendar']
728
+ }, React.createElement("div", {
729
+ className: clsx$1('cursor-pointer', filter.isOpen && styles['text-lms-primary']),
730
+ onClick: toggleTurnOnFilter
731
+ }, React.createElement(FilterIcon, null)), React.createElement("div", {
732
+ className: "" + styles['header-calendar__nav']
733
+ }, React.createElement(Icon, {
734
+ icon: React.createElement(LeftArrowIcon, null),
735
+ onClick: function onClick() {
736
+ return handleChangeDate(currentDate.subtract(1, calendarMode));
737
+ },
738
+ className: styles['rounded-none']
739
+ }), React.createElement(DatePicker, {
740
+ picker: calendarMode === 'day' ? 'date' : calendarMode,
741
+ onChange: handleChangeDate,
742
+ format: function format(value) {
743
+ return customDateFormat(value, calendarMode === 'day' ? FORMAT_DATE_CARLENDA.DATE : FORMAT_DATE_CARLENDA.MONTH_AND_WEEK);
744
+ },
745
+ value: currentDate,
746
+ allowClear: false,
747
+ suffixIcon: null,
748
+ className: styles['header-calendar__date-picker'],
749
+ size: 'large'
750
+ }), React.createElement(Icon, {
751
+ icon: React.createElement(RightArrowIcon, null),
752
+ onClick: function onClick() {
753
+ return handleChangeDate(currentDate.add(1, calendarMode));
754
+ }
755
+ })), showTeacherName && React.createElement("div", {
756
+ className: styles['header-calendar__title']
757
+ }, title), React.createElement("div", {
758
+ className: styles['header-calendar__controls']
759
+ }, React.createElement(Button, {
760
+ color: 'lms-default',
761
+ onClick: function onClick() {
762
+ return handleChangeDate(dayjs());
763
+ }
764
+ }, "Today"), React.createElement("div", {
765
+ className: styles['header-calendar__divider']
766
+ }), React.createElement(SelectBox, {
767
+ value: calendarMode,
768
+ options: options,
769
+ className: 'select-mode',
770
+ onChange: function onChange(mode) {
771
+ handleChangeMode(mode);
772
+ }
773
+ })));
774
+ };
775
+
776
+ 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"};
777
+
778
+ var FilterCalendar = function FilterCalendar(_ref) {
779
+ var filter = _ref.filter,
780
+ setFilter = _ref.setFilter;
781
+ var course = useMemo(function () {
782
+ return [{
783
+ id: '12121212',
784
+ name: 'CFA Level 2'
785
+ }, {
786
+ id: '34343434',
787
+ name: 'CFA Level 3'
788
+ }];
789
+ }, []);
790
+ var noteFilter = useMemo(function () {
791
+ return [{
792
+ title: 'Online',
793
+ icon: React.createElement("div", {
794
+ className: styles$1['calendar-filter_note_blue']
795
+ }),
796
+ value: 'online'
797
+ }, {
798
+ title: 'Live Online',
799
+ icon: React.createElement("div", {
800
+ className: styles$1['calendar-filter_note_pureple']
801
+ }),
802
+ value: 'live-online'
803
+ }, {
804
+ title: 'Offline',
805
+ icon: React.createElement("div", {
806
+ className: styles$1['calendar-filter_note_green']
807
+ }),
808
+ value: 'offline'
809
+ }, {
810
+ title: 'Case Study',
811
+ icon: React.createElement(GoldStarIcon, null),
812
+ value: 'case-study'
813
+ }, {
814
+ title: 'Test',
815
+ icon: React.createElement(BookIcon, null),
816
+ value: 'test'
817
+ }, {
818
+ title: 'Holiday',
819
+ icon: React.createElement("div", {
820
+ className: styles$1['calendar-filter_note_yellow']
821
+ }),
822
+ value: 'holiday'
823
+ }, {
824
+ title: 'Overdue',
825
+ icon: React.createElement("div", {
826
+ className: styles$1['calendar-filter_note_red']
827
+ }),
828
+ value: 'overdue'
829
+ }];
830
+ }, []);
831
+ var handleFilter = function handleFilter(type, value) {
832
+ switch (type) {
833
+ case 'course':
834
+ {
835
+ setFilter(function (prev) {
836
+ var courseId = prev.courseId || [];
837
+ var updatedCourseId = courseId.includes(value) ? courseId.filter(function (item) {
838
+ return item !== value;
839
+ }) : [].concat(courseId, [value]);
840
+ return _extends({}, prev, {
841
+ courseId: updatedCourseId
842
+ });
843
+ });
844
+ break;
845
+ }
846
+ case 'note':
847
+ {
848
+ setFilter(function (prev) {
849
+ var typeArray = prev.type || [];
850
+ var updatedType = typeArray.includes(value) ? typeArray.filter(function (item) {
851
+ return item !== value;
852
+ }) : [].concat(typeArray, [value]);
853
+ return _extends({}, prev, {
854
+ type: updatedType
855
+ });
856
+ });
857
+ break;
858
+ }
859
+ }
860
+ };
861
+ var handleFilterday = function handleFilterday(date, mode) {
862
+ console.log('filterDate:', date, mode);
863
+ };
864
+ return React.createElement("div", {
865
+ className: styles$1['calendar-filter']
866
+ }, React.createElement(Calendar, {
867
+ mode: 'month',
868
+ fullscreen: false,
869
+ onPanelChange: handleFilterday
870
+ }), React.createElement("div", null, React.createElement("div", {
871
+ className: styles$1['calendar-filter_title']
872
+ }, React.createElement(TagIcon, null), React.createElement("h3", null, "Notes")), React.createElement("div", null, noteFilter.map(function (item) {
873
+ var _filter$type;
874
+ return React.createElement("div", {
875
+ className: styles$1['calendar-filter_content_list_item'],
876
+ key: item.value
877
+ }, React.createElement("div", {
878
+ className: styles$1['calendar-filter_content_list_item']
879
+ }, item.icon, item.title), React.createElement("div", {
880
+ onClick: function onClick() {
881
+ return handleFilter('note', item.value);
882
+ },
883
+ className: styles$1['calendar-filter_content_item_eye']
884
+ }, (_filter$type = filter.type) !== null && _filter$type !== void 0 && _filter$type.includes(item.value) ? React.createElement(EyeIcon, null) : React.createElement(HiddenEyeIcon, null)));
885
+ }))), React.createElement("div", null, React.createElement("div", {
886
+ className: styles$1['calendar-filter_title']
887
+ }, React.createElement(EducationIcon, null), React.createElement("h3", null, "My courses")), React.createElement("div", null, course === null || course === void 0 ? void 0 : course.map(function (item, key) {
888
+ var _filter$courseId;
889
+ return React.createElement("div", {
890
+ key: key,
891
+ className: styles$1['calendar-filter_content_list_item']
892
+ }, React.createElement("div", {
893
+ className: styles$1['calendar-filter_content_list_item']
894
+ }, item.name), React.createElement("div", {
895
+ onClick: function onClick() {
896
+ return handleFilter('course', item.id);
897
+ },
898
+ className: styles$1['calendar-filter_content_item_eye']
899
+ }, (_filter$courseId = filter.courseId) !== null && _filter$courseId !== void 0 && _filter$courseId.includes(item.id) ? React.createElement(EyeIcon, null) : React.createElement(HiddenEyeIcon, null)));
900
+ }))));
901
+ };
902
+
903
+ var MonthlyEvent = function MonthlyEvent(_ref) {
904
+ var event = _ref.event,
905
+ isSameMonth = _ref.isSameMonth,
906
+ onEventDetail = _ref.onEventDetail;
907
+ var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
908
+ return React.createElement(React.Fragment, null, React.createElement("li", {
909
+ className: styles["event-" + (isSameMonth ? convertType[event.type] : 'default')],
910
+ style: {
911
+ cursor: 'pointer'
912
+ },
913
+ onClick: function onClick() {
914
+ return onEventDetail && onEventDetail(event);
915
+ }
916
+ }, React.createElement("div", {
917
+ className: styles['monthly-event__title']
918
+ }, React.createElement(CustomTooltip, {
919
+ title: event.title
920
+ }, event.title)), React.createElement("div", {
921
+ className: styles['monthly-event__date']
922
+ }, React.createElement(CustomTooltip, {
923
+ title: formattedDate
924
+ }, formattedDate))));
925
+ };
926
+
927
+ var MonthlyCell = function MonthlyCell(_ref) {
928
+ var currentDate = _ref.currentDate,
929
+ events = _ref.events,
930
+ date = _ref.date,
931
+ onOpenDetail = _ref.onOpenDetail,
932
+ onOpenCreate = _ref.onOpenCreate,
933
+ onEventDetail = _ref.onEventDetail;
934
+ var hasMore = events.length > 2;
935
+ var isSameMonth = currentDate.isSame(date, 'month');
936
+ var isToday = dayjs().isSame(date, 'day');
937
+ var handleOpenCreateModal = function handleOpenCreateModal(e) {
938
+ if (e.target !== e.currentTarget) return;
939
+ onOpenCreate(dayjs(date).hour(dayjs().hour()).minute(dayjs().minute()).toDate());
940
+ };
941
+ return React.createElement("div", {
942
+ className: styles['monthly-calendar__cell'] + " " + (isToday ? styles['monthly-calendar__cell--active'] : styles['border-gray-4']) + " " + (isSameMonth ? styles['bg-white'] : styles['bg-button']),
943
+ onClick: handleOpenCreateModal
944
+ }, React.createElement("div", {
945
+ className: isSameMonth ? styles['text-black'] : styles['text-secondary-text']
946
+ }, date.format('DD')), React.createElement("ul", {
947
+ onClick: function onClick() {
948
+ return onOpenDetail(date.toDate(), events);
949
+ }
950
+ }, events.slice(0, 2).map(function (event, index) {
951
+ return React.createElement(MonthlyEvent, {
952
+ key: index,
953
+ event: event,
954
+ isSameMonth: isSameMonth,
955
+ onEventDetail: onEventDetail
956
+ });
957
+ }), hasMore && React.createElement(CustomTooltip, {
958
+ placement: 'bottom',
959
+ title: React.createElement("div", {
960
+ className: styles['calendar-tooltip']
961
+ }, events.slice(2, events.length).map(function (event, index) {
962
+ return React.createElement(MonthlyEvent, {
963
+ key: index,
964
+ event: event,
965
+ isSameMonth: isSameMonth,
966
+ onEventDetail: onEventDetail
967
+ });
968
+ }))
969
+ }, React.createElement("div", {
970
+ className: isSameMonth ? styles['text-info'] : styles['text-secondary-text']
971
+ }, "+", Math.max(events.length - 2, 0), " More"))));
972
+ };
973
+
974
+ var getEventsOfWeek = function getEventsOfWeek(events, targetDate) {
975
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
976
+ var currentDate = targetDate.add(index, 'day');
977
+ acc[day] = {
978
+ events: events.filter(function (event) {
979
+ return dayjs(event.startDate).isSame(currentDate, 'date');
980
+ }),
981
+ date: currentDate
982
+ };
983
+ return acc;
984
+ }, {});
985
+ };
986
+ var MonthlyCalendar = function MonthlyCalendar(_ref) {
987
+ var currentDate = _ref.currentDate,
988
+ startDate = _ref.startDate,
989
+ endDate = _ref.endDate,
990
+ events = _ref.events,
991
+ norms = _ref.norms,
992
+ showWeeklyNorm = _ref.showWeeklyNorm,
993
+ onOpenDetail = _ref.onOpenDetail,
994
+ onOpenCreate = _ref.onOpenCreate,
995
+ onEventDetail = _ref.onEventDetail,
996
+ loading = _ref.loading;
997
+ var getTableColumns = function getTableColumns() {
998
+ var weeklyNormColumn = {
999
+ title: React.createElement("div", {
1000
+ className: styles['monthly-calendar__title'] + " " + styles['monthly-calendar__title-active']
1001
+ }, "Weekly Norm"),
1002
+ dataIndex: 'norm',
1003
+ key: 'norm',
1004
+ width: 1,
1005
+ render: function render(value) {
1006
+ var normOfWeek = value.normOfWeek,
1007
+ totalNorm = value.totalNorm;
1008
+ return React.createElement("div", {
1009
+ className: styles['weekly-norm__cell']
1010
+ }, React.createElement("div", {
1011
+ className: clsx$1(styles['weekly-norm__value'], normOfWeek > totalNorm && styles['!text-error'])
1012
+ }, normOfWeek + "/" + totalNorm));
1013
+ }
1014
+ };
1015
+ var dayColumns = Object.values(DAYS_OF_WEEK).map(function (day, index) {
1016
+ return {
1017
+ title: React.createElement("div", {
1018
+ className: styles['monthly-calendar__title']
1019
+ }, day.slice(0, 3)),
1020
+ dataIndex: day,
1021
+ key: day,
1022
+ width: '14%',
1023
+ render: function render(value) {
1024
+ return React.createElement(MonthlyCell, {
1025
+ key: index,
1026
+ events: value.events,
1027
+ date: value.date,
1028
+ currentDate: currentDate,
1029
+ onOpenDetail: onOpenDetail,
1030
+ onOpenCreate: onOpenCreate,
1031
+ onEventDetail: onEventDetail
1032
+ });
1033
+ }
1034
+ };
1035
+ });
1036
+ return showWeeklyNorm ? [weeklyNormColumn].concat(dayColumns) : dayColumns;
1037
+ };
1038
+ var getWeeksOfFullMonth = function getWeeksOfFullMonth() {
1039
+ var weeks = [];
1040
+ var targetDate = startDate.clone();
1041
+ while (targetDate.isBefore(endDate)) {
1042
+ weeks.push(targetDate);
1043
+ targetDate = targetDate.add(1, 'week');
1044
+ }
1045
+ return weeks;
1046
+ };
1047
+ var getTableData = function getTableData() {
1048
+ var weeks = getWeeksOfFullMonth();
1049
+ var data = weeks.map(function (week, index) {
1050
+ var eventsOfWeek = getEventsOfWeek(events, week);
1051
+ if (!showWeeklyNorm) {
1052
+ return _extends({
1053
+ id: index
1054
+ }, eventsOfWeek);
1055
+ }
1056
+ return _extends({
1057
+ id: index,
1058
+ norm: calculateNormOfWeek(norms, events, week, week.endOf('week').add(1, 'day'))
1059
+ }, eventsOfWeek);
1060
+ });
1061
+ return data;
1062
+ };
1063
+ return React.createElement(Table, {
1064
+ rowKey: function rowKey(record) {
1065
+ return record.id;
1066
+ },
1067
+ columns: getTableColumns(),
1068
+ dataSource: getTableData(),
1069
+ pagination: false,
1070
+ rowHoverable: false,
1071
+ className: styles['monthly-calendar'],
1072
+ loading: loading
1073
+ });
1074
+ };
1075
+
1076
+ var SAPPCalendar = function SAPPCalendar(_ref) {
1077
+ var teacherName = _ref.teacherName,
1078
+ events = _ref.events,
1079
+ _ref$norms = _ref.norms,
1080
+ norms = _ref$norms === void 0 ? [] : _ref$norms,
1081
+ _ref$showTeacherName = _ref.showTeacherName,
1082
+ showTeacherName = _ref$showTeacherName === void 0 ? true : _ref$showTeacherName,
1083
+ _ref$showWeeklyNorm = _ref.showWeeklyNorm,
1084
+ showWeeklyNorm = _ref$showWeeklyNorm === void 0 ? true : _ref$showWeeklyNorm,
1085
+ onOpenDetail = _ref.onOpenDetail,
1086
+ onOpenCreate = _ref.onOpenCreate,
1087
+ onRefetchAPI = _ref.onRefetchAPI,
1088
+ onEventDetail = _ref.onEventDetail,
1089
+ loading = _ref.loading,
1090
+ _ref$type = _ref.type,
1091
+ type = _ref$type === void 0 ? 'normal' : _ref$type;
1092
+ var _useState = useState(dayjs()),
1093
+ currentDate = _useState[0],
1094
+ setCurrentDate = _useState[1];
1095
+ var _useState2 = useState('month'),
1096
+ calendarMode = _useState2[0],
1097
+ setCalendarMode = _useState2[1];
1098
+ var _useState3 = useState({
1099
+ isOpen: false,
1100
+ type: [],
1101
+ courseId: []
1102
+ }),
1103
+ filter = _useState3[0],
1104
+ setFilter = _useState3[1];
1105
+ var startDate = useMemo(function () {
1106
+ if (calendarMode === 'day') {
1107
+ return dayjs(currentDate).startOf('day');
1108
+ }
1109
+ return dayjs(currentDate).startOf(calendarMode).startOf('week').add(1, 'day');
1110
+ }, [currentDate, calendarMode]);
1111
+ var endDate = useMemo(function () {
1112
+ if (calendarMode === 'day') {
1113
+ return dayjs(currentDate).endOf('day');
1114
+ }
1115
+ return dayjs(currentDate).endOf(calendarMode).endOf('week').add(1, 'day');
1116
+ }, [currentDate, calendarMode]);
1117
+ var splittedEvents = splitEventsIntoDays(events);
1118
+ splittedEvents.sort(function (a, b) {
1119
+ return dayjs(a.startDate).diff(b.startDate);
1120
+ });
1121
+ var handleToggleFilter = function handleToggleFilter() {
1122
+ setFilter(function (prev) {
1123
+ return _extends({}, filter, {
1124
+ isOpen: !prev.isOpen
1125
+ });
1126
+ });
1127
+ };
1128
+ useEffectAfterMounted(function () {
1129
+ onRefetchAPI(startDate.toDate(), endDate.toDate());
1130
+ }, [startDate, endDate]);
1131
+ useEffect(function () {
1132
+ if (type === 'filter') {
1133
+ console.log('filter', events);
1134
+ }
1135
+ }, [filter, events]);
1136
+ return React.createElement("div", {
1137
+ className: styles['sapp-calendar']
1138
+ }, filter.isOpen && React.createElement(FilterCalendar, {
1139
+ filter: filter,
1140
+ setFilter: setFilter
1141
+ }), React.createElement("div", {
1142
+ className: styles['sapp-calendar__container']
1143
+ }, type === 'normal' ? React.createElement(HeaderCalendar, {
1144
+ title: teacherName,
1145
+ showTeacherName: showTeacherName,
1146
+ currentDate: currentDate,
1147
+ setCurrentDate: setCurrentDate,
1148
+ calendarMode: calendarMode,
1149
+ setCalendarMode: setCalendarMode
1150
+ }) : React.createElement(LMSHeaderCalendar, {
1151
+ title: teacherName,
1152
+ showTeacherName: showTeacherName,
1153
+ currentDate: currentDate,
1154
+ setCurrentDate: setCurrentDate,
1155
+ calendarMode: calendarMode,
1156
+ setCalendarMode: setCalendarMode,
1157
+ toggleTurnOnFilter: handleToggleFilter,
1158
+ filter: filter
1159
+ }), calendarMode === 'month' && React.createElement(MonthlyCalendar, {
1160
+ currentDate: currentDate,
1161
+ startDate: startDate,
1162
+ endDate: endDate,
1163
+ events: splittedEvents,
1164
+ norms: norms,
1165
+ showWeeklyNorm: showWeeklyNorm,
1166
+ onOpenDetail: onOpenDetail,
1167
+ onOpenCreate: onOpenCreate,
1168
+ onEventDetail: onEventDetail,
1169
+ loading: loading
1170
+ }), calendarMode === 'week' && React.createElement(WeeklyCalendar, {
1171
+ startDate: startDate,
1172
+ endDate: endDate,
1173
+ events: splittedEvents,
1174
+ norms: norms,
1175
+ showWeeklyNorm: showWeeklyNorm,
1176
+ onOpenDetail: onOpenDetail,
1177
+ onOpenCreate: onOpenCreate,
1178
+ onEventDetail: onEventDetail,
1179
+ loading: loading
1180
+ })));
1181
+ };
1182
+
1183
+ export { SAPPCalendar };
1184
+ //# sourceMappingURL=index.modern.js.map