sapp-common-package-test-final 1.0.11 → 1.0.13

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.
@@ -56,6 +56,7 @@ 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';
61
62
  var DAYS_OF_WEEK;
@@ -68,6 +69,16 @@ var DAYS_OF_WEEK;
68
69
  DAYS_OF_WEEK["Saturday"] = "Saturday";
69
70
  DAYS_OF_WEEK["Sunday"] = "Sunday";
70
71
  })(DAYS_OF_WEEK || (DAYS_OF_WEEK = {}));
72
+ var DAYS_OF_WEEK_SHORTEN;
73
+ (function (DAYS_OF_WEEK_SHORTEN) {
74
+ DAYS_OF_WEEK_SHORTEN["Monday"] = "Mon";
75
+ DAYS_OF_WEEK_SHORTEN["Tuesday"] = "Tue";
76
+ DAYS_OF_WEEK_SHORTEN["Wednesday"] = "Wed";
77
+ DAYS_OF_WEEK_SHORTEN["Thursday"] = "Thur";
78
+ DAYS_OF_WEEK_SHORTEN["Friday"] = "Fri";
79
+ DAYS_OF_WEEK_SHORTEN["Saturday"] = "Sat";
80
+ DAYS_OF_WEEK_SHORTEN["Sunday"] = "Sun";
81
+ })(DAYS_OF_WEEK_SHORTEN || (DAYS_OF_WEEK_SHORTEN = {}));
71
82
  var HOUR_OF_DAY;
72
83
  (function (HOUR_OF_DAY) {
73
84
  HOUR_OF_DAY["07:00"] = "07:00";
@@ -397,7 +408,7 @@ var HiddenEyeIcon = function HiddenEyeIcon() {
397
408
  }));
398
409
  };
399
410
 
400
- 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"};
411
+ var styles = {"flex":"_2hGgU","transform":"_3-Pu9","cursor-pointer":"_2Mcv6","resize":"_uCXxT","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"};
401
412
 
402
413
  var Button = function Button(_ref) {
403
414
  var _ref$type = _ref.type,
@@ -894,8 +905,224 @@ var MonthlyCalendar = function MonthlyCalendar(_ref) {
894
905
  };
895
906
 
896
907
  var _getIconEvent;
908
+ var calculateBoxSize = function calculateBoxSize(startTime, endTime, isAllDay) {
909
+ if (isAllDay) {
910
+ return {
911
+ top: 10,
912
+ height: 50
913
+ };
914
+ }
915
+ var minutes = dayjs(startTime).minute();
916
+ var diffMinutes = dayjs(endTime).diff(startTime, 'minute', true);
917
+ return {
918
+ top: Math.floor(minutes / MINUTES_PER_HOUR * 100),
919
+ height: Math.floor(diffMinutes / MINUTES_PER_HOUR * 100)
920
+ };
921
+ };
897
922
  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);
