react-weekly-planning 1.0.34 → 1.0.35

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 (36) hide show
  1. package/index.js +70 -70
  2. package/package.json +1 -1
  3. package/babel.config.js +0 -1
  4. package/components/AddTask/index.tsx +0 -43
  5. package/components/CalendarForWeek.tsx +0 -233
  6. package/components/CalendarForday.tsx +0 -131
  7. package/components/DayContainer/index.tsx +0 -36
  8. package/components/GroupContainer/index.tsx +0 -42
  9. package/components/GroupsHeadContainer/index.tsx +0 -19
  10. package/components/SumHoursContainer/index.tsx +0 -39
  11. package/components/SumHoursHead/index.tsx +0 -22
  12. package/components/TaskContainer/index.tsx +0 -86
  13. package/components/TaskList/index.tsx +0 -13
  14. package/contexts/CalendarContext.tsx +0 -38
  15. package/definitions/index.ts +0 -1084
  16. package/hooks/useCalendarDateState.ts +0 -45
  17. package/index.tsx +0 -77
  18. package/jest.config.js +0 -9
  19. package/jest.config.ts +0 -10
  20. package/lib/slyles.ts +0 -25
  21. package/lib/utils.ts +0 -976
  22. /package/{components → dist/components}/AddTask/index.js +0 -0
  23. /package/{components → dist/components}/CalendarForWeek.js +0 -0
  24. /package/{components → dist/components}/CalendarForday.js +0 -0
  25. /package/{components → dist/components}/DayContainer/index.js +0 -0
  26. /package/{components → dist/components}/GroupContainer/index.js +0 -0
  27. /package/{components → dist/components}/GroupsHeadContainer/index.js +0 -0
  28. /package/{components → dist/components}/SumHoursContainer/index.js +0 -0
  29. /package/{components → dist/components}/SumHoursHead/index.js +0 -0
  30. /package/{components → dist/components}/TaskContainer/index.js +0 -0
  31. /package/{components → dist/components}/TaskList/index.js +0 -0
  32. /package/{contexts → dist/contexts}/CalendarContext.js +0 -0
  33. /package/{definitions → dist/definitions}/index.js +0 -0
  34. /package/{hooks → dist/hooks}/useCalendarDateState.js +0 -0
  35. /package/{lib → dist/lib}/slyles.js +0 -0
  36. /package/{lib → dist/lib}/utils.js +0 -0
