react-weekly-planning 1.0.17 → 1.0.19

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.
package/README.md CHANGED
@@ -11,6 +11,10 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
11
11
 
12
12
  ![Planning Screenshot](https://raw.githubusercontent.com/Yvesmorel/react-pweekly-planning/main/assets/planning-screenshot.webp)
13
13
 
14
+ [See the demo](https://react-weekly-planning-demo.vercel.app)
15
+
16
+ [Demo repository](https://github.com/Yvesmorel/react-weekly-planning-demo.git)
17
+
14
18
  #### `weekOffset`
15
19
 
16
20
  - **Description**: This prop sets the offset for the week being displayed in the calendar.
package/definition.txt CHANGED
@@ -316,3 +316,4 @@ export type SumHoursContainerPropsType = {
316
316
  style?: React.CSSProperties | undefined;
317
317
  className?: string;
318
318
  };
319
+ https://www.linkedin.com/in/patrick-aime?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app
@@ -310,6 +310,8 @@ export type TaskType = {
310
310
  dayIndex: number;
311
311
  /** Unique identifier for the task. */
312
312
  taskId: string;
313
+ /** This is a prop to save the date in local storage until a date of your choice */
314
+ taskExpiryDate?:Date
313
315
  };
314
316
 
315
317
  /**
package/index.js CHANGED
@@ -1,41 +1,27 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
1
12
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
13
  import "./style.css";
3
- import { getWeekDays, getDayHourly, calculerEcartSemaine, getSessionStorageRecordForDragAndDrop, sumHoursByGroups, millisecondsToDate, compareWeekOffset, } from "./lib/utils";
4
- const tableStyle = {
5
- width: "100%",
6
- height: "150px",
7
- borderRadius: "0.5rem",
8
- zIndex: 10,
9
- };
10
- const trStyle = {
14
+ import { getWeekDays, getDayHourly, calculerEcartSemaine, getSessionStorageRecordForDragAndDrop, sumHoursByGroups, millisecondsToDate, compareWeekOffset, saveTasksToLocalStorage, } from "./lib/utils";
15
+ const theadTrStyle = {
11
16
  color: "#0f5173",
12
17
  fontWeight: "300",
13
18
  position: "sticky",
14
19
  top: 0,
15
20
  };
16
- const thStyle = {
17
- color: "#0f5173",
18
- paddingLeft: "5px",
19
- };
20
- const weekDayThStyle = {};
21
- const totalThStyle = {
22
- width: "40px",
23
- textAlign: "right",
24
- paddingRight: "2px",
25
- };
26
- const tdStyle = {
21
+ const groupTdStyle = {
27
22
  height: "auto",
28
23
  width: "150px",
29
24
  };
30
- const tableTrStyle = {
31
- borderBottom: "1.5px solid #0f52737e",
32
- // backgroundColor: "#f2f8fb",
33
- padding: "2px",
34
- };
35
- const tableTdStyle = {
36
- borderLeft: "0.74px solid rgba(198, 219, 225, 0.68)",
37
- borderRight: "0.74px solid rgba(198, 219, 225, 0.68)",
38
- };
39
25
  const groupContainerStyle = {
40
26
  width: "100%",
41
27
  height: "100%",
@@ -99,7 +85,8 @@ const Calendar = ({ style, className, groups, weekOffset, date, groupRender, day
99
85
  const handleDragOver = (event) => {
100
86
  event.preventDefault();
101
87
  };
102
- return (_jsxs("table", { className: `${className}`, style: Object.assign(Object.assign({}, tableStyle), style), children: [_jsx("thead", { children: _jsxs("tr", { className: `${rowsClassName}`, style: Object.assign(Object.assign(Object.assign({}, trStyle), tableTrStyle), rowsStyle), children: [_jsx("th", { style: thStyle, children: _jsx(GroupsHeadContainer, { className: `${groupHeadContainerClassName}`, style: groupHeadContainerStyle, groupsHeadRender: groupsHeadRender }) }), weekDays.map((day, i) => (_jsx("th", { className: `${daysColsClassName}`, style: Object.assign(Object.assign({}, weekDayThStyle), daysColsStyle), children: _jsx(DayContainer, { style: dayStyle, className: dayClassName, dayIndex: i, dayRender: dayRender, day: day.day, dayOfTheMonth: day.dayOfTheMonth, dayMonth: day.dayMonth, dayYear: day.dayYear }) }, i))), _jsx("th", { style: totalThStyle, children: _jsx(SumHoursHead, { className: sumHoursHeadClassName, style: sumHoursHeadStyle, sumHoursHeadRender: sumHoursHeadRender }) })] }, "") }), _jsx("tbody", { children: groups === null || groups === void 0 ? void 0 : groups.map((group, i) => (_jsxs("tr", { className: `${rowsClassName}`, style: Object.assign(Object.assign({}, tableTrStyle), rowsStyle), children: [_jsx("td", { className: `${groupsColsClassName}`, style: Object.assign(Object.assign(Object.assign({}, tdStyle), tableTdStyle), groupsColsStyle), children: _jsx(GroupContainer, { style: groupStyle, className: groupClassName, groupRender: groupRender, currentGroup: group, handleClickGroup: handleClickGroup }) }, i), dailyHours.map((_, positionDay) => (_jsx("td", { style: Object.assign({ width: "8vw" }, tableTdStyle), onDragOver: handleDragOver, onDrop: (event) => {
88
+ saveTasksToLocalStorage(tasks);
89
+ return (_jsxs("table", { className: `planningCalendar ${className}`, style: Object.assign({}, style), children: [_jsx("thead", { children: _jsxs("tr", { className: `${rowsClassName}`, style: Object.assign(Object.assign({}, theadTrStyle), rowsStyle), children: [_jsx("th", { className: "dayTh", children: _jsx(GroupsHeadContainer, { className: `${groupHeadContainerClassName}`, style: groupHeadContainerStyle, groupsHeadRender: groupsHeadRender }) }), weekDays.map((day, i) => (_jsx("th", { className: `${daysColsClassName}`, style: Object.assign({}, daysColsStyle), children: _jsx(DayContainer, { style: dayStyle, className: dayClassName, dayIndex: i, dayRender: dayRender, day: day.day, dayOfTheMonth: day.dayOfTheMonth, dayMonth: day.dayMonth, dayYear: day.dayYear }) }, i))), _jsx("th", { className: "totalTh", children: _jsx(SumHoursHead, { className: sumHoursHeadClassName, style: sumHoursHeadStyle, sumHoursHeadRender: sumHoursHeadRender }) })] }, "") }), _jsx("tbody", { children: groups === null || groups === void 0 ? void 0 : groups.map((group, i) => (_jsxs("tr", { className: `${rowsClassName}`, style: Object.assign({}, rowsStyle), children: [_jsx("td", { className: `${groupsColsClassName}`, style: Object.assign(Object.assign({}, groupTdStyle), groupsColsStyle), children: _jsx(GroupContainer, { style: groupStyle, className: groupClassName, groupRender: groupRender, currentGroup: group, handleClickGroup: handleClickGroup }) }, i), dailyHours.map((_, positionDay) => (_jsx("td", { onDragOver: handleDragOver, onDrop: (event) => {
103
90
  if (!handleDropTask || !tasks)
104
91
  return;
105
92
  const dropInfo = getSessionStorageRecordForDragAndDrop(tasks, positionDay, group.id);
@@ -230,4 +217,39 @@ export const checkDuplicates = (tasks, taskStart, taskEnd, groupId) => {
230
217
  taskStart <= task.taskEnd)).filter((task) => task.groupId === groupId);
231
218
  return findDuplicates.length > 0;
232
219
  };
220
+ export const getTasksSaved = () => {
221
+ const taskSavedString = window.localStorage.getItem("CalendarTaskSaved");
222
+ if (!taskSavedString) {
223
+ return [];
224
+ }
225
+ const tasksTable = JSON.parse(taskSavedString);
226
+ const validTasks = tasksTable
227
+ .filter((task) => {
228
+ if (task === null || task === void 0 ? void 0 : task.taskExpiryDate) {
229
+ const taskDate = new Date(task === null || task === void 0 ? void 0 : task.taskExpiryDate);
230
+ return taskDate.getTime() >= Date.now();
231
+ }
232
+ })
233
+ .map((task) => {
234
+ const { taskDate, taskExpiryDate } = task, rest = __rest(task, ["taskDate", "taskExpiryDate"]);
235
+ if (taskExpiryDate) {
236
+ return Object.assign({ taskDate: new Date(taskDate), taskExpiryDate: new Date(taskExpiryDate) }, rest);
237
+ }
238
+ });
239
+ return validTasks;
240
+ };
241
+ export const deleteTaskSaved = (taskId) => {
242
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
243
+ if (!tasksSavedString)
244
+ return;
245
+ const tasksSavedTable = JSON.parse(tasksSavedString);
246
+ const taskIndex = tasksSavedTable.findIndex((task) => task.taskId === taskId);
247
+ if (taskIndex) {
248
+ tasksSavedTable.splice(taskIndex, 1);
249
+ window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(tasksSavedTable));
250
+ }
251
+ };
252
+ export const deleteTasksSaved = () => {
253
+ window.localStorage.removeItem("CalendarTaskSaved");
254
+ };
233
255
  export default Calendar;
package/index.tsx CHANGED
@@ -9,8 +9,6 @@ import {
9
9
  GroupsHeadContainerPropsType,
10
10
  SumHoursContainerPropsType,
11
11
  SumHoursHeadContainerPropsType,
12
- TaskType,
13
- TaskFeildsType,
14
12
  TasksType,
15
13
  } from "./definitions";
16
14
  import {
@@ -21,48 +19,20 @@ import {
21
19
  sumHoursByGroups,
22
20
  millisecondsToDate,
23
21
  compareWeekOffset,
22
+ saveTasksToLocalStorage,
24
23
  } from "./lib/utils";
25
24
 
26
- const tableStyle: StyleType = {
27
- width: "100%",
28
- height: "150px",
29
- borderRadius: "0.5rem",
30
- zIndex: 10,
31
- };
32
-
33
- const trStyle: StyleType = {
25
+ const theadTrStyle: StyleType = {
34
26
  color: "#0f5173",
35
27
  fontWeight: "300",
36
28
  position: "sticky",
37
29
  top: 0,
38
30
  };
39
31
 
40
- const thStyle: StyleType = {
41
- color: "#0f5173",
42
- paddingLeft: "5px",
43
- };
44
-
45
- const weekDayThStyle: StyleType = {};
46
-
47
- const totalThStyle: StyleType = {
48
- width: "40px",
49
- textAlign: "right",
50
- paddingRight: "2px",
51
- };
52
-
53
- const tdStyle: StyleType = {
32
+ const groupTdStyle: StyleType = {
54
33
  height: "auto",
55
34
  width: "150px",
56
35
  };
57
- const tableTrStyle: StyleType = {
58
- borderBottom: "1.5px solid #0f52737e",
59
- // backgroundColor: "#f2f8fb",
60
- padding: "2px",
61
- };
62
- const tableTdStyle: StyleType = {
63
- borderLeft: "0.74px solid rgba(198, 219, 225, 0.68)",
64
- borderRight: "0.74px solid rgba(198, 219, 225, 0.68)",
65
- };
66
36
 
67
37
  const groupContainerStyle: StyleType = {
68
38
  width: "100%",
@@ -169,15 +139,17 @@ const Calendar = ({
169
139
  const handleDragOver = (event: React.DragEvent<HTMLTableDataCellElement>) => {
170
140
  event.preventDefault();
171
141
  };
142
+
143
+ saveTasksToLocalStorage(tasks);
172
144
  return (
173
- <table className={`${className}`} style={{ ...tableStyle, ...style }}>
145
+ <table className={`planningCalendar ${className}`} style={{ ...style }}>
174
146
  <thead>
175
147
  <tr
176
148
  className={`${rowsClassName}`}
177
- style={{ ...trStyle, ...tableTrStyle, ...rowsStyle }}
149
+ style={{ ...theadTrStyle, ...rowsStyle }}
178
150
  key=""
179
151
  >
180
- <th style={thStyle}>
152
+ <th className="dayTh">
181
153
  <GroupsHeadContainer
182
154
  className={`${groupHeadContainerClassName}`}
183
155
  style={groupHeadContainerStyle}
@@ -188,7 +160,7 @@ const Calendar = ({
188
160
  <th
189
161
  key={i}
190
162
  className={`${daysColsClassName}`}
191
- style={{ ...weekDayThStyle, ...daysColsStyle }}
163
+ style={{ ...daysColsStyle }}
192
164
  >
193
165
  <DayContainer
194
166
  style={dayStyle}
@@ -202,7 +174,7 @@ const Calendar = ({
202
174
  />
203
175
  </th>
204
176
  ))}
205
- <th style={totalThStyle}>
177
+ <th className="totalTh">
206
178
  <SumHoursHead
207
179
  className={sumHoursHeadClassName}
208
180
  style={sumHoursHeadStyle}
@@ -216,12 +188,12 @@ const Calendar = ({
216
188
  <tr
217
189
  key={`${i} tr`}
218
190
  className={`${rowsClassName}`}
219
- style={{ ...tableTrStyle, ...rowsStyle }}
191
+ style={{ ...rowsStyle }}
220
192
  >
221
193
  <td
222
194
  className={`${groupsColsClassName}`}
223
195
  key={i}
224
- style={{ ...tdStyle, ...tableTdStyle, ...groupsColsStyle }}
196
+ style={{ ...groupTdStyle, ...groupsColsStyle }}
225
197
  >
226
198
  <GroupContainer
227
199
  style={groupStyle}
@@ -233,7 +205,6 @@ const Calendar = ({
233
205
  </td>
234
206
  {dailyHours.map((_, positionDay) => (
235
207
  <td
236
- style={{ width: "8vw", ...tableTdStyle }}
237
208
  key={`td-${group.id}day-i${positionDay}`}
238
209
  onDragOver={handleDragOver}
239
210
  onDrop={(event) => {
@@ -610,4 +581,49 @@ export const checkDuplicates = (
610
581
  .filter((task) => task.groupId === groupId);
611
582
  return findDuplicates.length > 0;
612
583
  };
584
+
585
+ export const getTasksSaved = () => {
586
+ const taskSavedString = window.localStorage.getItem("CalendarTaskSaved");
587
+ if (!taskSavedString) {
588
+ return [];
589
+ }
590
+ const tasksTable: TasksType = JSON.parse(taskSavedString);
591
+ const validTasks = tasksTable
592
+ .filter((task) => {
593
+ if (task?.taskExpiryDate) {
594
+ const taskDate = new Date(task?.taskExpiryDate);
595
+ return taskDate.getTime() >= Date.now();
596
+ }
597
+ })
598
+ .map((task) => {
599
+ const { taskDate, taskExpiryDate, ...rest } = task;
600
+ if (taskExpiryDate) {
601
+ return {
602
+ taskDate: new Date(taskDate),
603
+ taskExpiryDate: new Date(taskExpiryDate),
604
+ ...rest,
605
+ };
606
+ }
607
+ });
608
+ return validTasks;
609
+ };
610
+
611
+ export const deleteTaskSaved = (taskId: string) => {
612
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
613
+ if (!tasksSavedString) return;
614
+ const tasksSavedTable: TasksType = JSON.parse(tasksSavedString);
615
+ const taskIndex = tasksSavedTable.findIndex((task) => task.taskId === taskId);
616
+ if (taskIndex) {
617
+ tasksSavedTable.splice(taskIndex, 1);
618
+ window.localStorage.setItem(
619
+ "CalendarTaskSaved",
620
+ JSON.stringify(tasksSavedTable)
621
+ );
622
+ }
623
+ };
624
+
625
+ export const deleteTasksSaved = () => {
626
+ window.localStorage.removeItem("CalendarTaskSaved");
627
+ };
628
+
613
629
  export default Calendar;
package/lib/utils.js CHANGED
@@ -26,6 +26,10 @@ endDate.setHours(23, 59, 59, 999);
26
26
  const endDateMilliseconds = endDate.getTime();
27
27
  function getDayHourly(weekOffset) {
28
28
  const dailyHours = [];
29
+ let dayOffset = weekOffset;
30
+ if (currentDate.getDay() === 0) {
31
+ dayOffset = dayOffset - 7;
32
+ }
29
33
  // Boucle pour calculer les heures de début et de fin de chaque jour de la semaine
30
34
  for (let i = 0; i < 7; i++) {
31
35
  const dayDate = new Date(startDate);
@@ -36,9 +40,9 @@ function getDayHourly(weekOffset) {
36
40
  dayEnd.setHours(23, 59, 59, 59);
37
41
  dailyHours.push({
38
42
  positionDay: i,
39
- day: new Date(dayStart.getTime() + weekOffset * 86400000),
40
- start: dayStart.getTime() + weekOffset * 86400000,
41
- end: dayEnd.getTime() + weekOffset * 86400000,
43
+ day: new Date(dayStart.getTime() + dayOffset * 86400000),
44
+ start: dayStart.getTime() + dayOffset * 86400000,
45
+ end: dayEnd.getTime() + dayOffset * 86400000,
42
46
  });
43
47
  }
44
48
  return dailyHours;
@@ -125,7 +129,12 @@ function getWeekDays(jump) {
125
129
  for (let i = 0; i < 7; i++) {
126
130
  const day = new Date();
127
131
  const diff = i - currentDayOfWeek;
128
- day.setDate(currentDate.getDate() + diff + jump);
132
+ if (currentDayOfWeek === 0) {
133
+ day.setDate(currentDate.getDate() + diff + jump - 7);
134
+ }
135
+ else {
136
+ day.setDate(currentDate.getDate() + diff + jump);
137
+ }
129
138
  const formattedDay = `${days[day.getDay()]}. ${day.getDate()}, ${month[day.getMonth()]} ${day.getFullYear()}`;
130
139
  weekDays.push({
131
140
  day: days[day.getDay()],
@@ -400,6 +409,7 @@ function calculerEcartSemaine(dateSelectionnee) {
400
409
  function semainesDepuisOrigine(annee, numeroSemaine) {
401
410
  const dateActuelle = new Date();
402
411
  const dateOrigine = new Date(dateActuelle.getFullYear() - 2, 0, 1);
412
+ console.log(dateOrigine);
403
413
  const anneeOrigine = dateOrigine.getFullYear();
404
414
  const numeroSemaineOrigine = getWeekNumber(dateOrigine);
405
415
  let nombreSemaines = 0;
@@ -456,4 +466,14 @@ const sumHoursByGroups = (groupId, tasks, weekOffset, calendarDate) => {
456
466
  });
457
467
  return sum;
458
468
  };
459
- export { getWeeksListUpdate, clickedDate, getCalandarDays, startDateMilliseconds, endDateMilliseconds, getDayHourly, millisecondsToDate, getWeekDays, formatDateToCustomFormat, displayDayOnModalLeft, millisecondsToInt, getWeekMonthAndYear, getWeeksList, getDoubleWeeksList, calculerEcartSemaine, calculateTimeOfDayRange, getSessionStorageRecordForDragAndDrop, compareWeekOffset, sumHoursByGroups, };
469
+ function saveTasksToLocalStorage(tasks) {
470
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
471
+ const tasksString = JSON.stringify(tasks);
472
+ if (tasksSavedString === tasksString)
473
+ return;
474
+ if (tasksString === "[]")
475
+ return;
476
+ const backup = [...tasks.filter((task) => task.taskExpiryDate)];
477
+ window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(backup));
478
+ }
479
+ export { getWeeksListUpdate, saveTasksToLocalStorage, clickedDate, getCalandarDays, startDateMilliseconds, endDateMilliseconds, getDayHourly, millisecondsToDate, getWeekDays, formatDateToCustomFormat, displayDayOnModalLeft, millisecondsToInt, getWeekMonthAndYear, getWeeksList, getDoubleWeeksList, calculerEcartSemaine, calculateTimeOfDayRange, getSessionStorageRecordForDragAndDrop, compareWeekOffset, sumHoursByGroups, };
package/lib/utils.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  import moment from "moment";
2
- import {
3
- TasksType,
4
- TaskType,
5
- TaskFeildsType,
6
- GroupFeildsType,
7
- } from "../definitions";
2
+ import { TasksType, TaskType, TaskFeildsType } from "../definitions";
8
3
  // Obtenir la date actuelle
9
4
  const currentDate = new Date();
10
5
  // Obtenir le jour de la semaine (dimanche = 0, lundi = 1, ..., samedi = 6)
@@ -28,7 +23,10 @@ function getDayHourly(weekOffset: number) {
28
23
  start: number;
29
24
  end: number;
30
25
  }[] = [];
31
-
26
+ let dayOffset = weekOffset;
27
+ if (currentDate.getDay() === 0) {
28
+ dayOffset = dayOffset - 7;
29
+ }
32
30
  // Boucle pour calculer les heures de début et de fin de chaque jour de la semaine
33
31
  for (let i = 0; i < 7; i++) {
34
32
  const dayDate = new Date(startDate);
@@ -40,9 +38,9 @@ function getDayHourly(weekOffset: number) {
40
38
 
41
39
  dailyHours.push({
42
40
  positionDay: i,
43
- day: new Date(dayStart.getTime() + weekOffset * 86400000),
44
- start: dayStart.getTime() + weekOffset * 86400000,
45
- end: dayEnd.getTime() + weekOffset * 86400000,
41
+ day: new Date(dayStart.getTime() + dayOffset * 86400000),
42
+ start: dayStart.getTime() + dayOffset * 86400000,
43
+ end: dayEnd.getTime() + dayOffset * 86400000,
46
44
  });
47
45
  }
48
46
  return dailyHours;
@@ -144,8 +142,11 @@ function getWeekDays(jump: number) {
144
142
  for (let i = 0; i < 7; i++) {
145
143
  const day = new Date();
146
144
  const diff = i - currentDayOfWeek;
147
-
148
- day.setDate(currentDate.getDate() + diff + jump);
145
+ if (currentDayOfWeek === 0) {
146
+ day.setDate(currentDate.getDate() + diff + jump - 7);
147
+ } else {
148
+ day.setDate(currentDate.getDate() + diff + jump);
149
+ }
149
150
 
150
151
  const formattedDay = `${days[day.getDay()]}. ${day.getDate()}, ${
151
152
  month[day.getMonth()]
@@ -597,8 +598,19 @@ const sumHoursByGroups = (
597
598
  });
598
599
  return sum;
599
600
  };
601
+
602
+ function saveTasksToLocalStorage(tasks: TasksType) {
603
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
604
+ const tasksString = JSON.stringify(tasks);
605
+ if (tasksSavedString === tasksString) return;
606
+ if (tasksString === "[]") return;
607
+ const backup = [...tasks.filter((task) => task.taskExpiryDate)];
608
+ window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(backup));
609
+ }
610
+
600
611
  export {
601
612
  getWeeksListUpdate,
613
+ saveTasksToLocalStorage,
602
614
  clickedDate,
603
615
  getCalandarDays,
604
616
  startDateMilliseconds,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-weekly-planning",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
package/style.css CHANGED
@@ -3,7 +3,7 @@
3
3
  display: flex;
4
4
  align-items: center;
5
5
  justify-content: center;
6
- flex:1;
6
+ flex: 1;
7
7
  background-color: #f2f8fb;
8
8
  opacity: 0;
9
9
  border-radius: 5px;
@@ -48,4 +48,31 @@
48
48
  font-weight: 600;
49
49
  margin-left: 5px;
50
50
  }
51
- td{ -moz-box-sizing: border-box;}
51
+
52
+ .planningCalendar{
53
+ width: 100%;
54
+ height: 150px;
55
+ border-radius: 0.5rem;
56
+ z-index: 10;
57
+ }
58
+ .planningCalendar .dayTh{
59
+ color: #0f5173;
60
+ padding-left: 5px
61
+ }
62
+ .planningCalendar .totalTh {
63
+ color: #0f5173;
64
+ width: 40px;
65
+ text-align: right;
66
+ padding-right: 2px;
67
+ }
68
+
69
+ .planningCalendar td {
70
+ -moz-box-sizing: border-box;
71
+ border-left: 0.74px solid rgba(198, 219, 225, 0.68);
72
+ border-right: 0.74px solid rgba(198, 219, 225, 0.68);
73
+ width: 8vw;
74
+ }
75
+ .planningCalendar tr {
76
+ border-bottom: 1.5px solid #0f52737e;
77
+ padding: 2px;
78
+ }