898
- var calculateBoxSize = function calculateBoxSize(startTime, endTime) {
923
+ var MIN_HEIGHT_HIDE_DETAILS = 140;
924
+ var MIN_HEIGHT_HIDE_ALL = 105;
925
+ var WeeklyEvent = function WeeklyEvent(_ref) {
926
+ var event = _ref.event,
927
+ onOpenDetail = _ref.onOpenDetail,
928
+ onEventDetail = _ref.onEventDetail;
929
+ var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate, event.isAllDay),
930
+ top = _calculateBoxSize.top,
931
+ height = _calculateBoxSize.height;
932
+ var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
933
+ return React.createElement("div", {
934
+ className: styles["event-" + convertType[event.type]],
935
+ onClick: function onClick() {
936
+ onOpenDetail(dayjs(event.startDate).toDate(), [event]);
937
+ onEventDetail && onEventDetail(event);
938
+ },
939
+ style: {
940
+ top: top + "%",
941
+ height: height + "%",
942
+ zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
943
+ }
944
+ }, React.createElement("div", {
945
+ className: clsx$1(styles['weekly-event'], height <= MIN_HEIGHT_HIDE_ALL && styles['weekly-event--collapse'])
946
+ }, React.createElement("div", {
947
+ className: styles.flex
948
+ }, getIconEvent[event.type]), React.createElement("div", {
949
+ className: clsx$1(height <= MIN_HEIGHT_HIDE_DETAILS && styles['weekly-event--collapse'])
950
+ }, React.createElement("div", {
951
+ className: styles['weekly-event__title']
952
+ }, React.createElement(CustomTooltip, {
953
+ title: event.title
954
+ }, event.title)), React.createElement("div", {
955
+ className: styles['weekly-event__date']
956
+ }, React.createElement(CustomTooltip, {
957
+ title: formattedDate
958
+ }, formattedDate)))));
959
+ };
960
+
961
+ var WeeklyCell = function WeeklyCell(_ref) {
962
+ var _events;
963
+ var events = _ref.events,
964
+ date = _ref.date,
965
+ onOpenDetail = _ref.onOpenDetail,
966
+ onOpenCreate = _ref.onOpenCreate,
967
+ onEventDetail = _ref.onEventDetail;
968
+ var isToday = dayjs().isSame(date, 'day');
969
+ var handleOpenCreateModal = function handleOpenCreateModal(e) {
970
+ if (e.target !== e.currentTarget) return;
971
+ onOpenCreate(dayjs(date).toDate());
972
+ };
973
+ events = (_events = events) === null || _events === void 0 ? void 0 : _events.sort(function (a, b) {
974
+ return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
975
+ });
976
+ var renderWeeklyEvent = useMemo(function () {
977
+ var _events2, _events3, _events4;
978
+ var isAllDay = (_events2 = events) === null || _events2 === void 0 ? void 0 : _events2.some(function (item) {
979
+ return item.isAllDay;
980
+ });
981
+ if (isAllDay && ((_events3 = events) === null || _events3 === void 0 ? void 0 : _events3.length) > 1) {
982
+ return React.createElement(React.Fragment, null, React.createElement(WeeklyEvent, {
983
+ event: events[0],
984
+ onOpenDetail: onOpenDetail,
985
+ onEventDetail: onEventDetail
986
+ }), React.createElement("div", {
987
+ className: styles['see-more']
988
+ }, React.createElement(CustomTooltip, {
989
+ placement: 'bottom',
990
+ title: React.createElement("div", {
991
+ className: styles['calendar-tooltip']
992
+ }, events.slice(1, events.length).map(function (event, index) {
993
+ return React.createElement(WeeklyEvent, {
994
+ event: event,
995
+ onOpenDetail: onOpenDetail,
996
+ onEventDetail: onEventDetail,
997
+ key: index + 1
998
+ });
999
+ }))
1000
+ }, "+", Math.max(events.length - 1, 0), " More")));
1001
+ }
1002
+ return (_events4 = events) === null || _events4 === void 0 ? void 0 : _events4.map(function (event, index) {
1003
+ return React.createElement(WeeklyEvent, {
1004
+ key: index,
1005
+ event: event,
1006
+ onOpenDetail: onOpenDetail,
1007
+ onEventDetail: onEventDetail
1008
+ });
1009
+ });
1010
+ }, [events]);
1011
+ return React.createElement("div", {
1012
+ className: styles['weekly-calendar__cell'] + " " + (isToday ? styles['bg-info/10'] : styles['bg-white']),
1013
+ onClick: handleOpenCreateModal
1014
+ }, renderWeeklyEvent);
1015
+ };
1016
+
1017
+ dayjs.extend(isBetween);
1018
+ var getEventAllDay = function getEventAllDay(events, targetDate) {
1019
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
1020
+ var currentDate = targetDate.add(index, 'day');
1021
+ acc[day] = {
1022
+ events: events.reduce(function (filteredEvents, event) {
1023
+ if (dayjs(event.startDate).isSame(currentDate.startOf('day')) && checkIsAllday(dayjs(event.startDate), dayjs(event.endDate))) {
1024
+ filteredEvents.push(_extends({}, event, {
1025
+ isAllDay: true
1026
+ }));
1027
+ }
1028
+ return filteredEvents;
1029
+ }, []),
1030
+ date: currentDate
1031
+ };
1032
+ return acc;
1033
+ }, {});
1034
+ };
1035
+ var getEventsOfDay = function getEventsOfDay(events, targetHour) {
1036
+ return daysOfWeekKeys.reduce(function (acc, day, index) {
1037
+ var currentDate = targetHour.add(index, 'day');
1038
+ acc[day] = {
1039
+ events: events.filter(function (event) {
1040
+ return dayjs(event.startDate).isSame(currentDate, 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
1041
+ }),
1042
+ date: currentDate
1043
+ };
1044
+ return acc;
1045
+ }, {});
1046
+ };
1047
+ var WeeklyCalendar = function WeeklyCalendar(_ref) {
1048
+ var startDate = _ref.startDate,
1049
+ endDate = _ref.endDate,
1050
+ events = _ref.events,
1051
+ norms = _ref.norms,
1052
+ showWeeklyNorm = _ref.showWeeklyNorm,
1053
+ onOpenDetail = _ref.onOpenDetail,
1054
+ onOpenCreate = _ref.onOpenCreate,
1055
+ onEventDetail = _ref.onEventDetail,
1056
+ loading = _ref.loading;
1057
+ var getTableColumns = function getTableColumns() {
1058
+ var _calculateNormOfWeek = calculateNormOfWeek(norms, events, startDate, endDate),
1059
+ normOfWeek = _calculateNormOfWeek.normOfWeek,
1060
+ totalNorm = _calculateNormOfWeek.totalNorm;
1061
+ var hourColumn = {
1062
+ title: React.createElement("div", {
1063
+ className: styles['weekly-calendar__title']
1064
+ }, showWeeklyNorm && React.createElement(React.Fragment, null, React.createElement("div", null, "Weekly Norm"), React.createElement("div", {
1065
+ className: clsx$1(normOfWeek > totalNorm && styles['!text-error'])
1066
+ }, normOfWeek + "/" + totalNorm))),
1067
+ dataIndex: 'hour',
1068
+ key: 'hour',
1069
+ width: 1,
1070
+ render: function render(value) {
1071
+ return React.createElement("div", null, value);
1072
+ }
1073
+ };
1074
+ var dayColumns = Object.values(DAYS_OF_WEEK).map(function (day, index) {
1075
+ return {
1076
+ title: React.createElement("div", {
1077
+ className: styles['weekly-calendar__title']
1078
+ }, React.createElement("div", null, day.slice(0, 3)), React.createElement("div", null, dayjs(startDate).add(index, 'day').format('DD/MM'))),
1079
+ dataIndex: day,
1080
+ key: day,
1081
+ render: function render(value) {
1082
+ return React.createElement(WeeklyCell, {
1083
+ key: index,
1084
+ events: value.events,
1085
+ date: value.date,
1086
+ onOpenDetail: onOpenDetail,
1087
+ onOpenCreate: onOpenCreate,
1088
+ onEventDetail: onEventDetail
1089
+ });
1090
+ }
1091
+ };
1092
+ });
1093
+ return [hourColumn].concat(dayColumns);
1094
+ };
1095
+ var getTableData = function getTableData() {
1096
+ var data = [];
1097
+ data.push(_extends({
1098
+ id: -1,
1099
+ hour: 'All day'
1100
+ }, getEventAllDay(events, startDate)));
1101
+ for (var i = 0; i < HOURS_PER_DAY; i++) {
1102
+ var targetHour = dayjs(startDate).add(i, 'hour');
1103
+ data.push(_extends({
1104
+ id: i,
1105
+ hour: targetHour.format('HH:mm')
1106
+ }, getEventsOfDay(events, targetHour)));
1107
+ }
1108
+ return data;
1109
+ };
1110
+ return React.createElement(Table, {
1111
+ rowKey: function rowKey(record) {
1112
+ return record.id;
1113
+ },
1114
+ columns: getTableColumns(),
1115
+ dataSource: getTableData(),
1116
+ pagination: false,
1117
+ rowHoverable: false,
1118
+ className: styles['weekly-calendar'],
1119
+ loading: loading
1120
+ });
1121
+ };
1122
+
1123
+ var _getIconEvent$1;
1124
+ var getIconEvent$1 = (_getIconEvent$1 = {}, _getIconEvent$1[EVENT_TYPES.TEACHING] = React.createElement(Book, null), _getIconEvent$1[EVENT_TYPES.BUSY] = React.createElement(CalendarDelete, null), _getIconEvent$1[EVENT_TYPES.TIME_OFF] = React.createElement(Star, null), _getIconEvent$1[EVENT_TYPES.OTHER] = React.createElement(CalendarAccept, null), _getIconEvent$1);
1125
+ var calculateBoxSize$1 = function calculateBoxSize(startTime, endTime) {
899
1126
  var minutes = dayjs(startTime).minute();
900
1127
  var diffMinutes = dayjs(endTime).diff(startTime, 'hour', true);
901
1128
  return {
@@ -908,7 +1135,7 @@ var LMSWeeklyEvent = function LMSWeeklyEvent(_ref) {
908
1135
  onOpenDetail = _ref.onOpenDetail,
909
1136
  onEventDetail = _ref.onEventDetail;
910
1137
  var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
911
- var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate),
1138
+ var _calculateBoxSize = calculateBoxSize$1(event.startDate, event.endDate),
912
1139
  width = _calculateBoxSize.width,
913
1140
  left = _calculateBoxSize.left;
914
1141
  return React.createElement("div", {
@@ -930,7 +1157,7 @@ var LMSWeeklyEvent = function LMSWeeklyEvent(_ref) {
930
1157
  className: clsx$1(styles['weekly-event--collapse'])
931
1158
  }, React.createElement("div", {
932
1159
  className: styles.flex
933
- }, getIconEvent[event.type]), React.createElement("div", {
1160
+ }, getIconEvent$1[event.type]), React.createElement("div", {
934
1161
  className: styles['weekly-event__title']
935
1162
  }, React.createElement(CustomTooltip, {
936
1163
  title: event.title
@@ -1070,7 +1297,7 @@ var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
1070
1297
  id: i,
1071
1298
  hour: React.createElement("div", null, React.createElement("div", {
1072
1299
  className: styles['lms-calendar__tablet']
1073
- }, Object.values(DAYS_OF_WEEK)[i]), React.createElement("div", {
1300
+ }, Object.values(DAYS_OF_WEEK_SHORTEN)[i]), React.createElement("div", {
1074
1301
  className: styles['lms-calendar__tablet']
1075
1302
  }, dayjs(startDate).add(i, 'day').format('DD')))
1076
1303
  }, getEventsOfHour(events, targetHour)));
@@ -1090,6 +1317,51 @@ var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
1090
1317
  });
1091
1318
  };
1092
1319
 
1320
+ function LMSModeWeeklyCalendar(_ref) {
1321
+ var startDate = _ref.startDate,
1322
+ endDate = _ref.endDate,
1323
+ events = _ref.events,
1324
+ norms = _ref.norms,
1325
+ _ref$showWeeklyNorm = _ref.showWeeklyNorm,
1326
+ showWeeklyNorm = _ref$showWeeklyNorm === void 0 ? false : _ref$showWeeklyNorm,
1327
+ onOpenDetail = _ref.onOpenDetail,
1328
+ onOpenCreate = _ref.onOpenCreate,
1329
+ onEventDetail = _ref.onEventDetail,
1330
+ loading = _ref.loading;
1331
+ var _useState = useState(window.innerWidth),
1332
+ windowWidth = _useState[0],
1333
+ setWindowWidth = _useState[1];
1334
+ useEffect(function () {
1335
+ var handleResize = function handleResize() {
1336
+ setWindowWidth(window.innerWidth);
1337
+ };
1338
+ window.addEventListener('resize', handleResize);
1339
+ return function () {
1340
+ window.removeEventListener('resize', handleResize);
1341
+ };
1342
+ }, []);
1343
+ return React.createElement(React.Fragment, null, windowWidth > 1024 ? React.createElement(WeeklyCalendar, {
1344
+ startDate: startDate,
1345
+ endDate: endDate,
1346
+ events: events,
1347
+ norms: norms,
1348
+ showWeeklyNorm: showWeeklyNorm,
1349
+ onOpenDetail: onOpenDetail,
1350
+ onOpenCreate: onOpenCreate,
1351
+ onEventDetail: onEventDetail,
1352
+ loading: loading
1353
+ }) : React.createElement(LMSWeeklyCalendar, {
1354
+ startDate: startDate,
1355
+ endDate: endDate,
1356
+ events: events,
1357
+ norms: norms,
1358
+ onOpenDetail: onOpenDetail,
1359
+ onOpenCreate: onOpenCreate,
1360
+ onEventDetail: onEventDetail,
1361
+ loading: loading
1362
+ }));
1363
+ }
1364
+
1093
1365
  var SAPPCalendar = function SAPPCalendar(_ref) {
1094
1366
  var teacherName = _ref.teacherName,
1095
1367
  events = _ref.events,
@@ -1190,10 +1462,11 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
1190
1462
  onOpenCreate: onOpenCreate,
1191
1463
  onEventDetail: onEventDetail,
1192
1464
  loading: loading
1193
- }), calendarMode === 'week' && React.createElement(LMSWeeklyCalendar, {
1465
+ }), calendarMode === 'week' && React.createElement(LMSModeWeeklyCalendar, {
1194
1466
  startDate: startDate,
1195
1467
  endDate: endDate,
1196
1468
  events: splittedEvents,
1469
+ showWeeklyNorm: showWeeklyNorm,
1197
1470
  norms: norms,
1198
1471
  onOpenDetail: onOpenDetail,
1199
1472
  onOpenCreate: onOpenCreate,