package/index.js CHANGED
@@ -1,70 +1,70 @@
1
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import "./style.css";
3
- import CalendarForWeek from "./components/CalendarForWeek";
4
- import CalendarForDay from "./components/CalendarForday";
5
- /**
6
- * Calendar component to display tasks and groups in a weekly view.
7
- *
8
- * @param {CalendarPropsType} props - The props for the Calendar component.
9
- * @param {number} [props.weekOffset] - Offset for the week (e.g., -7 for last week, 0 for current week, 7 for next week).
10
- * @param {GroupFeildsType[]} props.groups - Array of group data to be displayed in the calendar.
11
- * @param {string} [props.className] - Additional class names for the calendar component.
12
- * @param {React.CSSProperties} [props.style] - Additional styles for the calendar component.
13
- * @param {Date} props.date - The current date to display in the calendar.
14
- * @param {(currentGroup: { currentGroup: GroupFeildsType }) => React.ReactNode} [props.groupRender] - Custom render function for a group.
15
- * @param {({ dayIndex, day, dayOfTheMonth, dayMonth, dayYear }: { dayIndex: number; day: string; dayOfTheMonth: number; dayMonth: string; dayYear: number }) => React.ReactNode} [props.dayRender] - Custom render function for a day.
16
- * @param {(currentTask: { currentTask: TaskFeildsType }) => React.ReactNode} [props.taskRender] - Custom render function for a task.
17
- * @param {React.CSSProperties} [props.rowsStyle] - Additional styles for the rows.
18
- * @param {string} [props.rowsClassName] - Additional class names for the rows.
19
- * @param {React.CSSProperties} [props.groupsColsStyle] - Additional styles for the group columns.
20
- * @param {string} [props.groupsColsClassName] - Additional class names for the group columns.
21
- * @param {React.CSSProperties} [props.daysColsStyle] - Additional styles for the day columns.
22
- * @param {string} [props.daysColsClassName] - Additional class names for the day columns.
23
- * @param {string} [props.addTaskClassName] - Additional class names for the add-task button.
24
- * @param {React.CSSProperties} [props.addTaskStyle] - Additional styles for the add-task button.
25
- * @param {string} [props.groupContainerClassName] - Additional class names for the group containers.
26
- * @param {React.CSSProperties} [props.groupContainerStyle] - Additional styles for the group containers.
27
- * @param {string} [props.dayClassName] - Additional class names for the day elements.
28
- * @param {React.CSSProperties} [props.dayStyle] - Additional styles for the day elements.
29
- * @param {React.CSSProperties} [props.taskContainerStyle] - Additional styles for the task container.
30
- * @param {string} [props.taskContainerClassName] - Additional class names for the task container.
31
- * @param {React.CSSProperties} [props.groupHeadContainerStyle] - Additional styles for the group header container.
32
- * @param {string} [props.groupHeadContainerClassName] - Additional class names for the group header container.
33
- * @param {React.CSSProperties} [props.sumHoursContainerStyle] - Additional styles for the sum-of-hours container.
34
- * @param {string} [props.sumHoursContainerClassName] - Additional class names for the sum-of-hours container.
35
- * @param {React.CSSProperties} [props.sumHoursHeadStyle] - Additional styles for the sum-of-hours header.
36
- * @param {string} [props.sumHoursHeadClassName] - Additional class names for the sum-of-hours header.
37
- * @param {(currentGroup: GroupFeildsType, dayInfo: dayInfoType) => void} [props.handleAddTask] - Handler function for adding a new task.
38
- * @param {({ currentGroup, dayInfo }: { currentGroup: GroupFeildsType; dayInfo: dayInfoType }) => React.ReactNode} [props.addTaskRender] - Custom render function for adding a task.
39
- * @param {TasksType} props.tasks - Array of tasks to be displayed in the calendar.
40
- * @param {(event: React.DragEvent<HTMLDivElement>, currentTask: TaskFeildsType) => void} [props.handleDragTask] - Handler function for dragging a task.
41
- * @param {(event: React.DragEvent<HTMLDivElement>, taskStart: number, taskEnd: number, taskDate: Date, groupId: string, dayIndex: number, newTask: TaskFeildsType, newTasks: TasksType) => void} [props.handleDropTask] - Handler function for dropping a task.
42
- * @param {(event: React.DragEvent<HTMLDivElement>) => void} [props.handleDragTaskEnd] - Handler function for ending the drag of a task.
43
- * @param {() => React.ReactNode} [props.groupsHeadRender] - Custom render function for the groups header.
44
- * @param {({
45
- * groupId,
46
- * tasks,
47
- * weekOffset,
48
- * calendarDate,
49
- * sumHoursByGroups
50
- * }: {
51
- * groupId: string;
52
- * tasks: TasksType;
53
- * weekOffset: number;
54
- * calendarDate: Date;
55
- * sumHoursByGroups: number;
56
- * }) => React.ReactNode} [props.sumHoursRender] - Custom render function for the sum of hours.
57
- * @param {() => React.ReactNode} [props.sumHoursHeadRender] - Custom render function for the sum-of-hours header.
58
- * @param {(currentTask: TaskFeildsType) => void} [props.handleClickTask] - Handler function for clicking a task.
59
- * @param {(currentGroup: GroupFeildsType) => void} [props.handleClickGroup] - Handler function for clicking a group.
60
- * @param {0|1|2|3|4|5|6} [props.dayOffset] - Offset index for the day column (0 = first day of week, …, 6 = last day).
61
- * @param {React.CSSProperties} [props.dayColsStyle] - Additional styles for the day columns.
62
- * @param {string} [props.dayColsClassName] - Additional class names for the day columns.
63
- * @param {React.CSSProperties} [props.hoursColsStyle] - Additional styles for the hours columns.
64
- * @param {string} [props.hoursColsClassName] - Additional class names for the hours columns.
65
- */
66
- const Calendar = (props) => {
67
- return (_jsx(_Fragment, { children: props.scope === "day" ? _jsx(CalendarForDay, Object.assign({}, props)) : _jsx(CalendarForWeek, Object.assign({}, props)) }));
68
- };
69
- export default Calendar;
70
- export { CalendarForDay };
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import "./style.css";
3
+ import CalendarForWeek from "./components/CalendarForWeek";
4
+ import CalendarForDay from "./components/CalendarForday";
5
+ /**
6
+ * Calendar component to display tasks and groups in a weekly view.
7
+ *
8
+ * @param {CalendarPropsType} props - The props for the Calendar component.
9
+ * @param {number} [props.weekOffset] - Offset for the week (e.g., -7 for last week, 0 for current week, 7 for next week).
10
+ * @param {GroupFeildsType[]} props.groups - Array of group data to be displayed in the calendar.
11
+ * @param {string} [props.className] - Additional class names for the calendar component.
12
+ * @param {React.CSSProperties} [props.style] - Additional styles for the calendar component.
13
+ * @param {Date} props.date - The current date to display in the calendar.
14
+ * @param {(currentGroup: { currentGroup: GroupFeildsType }) => React.ReactNode} [props.groupRender] - Custom render function for a group.
15
+ * @param {({ dayIndex, day, dayOfTheMonth, dayMonth, dayYear }: { dayIndex: number; day: string; dayOfTheMonth: number; dayMonth: string; dayYear: number }) => React.ReactNode} [props.dayRender] - Custom render function for a day.
16
+ * @param {(currentTask: { currentTask: TaskFeildsType }) => React.ReactNode} [props.taskRender] - Custom render function for a task.
17
+ * @param {React.CSSProperties} [props.rowsStyle] - Additional styles for the rows.
18
+ * @param {string} [props.rowsClassName] - Additional class names for the rows.
19
+ * @param {React.CSSProperties} [props.groupsColsStyle] - Additional styles for the group columns.
20
+ * @param {string} [props.groupsColsClassName] - Additional class names for the group columns.
21
+ * @param {React.CSSProperties} [props.daysColsStyle] - Additional styles for the day columns.
22
+ * @param {string} [props.daysColsClassName] - Additional class names for the day columns.
23
+ * @param {string} [props.addTaskClassName] - Additional class names for the add-task button.
24
+ * @param {React.CSSProperties} [props.addTaskStyle] - Additional styles for the add-task button.
25
+ * @param {string} [props.groupContainerClassName] - Additional class names for the group containers.
26
+ * @param {React.CSSProperties} [props.groupContainerStyle] - Additional styles for the group containers.
27
+ * @param {string} [props.dayClassName] - Additional class names for the day elements.
28
+ * @param {React.CSSProperties} [props.dayStyle] - Additional styles for the day elements.
29
+ * @param {React.CSSProperties} [props.taskContainerStyle] - Additional styles for the task container.
30
+ * @param {string} [props.taskContainerClassName] - Additional class names for the task container.
31
+ * @param {React.CSSProperties} [props.groupHeadContainerStyle] - Additional styles for the group header container.
32
+ * @param {string} [props.groupHeadContainerClassName] - Additional class names for the group header container.
33
+ * @param {React.CSSProperties} [props.sumHoursContainerStyle] - Additional styles for the sum-of-hours container.
34
+ * @param {string} [props.sumHoursContainerClassName] - Additional class names for the sum-of-hours container.
35
+ * @param {React.CSSProperties} [props.sumHoursHeadStyle] - Additional styles for the sum-of-hours header.
36
+ * @param {string} [props.sumHoursHeadClassName] - Additional class names for the sum-of-hours header.
37
+ * @param {(currentGroup: GroupFeildsType, dayInfo: dayInfoType) => void} [props.handleAddTask] - Handler function for adding a new task.
38
+ * @param {({ currentGroup, dayInfo }: { currentGroup: GroupFeildsType; dayInfo: dayInfoType }) => React.ReactNode} [props.addTaskRender] - Custom render function for adding a task.
39
+ * @param {TasksType} props.tasks - Array of tasks to be displayed in the calendar.
40
+ * @param {(event: React.DragEvent<HTMLDivElement>, currentTask: TaskFeildsType) => void} [props.handleDragTask] - Handler function for dragging a task.
41
+ * @param {(event: React.DragEvent<HTMLDivElement>, taskStart: number, taskEnd: number, taskDate: Date, groupId: string, dayIndex: number, newTask: TaskFeildsType, newTasks: TasksType) => void} [props.handleDropTask] - Handler function for dropping a task.
42
+ * @param {(event: React.DragEvent<HTMLDivElement>) => void} [props.handleDragTaskEnd] - Handler function for ending the drag of a task.
43
+ * @param {() => React.ReactNode} [props.groupsHeadRender] - Custom render function for the groups header.
44
+ * @param {({
45
+ * groupId,
46
+ * tasks,
47
+ * weekOffset,
48
+ * calendarDate,
49
+ * sumHoursByGroups
50
+ * }: {
51
+ * groupId: string;
52
+ * tasks: TasksType;
53
+ * weekOffset: number;
54
+ * calendarDate: Date;
55
+ * sumHoursByGroups: number;
56
+ * }) => React.ReactNode} [props.sumHoursRender] - Custom render function for the sum of hours.
57
+ * @param {() => React.ReactNode} [props.sumHoursHeadRender] - Custom render function for the sum-of-hours header.
58
+ * @param {(currentTask: TaskFeildsType) => void} [props.handleClickTask] - Handler function for clicking a task.
59
+ * @param {(currentGroup: GroupFeildsType) => void} [props.handleClickGroup] - Handler function for clicking a group.
60
+ * @param {0|1|2|3|4|5|6} [props.dayOffset] - Offset index for the day column (0 = first day of week, …, 6 = last day).
61
+ * @param {React.CSSProperties} [props.dayColsStyle] - Additional styles for the day columns.
62
+ * @param {string} [props.dayColsClassName] - Additional class names for the day columns.
63
+ * @param {React.CSSProperties} [props.hoursColsStyle] - Additional styles for the hours columns.
64
+ * @param {string} [props.hoursColsClassName] - Additional class names for the hours columns.
65
+ */
66
+ const Calendar = (props) => {
67
+ return (_jsx(_Fragment, { children: props.scope === "day" ? _jsx(CalendarForDay, Object.assign({}, props)) : _jsx(CalendarForWeek, Object.assign({}, props)) }));
68
+ };
69
+ export default Calendar;
70
+ export { CalendarForDay };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-weekly-planning",
3
- "version": "1.0.34",
3
+ "version": "1.0.35",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "jest --env=jsdom",
package/babel.config.js DELETED
@@ -1 +0,0 @@
1
- module.exports = {presets: ['@babel/preset-env']}
@@ -1,43 +0,0 @@
1
- import { memo } from "react";
2
- import { AddTaskPropsType } from "../../definitions";
3
-
4
- const AddTask = ({
5
-
6
- currentGroup,
7
- handleAddTask,
8
- addTaskRender,
9
- dayInfo,
10
- addTaskStyle,
11
- addTaskClassName,
12
-
13
- }: AddTaskPropsType) => {
14
- if (addTaskRender) {
15
- return (
16
- <>
17
- {addTaskRender({
18
- currentGroup,
19
- dayInfo,
20
- })}
21
- </>
22
- );
23
- }
24
-
25
- const handleClick = () => {
26
-
27
- if (!handleAddTask) return;
28
- handleAddTask(currentGroup, dayInfo);
29
-
30
- };
31
-
32
- return (
33
- <div
34
- onClick={handleClick}
35
- style={addTaskStyle}
36
- className={`addPlanStyle ${addTaskClassName}`}
37
- >
38
- +
39
- </div>
40
- );
41
- };
42
-
43
- export default memo(AddTask);
@@ -1,233 +0,0 @@
1
-
2
- import {
3
- CalendarPropsType,
4
- CalendarTablePropsType,
5
- TaskFeildsType,
6
- } from "../definitions";
7
- import GroupContainer from "./GroupContainer";
8
- import GroupsHeadContainer from "./GroupsHeadContainer";
9
-
10
- import { groupTdStyle, theadTrStyle } from "../lib/slyles";
11
- import DayContainer from "./DayContainer";
12
- import SumHoursHead from "./SumHoursHead";
13
-
14
- import {
15
- compareWeekOffset,
16
- getSessionStorageRecordForDragAndDrop,
17
- saveTasksToLocalStorage,
18
- sumHoursByGroups,
19
- updateOffsetWithDateCalendar,
20
- } from "../lib/utils";
21
-
22
- import TaskContainer from "./TaskContainer";
23
-
24
- import AddTask from "./AddTask";
25
- import SumHoursContainer from "./SumHoursContainer";
26
- import { memo, useEffect } from "react";
27
- import useCalendarDateState from "../hooks/useCalendarDateState";
28
-
29
- function CalendarForWeek(props: CalendarTablePropsType) {
30
-
31
-
32
- const { dailyHours, weekDays } = useCalendarDateState(
33
- props.date,
34
- props.weekOffset,
35
- props.timeZone
36
- );
37
-
38
- const handleDragOver = (event: React.DragEvent<HTMLTableCellElement>) => {
39
- event.preventDefault();
40
- };
41
-
42
- useEffect(() => {
43
- saveTasksToLocalStorage(props.tasks);
44
- }, [props.tasks]);
45
-
46
- return (
47
- <table
48
- className={`planningCalendar ${props.className}`}
49
- style={{ ...props.style }}
50
- >
51
- <thead>
52
- <tr
53
- className={`${props.rowsClassName}`}
54
- style={{ ...theadTrStyle, ...props.rowsStyle }}
55
- key=""
56
- >
57
- <th
58
- className={`dayTh ${props.groupsColsClassName}`}
59
- style={{ ...props.groupsColsStyle }}
60
- >
61
- <GroupsHeadContainer
62
- className={`${props.groupHeadContainerClassName}`}
63
- style={props.groupHeadContainerStyle}
64
- groupsHeadRender={props.groupsHeadRender}
65
- />
66
- </th>
67
- {weekDays.map((day, i) => (
68
- <th
69
- key={i}
70
- className={`${props.daysColsClassName}`}
71
- style={{ ...props.daysColsStyle }}
72
- >
73
- <DayContainer
74
- style={props.dayStyle}
75
- className={props.dayClassName}
76
- dayIndex={i}
77
- dayRender={props.dayRender}
78
- day={day.day}
79
- dayOfTheMonth={day.dayOfTheMonth}
80
- dayMonth={day.dayMonth}
81
- dayYear={day.dayYear}
82
- />
83
- </th>
84
- ))}
85
- <th
86
- className={`totalTh ${props.hoursColsClassName}`}
87
- style={props.hoursColsStyle}
88
- >
89
- <SumHoursHead
90
- className={props.sumHoursHeadClassName}
91
- style={props.sumHoursHeadStyle}
92
- sumHoursHeadRender={props.sumHoursHeadRender}
93
- />
94
- </th>
95
- </tr>
96
- </thead>
97
- <tbody>
98
- {props.groups?.map((group, i) => (
99
- <tr
100
- key={`${i} tr`}
101
- className={`${props.rowsClassName}`}
102
- style={{ ...props.rowsStyle }}
103
- >
104
- <td
105
- className={`${props.groupsColsClassName}`}
106
- key={i}
107
- style={{ ...groupTdStyle, ...props.groupsColsStyle }}
108
- >
109
- <GroupContainer
110
- style={props.groupContainerStyle}
111
- className={props.groupContainerClassName}
112
- groupRender={props.groupRender}
113
- currentGroup={group}
114
- handleClickGroup={props.handleClickGroup}
115
- />
116
- </td>
117
- {dailyHours.map((_, positionDay) => (
118
- <td
119
- key={`td-${group.id}day-i${positionDay}`}
120
- onDragOver={handleDragOver}
121
- onDrop={(event) => {
122
- if (!props.handleDropTask || !props.tasks) return;
123
- const dropInfo = getSessionStorageRecordForDragAndDrop(
124
- props.tasks,
125
- positionDay,
126
- group.id
127
- );
128
- if (!dropInfo) return;
129
- props.handleDropTask(
130
- event,
131
- dropInfo.taskDropStart,
132
- dropInfo.taskDropEnd,
133
- dropInfo.taskDropDate,
134
- group.id,
135
- positionDay,
136
- dropInfo.newTask,
137
- dropInfo.newTasks
138
- );
139
- }}
140
- id={`td-${group.id}day-i`}
141
- className={props.dayColsClassName}
142
- style={props.dayColsStyle}
143
- >
144
- <div
145
- key={positionDay}
146
- style={{
147
- display: "flex",
148
- width: "100%",
149
- height: "100%",
150
- flexDirection: "column",
151
- padding: "5px",
152
- }}
153
- >
154
- <>
155
- {props.tasks
156
- .map((task, taskKey) => {
157
- if (
158
- task.dayIndex === positionDay &&
159
- task.groupId === group.id &&
160
- compareWeekOffset(
161
- props.date,
162
- props.weekOffset || 0,
163
- task.taskDate,
164
- props.timeZone
165
- )
166
- ) {
167
- return (
168
- <TaskContainer
169
- key={`${taskKey} task`}
170
- handleDragTask={props.handleDragTask}
171
- taskRender={props.taskRender}
172
- handleDragTaskEnd={props.handleDragTaskEnd}
173
- style={props.taskContainerStyle}
174
- className={`${props.taskContainerClassName}`}
175
- currentTask={task}
176
- handleClickTask={props.handleClickTask}
177
- />
178
- );
179
- } else return "";
180
- })}
181
- </>
182
-
183
- <AddTask
184
- addTaskStyle={props.addTaskStyle}
185
- addTaskClassName={props.addTaskClassName}
186
- currentGroup={group}
187
- dayInfo={dailyHours[positionDay]}
188
- addTaskRender={props.addTaskRender}
189
- handleAddTask={props.handleAddTask}
190
- />
191
- </div>
192
- </td>
193
- ))}
194
- <td
195
- key={`${i}sumHours`}
196
- style={props.hoursColsStyle}
197
- className={props.hoursColsClassName}
198
- >
199
- <SumHoursContainer
200
- groupId={group.id}
201
- tasks={props.tasks}
202
- weekOffset={props.weekOffset || 0}
203
- calendarDate={props.date}
204
- sumHoursRender={props.sumHoursRender}
205
- sumHoursByGroups={sumHoursByGroups(
206
- group.id,
207
- props.tasks,
208
- props.weekOffset || 0,
209
- props.date,
210
- props.timeZone
211
- )}
212
- className={props.sumHoursContainerClassName}
213
- style={props.sumHoursContainerStyle}
214
- />
215
- </td>
216
- </tr>
217
- ))}
218
- </tbody>
219
- </table>
220
- );
221
- }
222
-
223
- export default memo(
224
- CalendarForWeek,
225
- (
226
- prevProps: Readonly<CalendarPropsType>,
227
- nextProps: Readonly<CalendarPropsType>
228
- ) =>
229
- prevProps.tasks === nextProps.tasks &&
230
- prevProps.date === nextProps.date &&
231
- prevProps.groups === nextProps.groups &&
232
- prevProps.weekOffset === nextProps.weekOffset
233
- );
@@ -1,131 +0,0 @@
1
-
2
- import "../style.css";
3
- import { memo, useEffect } from "react";
4
-
5
- import { CalendarPropsType, CalendarTablePropsType } from "../definitions";
6
- import { compareWeekOffset, saveTasksToLocalStorage } from "../lib/utils";
7
- import useCalendarDateState from "../hooks/useCalendarDateState";
8
-
9
- import AddTask from "./AddTask";
10
- import TaskContainer from "./TaskContainer";
11
- import GroupContainer from "./GroupContainer";
12
- import DayContainer from "./DayContainer";
13
-
14
- function CalendarForDay(props: CalendarTablePropsType) {
15
- const { dailyHours, weekDays } = useCalendarDateState(
16
- props.date,
17
- props.weekOffset,
18
- props.timeZone
19
- );
20
-
21
- useEffect(() => {
22
- saveTasksToLocalStorage(props.tasks);
23
- }, [props.tasks]);
24
-
25
- const currentDay = weekDays[props.dayOffset || 0];
26
- const currentDailyHours = dailyHours[props.dayOffset || 0];
27
-
28
- return (
29
- <div
30
- className={` CalendarTableForDay ${props.className}`}
31
- style={{ ...props.style }}
32
- >
33
- {currentDay && (
34
- <DayContainer
35
- style={props.dayStyle}
36
- className={props.dayClassName}
37
- dayIndex={props.dayOffset || 0}
38
- dayRender={props.dayRender}
39
- day={currentDay.day}
40
- dayOfTheMonth={currentDay.dayOfTheMonth}
41
- dayMonth={currentDay.dayMonth}
42
- dayYear={currentDay.dayYear}
43
- />
44
- )}
45
- <div className={`CalendarTableForDayTasksContainer`}>
46
- {currentDailyHours &&
47
- props.groups.map((group, i) => {
48
- return (
49
- <div
50
- key={i}
51
- style={{
52
- width: "100%",
53
- height: "auto",
54
- padding: "5px",
55
- borderBottom: "1.5px solid #0f52737e",
56
- borderRight: "0.74px solid rgba(198, 219, 225, 0.68)",
57
- borderLeft: "0.74px solid rgba(198, 219, 225, 0.68)",
58
- ...props.rowsStyle,
59
- }}
60
- className={`CalendarTableForDayRow ${props.rowsClassName}`}
61
- >
62
- <div
63
- style={{
64
- width: "auto",
65
- height: "auto",
66
- ...props.groupsColsStyle,
67
- }}
68
- className={props.groupsColsClassName}
69
- >
70
- <GroupContainer
71
- style={props.groupContainerStyle}
72
- className={props.groupContainerClassName}
73
- groupRender={props.groupRender}
74
- currentGroup={group}
75
- handleClickGroup={props.handleClickGroup}
76
- />
77
- </div>
78
- <div className="CalendarTableForDayGroupTasks">
79
- {props.tasks.map((task, taskKey) => {
80
- if (
81
- task.dayIndex === (props.dayOffset || 0) &&
82
- task.groupId === group.id &&
83
- compareWeekOffset(
84
- props.date,
85
- props.weekOffset || 0,
86
- task.taskDate,
87
- props.timeZone
88
- )
89
- ) {
90
- return (
91
- <TaskContainer
92
- key={`${taskKey} task`}
93
- handleDragTask={props.handleDragTask}
94
- taskRender={props.taskRender}
95
- handleDragTaskEnd={props.handleDragTaskEnd}
96
- style={props.taskContainerStyle}
97
- className={`${props.taskContainerClassName}`}
98
- currentTask={task}
99
- handleClickTask={props.handleClickTask}
100
- />
101
- );
102
- } else return "";
103
- })}
104
- <AddTask
105
- addTaskStyle={props.addTaskStyle}
106
- addTaskClassName={props.addTaskClassName}
107
- currentGroup={group}
108
- dayInfo={currentDailyHours}
109
- addTaskRender={props.addTaskRender}
110
- handleAddTask={props.handleAddTask}
111
- />
112
- </div>
113
- </div>
114
- );
115
- })}
116
- </div>
117
- </div>
118
- );
119
- }
120
-
121
- export default memo(
122
- CalendarForDay,
123
- (
124
- prevProps: Readonly<CalendarPropsType>,
125
- nextProps: Readonly<CalendarPropsType>
126
- ) =>
127
- prevProps.tasks === nextProps.tasks &&
128
- prevProps.date === nextProps.date &&
129
- prevProps.groups === nextProps.groups &&
130
- prevProps.weekOffset === nextProps.weekOffset
131
- );
@@ -1,36 +0,0 @@
1
- import { memo } from "react";
2
- import { DayPropsType } from "../../definitions";
3
-
4
- const DayContainer = ({
5
- dayIndex,
6
- dayOfTheMonth,
7
- day,
8
- dayMonth,
9
- dayYear,
10
- dayRender,
11
- className,
12
- style,
13
- }: DayPropsType) => {
14
-
15
- if (dayRender) {
16
- return (
17
- <>
18
- {dayRender({
19
- dayIndex,
20
- day,
21
- dayOfTheMonth,
22
- dayMonth,
23
- dayYear,
24
- })}
25
- </>
26
- );
27
- }
28
-
29
- return (
30
- <div className={`${className}`} style={style}>
31
- {`${day}. ${dayOfTheMonth}`}
32
- </div>
33
- );
34
- };
35
-
36
- export default memo(DayContainer);
@@ -1,42 +0,0 @@
1
- import { memo } from "react";
2
- import { GroupPropsType } from "../../definitions";
3
- import { groupContainerStyle } from "../../lib/slyles";
4
-
5
- const GroupContainer = ({
6
- className,
7
- style,
8
- groupRender,
9
- currentGroup,
10
- handleClickGroup,
11
- }: GroupPropsType) => {
12
-
13
- if (groupRender) {
14
- return <>{groupRender({ currentGroup })}</>;
15
- }
16
-
17
- const handleClick = () => {
18
- if (!handleClickGroup) return;
19
- handleClickGroup(currentGroup);
20
- };
21
-
22
- return (
23
- <div
24
- onClick={handleClick}
25
- className={`${className}`}
26
- style={{ ...groupContainerStyle, ...style }}
27
- >
28
- {currentGroup.imageUrl && (
29
- <img
30
- width={30}
31
- height={30}
32
- src={currentGroup.imageUrl}
33
- alt="groupimg"
34
- />
35
- )}
36
-
37
- <label>{currentGroup.label && currentGroup.label}</label>
38
- </div>
39
- );
40
- };
41
-
42
- export default memo(GroupContainer);
@@ -1,19 +0,0 @@
1
- import { memo } from "react";
2
- import { GroupsHeadContainerPropsType } from "../../definitions";
3
-
4
- const GroupsHeadContainer = ({
5
- groupsHeadRender,
6
- style,
7
- className,
8
- }: GroupsHeadContainerPropsType) => {
9
- if (groupsHeadRender) {
10
- return <>{groupsHeadRender()}</>;
11
- }
12
- return (
13
- <div className={`${className}`} style={style}>
14
- WeeklyCalendar
15
- </div>
16
- );
17
- };
18
-
19
- export default memo(GroupsHeadContainer);