akfatimeline 1.2.0 → 2.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.
- package/dist/Timeline.js +16 -48
- package/{src/components/Timeline/DailyView.js → dist/components/Timeline/DailyView.jsx} +1 -0
- package/{src/components/Timeline/EventTooltip.js → dist/components/Timeline/EventTooltip.jsx} +207 -206
- package/{src/components/Timeline/Indicator.js → dist/components/Timeline/Indicator.jsx} +27 -26
- package/{src/components/Timeline/MasterHeader.js → dist/components/Timeline/MasterHeader.jsx} +105 -104
- package/{src/components/Timeline/Resources.js → dist/components/Timeline/Resources.jsx} +54 -53
- package/{src/components/Timeline/ResourcesHeader.js → dist/components/Timeline/ResourcesHeader.jsx} +15 -14
- package/{src/components/Timeline/Timeline.js → dist/components/Timeline/Timeline.jsx} +572 -607
- package/{src/components/Timeline/TimelineContent.js → dist/components/Timeline/TimelineContent.jsx} +837 -838
- package/{src/components/Timeline/TimelineHeader.js → dist/components/Timeline/TimelineHeader.jsx} +55 -54
- package/dist/components/Timeline/TimelineMonthContainer.js +2 -2
- package/package.json +25 -25
- package/src/components/Timeline/AutocompleteSelect.jsx +150 -0
- package/src/components/Timeline/ContextMenu.jsx +149 -0
- package/src/components/Timeline/DailyView.jsx +256 -0
- package/src/components/Timeline/EventBadge.jsx +26 -0
- package/src/components/Timeline/EventDetailModal.jsx +138 -0
- package/src/components/Timeline/EventIcon.jsx +47 -0
- package/src/components/Timeline/EventTooltip.jsx +207 -0
- package/src/components/Timeline/Indicator.jsx +27 -0
- package/src/components/Timeline/LoadingSpinner.jsx +48 -0
- package/src/components/Timeline/MasterHeader.jsx +105 -0
- package/src/components/Timeline/Resources.jsx +54 -0
- package/src/components/Timeline/ResourcesHeader.jsx +15 -0
- package/src/components/Timeline/Timeline.jsx +572 -0
- package/src/components/Timeline/TimelineContent.jsx +837 -0
- package/src/components/Timeline/TimelineHeader.jsx +55 -0
- package/src/components/Timeline/TimelineMonthContainer.js +2 -2
- package/src/library.js +8 -8
- /package/{src/components/Timeline/AutocompleteSelect.js → dist/components/Timeline/AutocompleteSelect.jsx} +0 -0
- /package/{src/components/Timeline/ContextMenu.js → dist/components/Timeline/ContextMenu.jsx} +0 -0
- /package/{src/components/Timeline/EventBadge.js → dist/components/Timeline/EventBadge.jsx} +0 -0
- /package/{src/components/Timeline/EventDetailModal.js → dist/components/Timeline/EventDetailModal.jsx} +0 -0
- /package/{src/components/Timeline/EventIcon.js → dist/components/Timeline/EventIcon.jsx} +0 -0
- /package/{src/components/Timeline/LoadingSpinner.js → dist/components/Timeline/LoadingSpinner.jsx} +0 -0
package/dist/Timeline.js
CHANGED
|
@@ -3015,7 +3015,7 @@ var update = injectStylesIntoStyleTag_default()(Timeline/* default */.A, options
|
|
|
3015
3015
|
|
|
3016
3016
|
/* harmony default export */ const Timeline_Timeline = (Timeline/* default */.A && Timeline/* default */.A.locals ? Timeline/* default */.A.locals : undefined);
|
|
3017
3017
|
|
|
3018
|
-
;// ./src/components/Timeline/MasterHeader.
|
|
3018
|
+
;// ./src/components/Timeline/MasterHeader.jsx
|
|
3019
3019
|
|
|
3020
3020
|
|
|
3021
3021
|
const MasterHeader = _ref => {
|
|
@@ -3098,8 +3098,8 @@ const MasterHeader = _ref => {
|
|
|
3098
3098
|
}, "+")));
|
|
3099
3099
|
};
|
|
3100
3100
|
/* harmony default export */ const Timeline_MasterHeader = (MasterHeader);
|
|
3101
|
-
;// ./src/components/Timeline/ResourcesHeader.
|
|
3102
|
-
// ResourcesHeader.
|
|
3101
|
+
;// ./src/components/Timeline/ResourcesHeader.jsx
|
|
3102
|
+
// ResourcesHeader.jsx
|
|
3103
3103
|
|
|
3104
3104
|
|
|
3105
3105
|
const ResourcesHeader = _ref => {
|
|
@@ -3111,7 +3111,7 @@ const ResourcesHeader = _ref => {
|
|
|
3111
3111
|
}, content);
|
|
3112
3112
|
};
|
|
3113
3113
|
/* harmony default export */ const Timeline_ResourcesHeader = (ResourcesHeader);
|
|
3114
|
-
;// ./src/components/Timeline/Resources.
|
|
3114
|
+
;// ./src/components/Timeline/Resources.jsx
|
|
3115
3115
|
|
|
3116
3116
|
const Resources = _ref => {
|
|
3117
3117
|
let {
|
|
@@ -3192,7 +3192,7 @@ const isDateInRange = (date, startDate, endDate) => {
|
|
|
3192
3192
|
const end = parseDate(endDate);
|
|
3193
3193
|
return d >= start && d <= end;
|
|
3194
3194
|
};
|
|
3195
|
-
;// ./src/components/Timeline/TimelineHeader.
|
|
3195
|
+
;// ./src/components/Timeline/TimelineHeader.jsx
|
|
3196
3196
|
|
|
3197
3197
|
// CSS dosyasını import etmeyi unutma
|
|
3198
3198
|
|
|
@@ -3413,7 +3413,7 @@ const useEventDragDrop = (events, setEvents, setDropInfo) => {
|
|
|
3413
3413
|
};
|
|
3414
3414
|
};
|
|
3415
3415
|
/* harmony default export */ const hooks_useEventDragDrop = (useEventDragDrop);
|
|
3416
|
-
;// ./src/components/Timeline/Indicator.
|
|
3416
|
+
;// ./src/components/Timeline/Indicator.jsx
|
|
3417
3417
|
|
|
3418
3418
|
const Indicator = _ref => {
|
|
3419
3419
|
let {
|
|
@@ -3442,7 +3442,7 @@ const Indicator = _ref => {
|
|
|
3442
3442
|
});
|
|
3443
3443
|
};
|
|
3444
3444
|
/* harmony default export */ const Timeline_Indicator = (Indicator);
|
|
3445
|
-
;// ./src/components/Timeline/EventIcon.
|
|
3445
|
+
;// ./src/components/Timeline/EventIcon.jsx
|
|
3446
3446
|
|
|
3447
3447
|
|
|
3448
3448
|
|
|
@@ -3498,7 +3498,7 @@ const EventIcon = _ref => {
|
|
|
3498
3498
|
}, iconContent);
|
|
3499
3499
|
};
|
|
3500
3500
|
/* harmony default export */ const Timeline_EventIcon = (EventIcon);
|
|
3501
|
-
;// ./src/components/Timeline/EventBadge.
|
|
3501
|
+
;// ./src/components/Timeline/EventBadge.jsx
|
|
3502
3502
|
|
|
3503
3503
|
|
|
3504
3504
|
|
|
@@ -3522,7 +3522,7 @@ const EventBadge = _ref => {
|
|
|
3522
3522
|
}, text);
|
|
3523
3523
|
};
|
|
3524
3524
|
/* harmony default export */ const Timeline_EventBadge = (EventBadge);
|
|
3525
|
-
;// ./src/components/Timeline/ContextMenu.
|
|
3525
|
+
;// ./src/components/Timeline/ContextMenu.jsx
|
|
3526
3526
|
|
|
3527
3527
|
|
|
3528
3528
|
|
|
@@ -3658,7 +3658,7 @@ const ContextMenu = _ref => {
|
|
|
3658
3658
|
})));
|
|
3659
3659
|
};
|
|
3660
3660
|
/* harmony default export */ const Timeline_ContextMenu = (ContextMenu);
|
|
3661
|
-
;// ./src/components/Timeline/TimelineContent.
|
|
3661
|
+
;// ./src/components/Timeline/TimelineContent.jsx
|
|
3662
3662
|
function TimelineContent_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3663
3663
|
function TimelineContent_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? TimelineContent_ownKeys(Object(t), !0).forEach(function (r) { TimelineContent_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : TimelineContent_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3664
3664
|
function TimelineContent_defineProperty(e, r, t) { return (r = TimelineContent_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -3973,7 +3973,7 @@ const TimelineContent = _ref => {
|
|
|
3973
3973
|
window.removeEventListener("mousemove", handleMouseMove);
|
|
3974
3974
|
window.removeEventListener("mouseup", handleMouseUp);
|
|
3975
3975
|
};
|
|
3976
|
-
}, [createNewEventOn, isCreating, mode, tempEvent, events, onCreateEventInfo, setEvents]);
|
|
3976
|
+
}, [createNewEventOn, isCreating, mode, tempEvent, events, onCreateEventInfo, setEvents, totalDays, dates, preventPastEvents, minDate]);
|
|
3977
3977
|
|
|
3978
3978
|
// ------------------- Drag Logic -------------------
|
|
3979
3979
|
const handleDragStartSafe = (e, eventId) => {
|
|
@@ -4402,8 +4402,8 @@ const TimelineContent = _ref => {
|
|
|
4402
4402
|
})));
|
|
4403
4403
|
};
|
|
4404
4404
|
/* harmony default export */ const Timeline_TimelineContent = (TimelineContent);
|
|
4405
|
-
;// ./src/components/Timeline/EventTooltip.
|
|
4406
|
-
// src/components/Timeline/EventTooltip.
|
|
4405
|
+
;// ./src/components/Timeline/EventTooltip.jsx
|
|
4406
|
+
// src/components/Timeline/EventTooltip.jsx
|
|
4407
4407
|
|
|
4408
4408
|
const EventTooltip = _ref => {
|
|
4409
4409
|
let {
|
|
@@ -4571,7 +4571,7 @@ const EventTooltip = _ref => {
|
|
|
4571
4571
|
}, "\uD83D\uDDD1\uFE0F"), "Sil")));
|
|
4572
4572
|
};
|
|
4573
4573
|
/* harmony default export */ const Timeline_EventTooltip = (EventTooltip);
|
|
4574
|
-
;// ./src/components/Timeline/EventDetailModal.
|
|
4574
|
+
;// ./src/components/Timeline/EventDetailModal.jsx
|
|
4575
4575
|
function EventDetailModal_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4576
4576
|
function EventDetailModal_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? EventDetailModal_ownKeys(Object(t), !0).forEach(function (r) { EventDetailModal_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : EventDetailModal_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4577
4577
|
function EventDetailModal_defineProperty(e, r, t) { return (r = EventDetailModal_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -4694,7 +4694,7 @@ const EventDetailModal = _ref => {
|
|
|
4694
4694
|
}, "Kaydet"))))));
|
|
4695
4695
|
};
|
|
4696
4696
|
/* harmony default export */ const Timeline_EventDetailModal = (EventDetailModal);
|
|
4697
|
-
;// ./src/components/Timeline/DailyView.
|
|
4697
|
+
;// ./src/components/Timeline/DailyView.jsx
|
|
4698
4698
|
function DailyView_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4699
4699
|
function DailyView_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? DailyView_ownKeys(Object(t), !0).forEach(function (r) { DailyView_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : DailyView_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4700
4700
|
function DailyView_defineProperty(e, r, t) { return (r = DailyView_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -5322,7 +5322,7 @@ const useEventManagement = function () {
|
|
|
5322
5322
|
};
|
|
5323
5323
|
};
|
|
5324
5324
|
/* harmony default export */ const hooks_useEventManagement = (useEventManagement);
|
|
5325
|
-
;// ./src/components/Timeline/Timeline.
|
|
5325
|
+
;// ./src/components/Timeline/Timeline.jsx
|
|
5326
5326
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
5327
5327
|
function Timeline_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5328
5328
|
function Timeline_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? Timeline_ownKeys(Object(t), !0).forEach(function (r) { Timeline_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : Timeline_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -5868,38 +5868,6 @@ const Timeline_Timeline_Timeline = _ref => {
|
|
|
5868
5868
|
}
|
|
5869
5869
|
},
|
|
5870
5870
|
themeType: themeType
|
|
5871
|
-
}), dailyViewOn && /*#__PURE__*/external_react_default().createElement(Timeline_DailyView, {
|
|
5872
|
-
isOpen: dailyView.isOpen,
|
|
5873
|
-
onClose: () => setDailyView({
|
|
5874
|
-
isOpen: false,
|
|
5875
|
-
resource: null,
|
|
5876
|
-
date: null
|
|
5877
|
-
}),
|
|
5878
|
-
resource: dailyView.resource,
|
|
5879
|
-
date: dailyView.date,
|
|
5880
|
-
events: localEvents,
|
|
5881
|
-
onEventCreate: newEvent => {
|
|
5882
|
-
const updatedEvents = [...localEvents, newEvent];
|
|
5883
|
-
setLocalEvents(updatedEvents);
|
|
5884
|
-
if (onEventUpdate) {
|
|
5885
|
-
onEventUpdate(updatedEvents);
|
|
5886
|
-
}
|
|
5887
|
-
},
|
|
5888
|
-
onEventUpdate: updatedEvent => {
|
|
5889
|
-
const updatedEvents = localEvents.map(e => e.id === updatedEvent.id ? updatedEvent : e);
|
|
5890
|
-
setLocalEvents(updatedEvents);
|
|
5891
|
-
if (onEventUpdate) {
|
|
5892
|
-
onEventUpdate(updatedEvents);
|
|
5893
|
-
}
|
|
5894
|
-
},
|
|
5895
|
-
onEventDelete: eventId => {
|
|
5896
|
-
const updatedEvents = localEvents.filter(e => e.id !== eventId);
|
|
5897
|
-
setLocalEvents(updatedEvents);
|
|
5898
|
-
if (onEventUpdate) {
|
|
5899
|
-
onEventUpdate(updatedEvents);
|
|
5900
|
-
}
|
|
5901
|
-
},
|
|
5902
|
-
themeType: themeType
|
|
5903
5871
|
}));
|
|
5904
5872
|
};
|
|
5905
5873
|
/* harmony default export */ const components_Timeline_Timeline = (Timeline_Timeline_Timeline);
|
package/{src/components/Timeline/EventTooltip.js → dist/components/Timeline/EventTooltip.jsx}
RENAMED
|
@@ -1,206 +1,207 @@
|
|
|
1
|
-
// src/components/Timeline/EventTooltip.
|
|
2
|
-
import React from "react";
|
|
3
|
-
|
|
4
|
-
const EventTooltip = ({ event, position = { top: 0, left: 0 }, onClose, onEdit, onDelete }) => {
|
|
5
|
-
if (!event) return null;
|
|
6
|
-
|
|
7
|
-
const { top, left } = position;
|
|
8
|
-
|
|
9
|
-
// Rezervasyon durumuna göre renk belirleme
|
|
10
|
-
const getStatusColor = (status) => {
|
|
11
|
-
switch (status) {
|
|
12
|
-
case "Confirmed":
|
|
13
|
-
return "#4caf50"; // Yeşil
|
|
14
|
-
case "Pending":
|
|
15
|
-
return "#ff9800"; // Turuncu
|
|
16
|
-
case "Cancelled":
|
|
17
|
-
return "#f44336"; // Kırmızı
|
|
18
|
-
case "Completed":
|
|
19
|
-
return "#2196f3"; // Mavi
|
|
20
|
-
default:
|
|
21
|
-
return "#9e9e9e"; // Gri
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const statusColor = getStatusColor(event.status);
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<div
|
|
29
|
-
style={{
|
|
30
|
-
position: "absolute",
|
|
31
|
-
top: top - 200, // Tooltip'in biraz yukarıda görünmesi için
|
|
32
|
-
left: left + 70,
|
|
33
|
-
transform: "translateX(-50%)",
|
|
34
|
-
backgroundColor: "#ffffff",
|
|
35
|
-
color: "#333333",
|
|
36
|
-
borderRadius: "10px",
|
|
37
|
-
boxShadow: "0 8px 16px rgba(0, 0, 0, 0.2)",
|
|
38
|
-
fontSize: "16px",
|
|
39
|
-
zIndex: 1000,
|
|
40
|
-
pointerEvents: "auto", // Tooltip'in tıklanabilir olmasını sağlar
|
|
41
|
-
whiteSpace: "normal",
|
|
42
|
-
maxWidth: "400px",
|
|
43
|
-
width: "100%",
|
|
44
|
-
transition: "opacity 0.3s ease, transform 0.3s ease",
|
|
45
|
-
}}
|
|
46
|
-
>
|
|
47
|
-
{/* Kapatma Butonu */}
|
|
48
|
-
{onClose && (
|
|
49
|
-
<button
|
|
50
|
-
onClick={onClose}
|
|
51
|
-
style={{
|
|
52
|
-
position: "absolute",
|
|
53
|
-
top: "10px",
|
|
54
|
-
right: "15px",
|
|
55
|
-
background: "transparent",
|
|
56
|
-
border: "none",
|
|
57
|
-
color: "#aaa",
|
|
58
|
-
fontSize: "24px",
|
|
59
|
-
cursor: "pointer",
|
|
60
|
-
transition: "color 0.2s",
|
|
61
|
-
}}
|
|
62
|
-
aria-label="Kapat"
|
|
63
|
-
onMouseOver={(e) => (e.target.style.color = "#000")}
|
|
64
|
-
onMouseOut={(e) => (e.target.style.color = "#aaa")}
|
|
65
|
-
>
|
|
66
|
-
×
|
|
67
|
-
</button>
|
|
68
|
-
)}
|
|
69
|
-
|
|
70
|
-
{/* Header */}
|
|
71
|
-
<div
|
|
72
|
-
style={{
|
|
73
|
-
backgroundColor: statusColor,
|
|
74
|
-
color: "#ffffff",
|
|
75
|
-
padding: "15px 20px",
|
|
76
|
-
borderTopLeftRadius: "10px",
|
|
77
|
-
borderTopRightRadius: "10px",
|
|
78
|
-
display: "flex",
|
|
79
|
-
flexDirection: "column",
|
|
80
|
-
gap: "5px",
|
|
81
|
-
}}
|
|
82
|
-
>
|
|
83
|
-
<div style={{ fontWeight: "bold", fontSize: "18px" }}>{event.title}</div>
|
|
84
|
-
<div style={{ fontSize: "14px" }}>Rezervasyon ID: {event.reservationId}</div>
|
|
85
|
-
</div>
|
|
86
|
-
|
|
87
|
-
{/* İçerik */}
|
|
88
|
-
<div style={{ padding: "20px", display: "flex", flexDirection: "column", gap: "15px" }}>
|
|
89
|
-
{/* Misafirler */}
|
|
90
|
-
{Array.isArray(event.guestNames) && (
|
|
91
|
-
<div>
|
|
92
|
-
<strong>Misafirler:</strong> {event.guestNames.join(", ")}
|
|
93
|
-
</div>
|
|
94
|
-
)}
|
|
95
|
-
|
|
96
|
-
{/* Giriş ve Çıkış Tarihleri */}
|
|
97
|
-
<div style={{ display: "flex", justifyContent: "space-between", marginBottom: "10px" }}>
|
|
98
|
-
<div>
|
|
99
|
-
<strong>Giriş:</strong> {new Date(event.startDate).toLocaleDateString()}
|
|
100
|
-
</div>
|
|
101
|
-
<div>
|
|
102
|
-
<strong>Çıkış:</strong> {new Date(event.endDate).toLocaleDateString()}
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
|
|
106
|
-
{/* Ödeme Bilgileri */}
|
|
107
|
-
{(event.totalAmount !== undefined || event.amountPaid !== undefined) && (
|
|
108
|
-
<div style={{ display: "flex", justifyContent: "space-between", marginBottom: "10px" }}>
|
|
109
|
-
{event.amountPaid !== undefined && (
|
|
110
|
-
<div>
|
|
111
|
-
<strong>Ödenen Miktar:</strong> ${event.amountPaid.toFixed(2)}
|
|
112
|
-
</div>
|
|
113
|
-
)}
|
|
114
|
-
{event.totalAmount !== undefined && (
|
|
115
|
-
<div>
|
|
116
|
-
<strong>Toplam Borç:</strong> ${event.totalAmount.toFixed(2)}
|
|
117
|
-
</div>
|
|
118
|
-
)}
|
|
119
|
-
</div>
|
|
120
|
-
)}
|
|
121
|
-
|
|
122
|
-
{/* Rezervasyon Durumu */}
|
|
123
|
-
{event.status && (
|
|
124
|
-
<div>
|
|
125
|
-
<strong>Durum:</strong> {event.status}
|
|
126
|
-
</div>
|
|
127
|
-
)}
|
|
128
|
-
|
|
129
|
-
{/* Rezervasyon Notu */}
|
|
130
|
-
{event.note && (
|
|
131
|
-
<div>
|
|
132
|
-
<strong>Not:</strong> {event.note}
|
|
133
|
-
</div>
|
|
134
|
-
)}
|
|
135
|
-
</div>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
{/* Footer */}
|
|
139
|
-
<div
|
|
140
|
-
style={{
|
|
141
|
-
padding: "15px 20px",
|
|
142
|
-
borderTop: "1px solid #ddd",
|
|
143
|
-
display: "flex",
|
|
144
|
-
justifyContent: "flex-end",
|
|
145
|
-
gap: "10px",
|
|
146
|
-
borderBottomLeftRadius: "10px",
|
|
147
|
-
borderBottomRightRadius: "10px",
|
|
148
|
-
}}
|
|
149
|
-
>
|
|
150
|
-
{/* Düzenle Butonu */}
|
|
151
|
-
{onEdit && (
|
|
152
|
-
<button
|
|
153
|
-
onClick={() => onEdit(event)}
|
|
154
|
-
style={{
|
|
155
|
-
padding: "8px 16px",
|
|
156
|
-
backgroundColor: "#2196f3",
|
|
157
|
-
color: "#ffffff",
|
|
158
|
-
border: "none",
|
|
159
|
-
borderRadius: "4px",
|
|
160
|
-
cursor: "pointer",
|
|
161
|
-
fontSize: "14px",
|
|
162
|
-
display: "flex",
|
|
163
|
-
alignItems: "center",
|
|
164
|
-
gap: "5px",
|
|
165
|
-
transition: "background-color 0.2s",
|
|
166
|
-
}}
|
|
167
|
-
onMouseOver={(e) => (e.target.style.backgroundColor = "#1976d2")}
|
|
168
|
-
onMouseOut={(e) => (e.target.style.backgroundColor = "#2196f3")}
|
|
169
|
-
>
|
|
170
|
-
{/* Düzenle İkonu */}
|
|
171
|
-
<span role="img" aria-label="Düzenle">✏️</span>
|
|
172
|
-
Düzenle
|
|
173
|
-
</button>
|
|
174
|
-
)}
|
|
175
|
-
|
|
176
|
-
{/* Sil Butonu */}
|
|
177
|
-
{onDelete && (
|
|
178
|
-
<button
|
|
179
|
-
onClick={() => onDelete(event.id)}
|
|
180
|
-
style={{
|
|
181
|
-
padding: "8px 16px",
|
|
182
|
-
backgroundColor: "#f44336",
|
|
183
|
-
color: "#ffffff",
|
|
184
|
-
border: "none",
|
|
185
|
-
borderRadius: "4px",
|
|
186
|
-
cursor: "pointer",
|
|
187
|
-
fontSize: "14px",
|
|
188
|
-
display: "flex",
|
|
189
|
-
alignItems: "center",
|
|
190
|
-
gap: "5px",
|
|
191
|
-
transition: "background-color 0.2s",
|
|
192
|
-
}}
|
|
193
|
-
onMouseOver={(e) => (e.target.style.backgroundColor = "#d32f2f")}
|
|
194
|
-
onMouseOut={(e) => (e.target.style.backgroundColor = "#f44336")}
|
|
195
|
-
>
|
|
196
|
-
{/* Sil İkonu */}
|
|
197
|
-
<span role="img" aria-label="Sil">🗑️</span>
|
|
198
|
-
Sil
|
|
199
|
-
</button>
|
|
200
|
-
)}
|
|
201
|
-
</div>
|
|
202
|
-
</div>
|
|
203
|
-
);
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
export default EventTooltip;
|
|
1
|
+
// src/components/Timeline/EventTooltip.jsx
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
const EventTooltip = ({ event, position = { top: 0, left: 0 }, onClose, onEdit, onDelete }) => {
|
|
5
|
+
if (!event) return null;
|
|
6
|
+
|
|
7
|
+
const { top, left } = position;
|
|
8
|
+
|
|
9
|
+
// Rezervasyon durumuna göre renk belirleme
|
|
10
|
+
const getStatusColor = (status) => {
|
|
11
|
+
switch (status) {
|
|
12
|
+
case "Confirmed":
|
|
13
|
+
return "#4caf50"; // Yeşil
|
|
14
|
+
case "Pending":
|
|
15
|
+
return "#ff9800"; // Turuncu
|
|
16
|
+
case "Cancelled":
|
|
17
|
+
return "#f44336"; // Kırmızı
|
|
18
|
+
case "Completed":
|
|
19
|
+
return "#2196f3"; // Mavi
|
|
20
|
+
default:
|
|
21
|
+
return "#9e9e9e"; // Gri
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const statusColor = getStatusColor(event.status);
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<div
|
|
29
|
+
style={{
|
|
30
|
+
position: "absolute",
|
|
31
|
+
top: top - 200, // Tooltip'in biraz yukarıda görünmesi için
|
|
32
|
+
left: left + 70,
|
|
33
|
+
transform: "translateX(-50%)",
|
|
34
|
+
backgroundColor: "#ffffff",
|
|
35
|
+
color: "#333333",
|
|
36
|
+
borderRadius: "10px",
|
|
37
|
+
boxShadow: "0 8px 16px rgba(0, 0, 0, 0.2)",
|
|
38
|
+
fontSize: "16px",
|
|
39
|
+
zIndex: 1000,
|
|
40
|
+
pointerEvents: "auto", // Tooltip'in tıklanabilir olmasını sağlar
|
|
41
|
+
whiteSpace: "normal",
|
|
42
|
+
maxWidth: "400px",
|
|
43
|
+
width: "100%",
|
|
44
|
+
transition: "opacity 0.3s ease, transform 0.3s ease",
|
|
45
|
+
}}
|
|
46
|
+
>
|
|
47
|
+
{/* Kapatma Butonu */}
|
|
48
|
+
{onClose && (
|
|
49
|
+
<button
|
|
50
|
+
onClick={onClose}
|
|
51
|
+
style={{
|
|
52
|
+
position: "absolute",
|
|
53
|
+
top: "10px",
|
|
54
|
+
right: "15px",
|
|
55
|
+
background: "transparent",
|
|
56
|
+
border: "none",
|
|
57
|
+
color: "#aaa",
|
|
58
|
+
fontSize: "24px",
|
|
59
|
+
cursor: "pointer",
|
|
60
|
+
transition: "color 0.2s",
|
|
61
|
+
}}
|
|
62
|
+
aria-label="Kapat"
|
|
63
|
+
onMouseOver={(e) => (e.target.style.color = "#000")}
|
|
64
|
+
onMouseOut={(e) => (e.target.style.color = "#aaa")}
|
|
65
|
+
>
|
|
66
|
+
×
|
|
67
|
+
</button>
|
|
68
|
+
)}
|
|
69
|
+
|
|
70
|
+
{/* Header */}
|
|
71
|
+
<div
|
|
72
|
+
style={{
|
|
73
|
+
backgroundColor: statusColor,
|
|
74
|
+
color: "#ffffff",
|
|
75
|
+
padding: "15px 20px",
|
|
76
|
+
borderTopLeftRadius: "10px",
|
|
77
|
+
borderTopRightRadius: "10px",
|
|
78
|
+
display: "flex",
|
|
79
|
+
flexDirection: "column",
|
|
80
|
+
gap: "5px",
|
|
81
|
+
}}
|
|
82
|
+
>
|
|
83
|
+
<div style={{ fontWeight: "bold", fontSize: "18px" }}>{event.title}</div>
|
|
84
|
+
<div style={{ fontSize: "14px" }}>Rezervasyon ID: {event.reservationId}</div>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
{/* İçerik */}
|
|
88
|
+
<div style={{ padding: "20px", display: "flex", flexDirection: "column", gap: "15px" }}>
|
|
89
|
+
{/* Misafirler */}
|
|
90
|
+
{Array.isArray(event.guestNames) && (
|
|
91
|
+
<div>
|
|
92
|
+
<strong>Misafirler:</strong> {event.guestNames.join(", ")}
|
|
93
|
+
</div>
|
|
94
|
+
)}
|
|
95
|
+
|
|
96
|
+
{/* Giriş ve Çıkış Tarihleri */}
|
|
97
|
+
<div style={{ display: "flex", justifyContent: "space-between", marginBottom: "10px" }}>
|
|
98
|
+
<div>
|
|
99
|
+
<strong>Giriş:</strong> {new Date(event.startDate).toLocaleDateString()}
|
|
100
|
+
</div>
|
|
101
|
+
<div>
|
|
102
|
+
<strong>Çıkış:</strong> {new Date(event.endDate).toLocaleDateString()}
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
{/* Ödeme Bilgileri */}
|
|
107
|
+
{(event.totalAmount !== undefined || event.amountPaid !== undefined) && (
|
|
108
|
+
<div style={{ display: "flex", justifyContent: "space-between", marginBottom: "10px" }}>
|
|
109
|
+
{event.amountPaid !== undefined && (
|
|
110
|
+
<div>
|
|
111
|
+
<strong>Ödenen Miktar:</strong> ${event.amountPaid.toFixed(2)}
|
|
112
|
+
</div>
|
|
113
|
+
)}
|
|
114
|
+
{event.totalAmount !== undefined && (
|
|
115
|
+
<div>
|
|
116
|
+
<strong>Toplam Borç:</strong> ${event.totalAmount.toFixed(2)}
|
|
117
|
+
</div>
|
|
118
|
+
)}
|
|
119
|
+
</div>
|
|
120
|
+
)}
|
|
121
|
+
|
|
122
|
+
{/* Rezervasyon Durumu */}
|
|
123
|
+
{event.status && (
|
|
124
|
+
<div>
|
|
125
|
+
<strong>Durum:</strong> {event.status}
|
|
126
|
+
</div>
|
|
127
|
+
)}
|
|
128
|
+
|
|
129
|
+
{/* Rezervasyon Notu */}
|
|
130
|
+
{event.note && (
|
|
131
|
+
<div>
|
|
132
|
+
<strong>Not:</strong> {event.note}
|
|
133
|
+
</div>
|
|
134
|
+
)}
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
{/* Footer */}
|
|
139
|
+
<div
|
|
140
|
+
style={{
|
|
141
|
+
padding: "15px 20px",
|
|
142
|
+
borderTop: "1px solid #ddd",
|
|
143
|
+
display: "flex",
|
|
144
|
+
justifyContent: "flex-end",
|
|
145
|
+
gap: "10px",
|
|
146
|
+
borderBottomLeftRadius: "10px",
|
|
147
|
+
borderBottomRightRadius: "10px",
|
|
148
|
+
}}
|
|
149
|
+
>
|
|
150
|
+
{/* Düzenle Butonu */}
|
|
151
|
+
{onEdit && (
|
|
152
|
+
<button
|
|
153
|
+
onClick={() => onEdit(event)}
|
|
154
|
+
style={{
|
|
155
|
+
padding: "8px 16px",
|
|
156
|
+
backgroundColor: "#2196f3",
|
|
157
|
+
color: "#ffffff",
|
|
158
|
+
border: "none",
|
|
159
|
+
borderRadius: "4px",
|
|
160
|
+
cursor: "pointer",
|
|
161
|
+
fontSize: "14px",
|
|
162
|
+
display: "flex",
|
|
163
|
+
alignItems: "center",
|
|
164
|
+
gap: "5px",
|
|
165
|
+
transition: "background-color 0.2s",
|
|
166
|
+
}}
|
|
167
|
+
onMouseOver={(e) => (e.target.style.backgroundColor = "#1976d2")}
|
|
168
|
+
onMouseOut={(e) => (e.target.style.backgroundColor = "#2196f3")}
|
|
169
|
+
>
|
|
170
|
+
{/* Düzenle İkonu */}
|
|
171
|
+
<span role="img" aria-label="Düzenle">✏️</span>
|
|
172
|
+
Düzenle
|
|
173
|
+
</button>
|
|
174
|
+
)}
|
|
175
|
+
|
|
176
|
+
{/* Sil Butonu */}
|
|
177
|
+
{onDelete && (
|
|
178
|
+
<button
|
|
179
|
+
onClick={() => onDelete(event.id)}
|
|
180
|
+
style={{
|
|
181
|
+
padding: "8px 16px",
|
|
182
|
+
backgroundColor: "#f44336",
|
|
183
|
+
color: "#ffffff",
|
|
184
|
+
border: "none",
|
|
185
|
+
borderRadius: "4px",
|
|
186
|
+
cursor: "pointer",
|
|
187
|
+
fontSize: "14px",
|
|
188
|
+
display: "flex",
|
|
189
|
+
alignItems: "center",
|
|
190
|
+
gap: "5px",
|
|
191
|
+
transition: "background-color 0.2s",
|
|
192
|
+
}}
|
|
193
|
+
onMouseOver={(e) => (e.target.style.backgroundColor = "#d32f2f")}
|
|
194
|
+
onMouseOut={(e) => (e.target.style.backgroundColor = "#f44336")}
|
|
195
|
+
>
|
|
196
|
+
{/* Sil İkonu */}
|
|
197
|
+
<span role="img" aria-label="Sil">🗑️</span>
|
|
198
|
+
Sil
|
|
199
|
+
</button>
|
|
200
|
+
)}
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
);
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
export default EventTooltip;
|
|
207
|
+
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
const Indicator = ({ todayIndex, totalDays }) => {
|
|
4
|
-
if (todayIndex < 0 || todayIndex >= totalDays) {
|
|
5
|
-
return null; // Bugün timeline dışında ise çizgiyi gösterme
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
return (
|
|
9
|
-
<div
|
|
10
|
-
style={{
|
|
11
|
-
position: "absolute",
|
|
12
|
-
top: 0,
|
|
13
|
-
left: `calc(${(todayIndex + 0.5) / totalDays} * 100%)`, // Günün ortasına yerleştirmek için +0.5
|
|
14
|
-
width: "2px",
|
|
15
|
-
height: "100%",
|
|
16
|
-
backgroundColor: "transparent",
|
|
17
|
-
zIndex: 5,
|
|
18
|
-
borderStyle: "dashed", // Kesikli çizgi için
|
|
19
|
-
borderWidth: "0 0 0 2px", // Sadece sol tarafa kesikli çizgi
|
|
20
|
-
borderColor: "red",
|
|
21
|
-
}}
|
|
22
|
-
></div>
|
|
23
|
-
);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export default Indicator;
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
const Indicator = ({ todayIndex, totalDays }) => {
|
|
4
|
+
if (todayIndex < 0 || todayIndex >= totalDays) {
|
|
5
|
+
return null; // Bugün timeline dışında ise çizgiyi gösterme
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<div
|
|
10
|
+
style={{
|
|
11
|
+
position: "absolute",
|
|
12
|
+
top: 0,
|
|
13
|
+
left: `calc(${(todayIndex + 0.5) / totalDays} * 100%)`, // Günün ortasına yerleştirmek için +0.5
|
|
14
|
+
width: "2px",
|
|
15
|
+
height: "100%",
|
|
16
|
+
backgroundColor: "transparent",
|
|
17
|
+
zIndex: 5,
|
|
18
|
+
borderStyle: "dashed", // Kesikli çizgi için
|
|
19
|
+
borderWidth: "0 0 0 2px", // Sadece sol tarafa kesikli çizgi
|
|
20
|
+
borderColor: "red",
|
|
21
|
+
}}
|
|
22
|
+
></div>
|
|
23
|
+
);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default Indicator;
|
|
27
|
+
|