akfatimeline 2.2.3 → 2.2.5
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 +51 -12
- package/dist/components/Timeline/Timeline.jsx +8 -0
- package/dist/components/Timeline/TimelineContent.jsx +34 -9
- package/package.json +1 -1
- package/src/App.js +22 -0
- package/src/components/Timeline/Timeline.jsx +8 -0
- package/src/components/Timeline/TimelineContent.jsx +34 -9
package/dist/Timeline.js
CHANGED
|
@@ -4002,7 +4002,13 @@ const TimelineContent = _ref => {
|
|
|
4002
4002
|
// Context menu açıldığında çağrılacak callback
|
|
4003
4003
|
|
|
4004
4004
|
// Disable Dates
|
|
4005
|
-
disableDates = null
|
|
4005
|
+
disableDates = null,
|
|
4006
|
+
// { mode: 'exclude' | 'include', dates: [], ranges: [] }
|
|
4007
|
+
|
|
4008
|
+
// Auto Select Enabled Range
|
|
4009
|
+
autoSelectEnabledRange = false,
|
|
4010
|
+
// true = belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
4011
|
+
autoSelectRanges = null // [{ start: '2025-12-31', end: '2026-01-05' }, ...] - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
4006
4012
|
} = _ref;
|
|
4007
4013
|
// ------------------- HOOKS & STATE -------------------
|
|
4008
4014
|
const containerRef = (0,external_react_.useRef)(null);
|
|
@@ -4152,18 +4158,41 @@ const TimelineContent = _ref => {
|
|
|
4152
4158
|
}
|
|
4153
4159
|
}
|
|
4154
4160
|
|
|
4155
|
-
// Eğer disableDates mode: 'include' ise
|
|
4161
|
+
// Eğer disableDates mode: 'include' ise, tıklanan tarihin range'ini veya date'ini bul
|
|
4156
4162
|
let startDate = clickedDate;
|
|
4157
4163
|
let endDate = new Date(clickedDate.getTime() + 24 * 60 * 60 * 1000); // Varsayılan: 1 gün
|
|
4158
4164
|
let enabledRange = null;
|
|
4159
|
-
if (disableDates && disableDates.mode === 'include'
|
|
4160
|
-
|
|
4161
|
-
if (
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4165
|
+
if (disableDates && disableDates.mode === 'include') {
|
|
4166
|
+
// Önce ranges'te ara
|
|
4167
|
+
if (disableDates.ranges && disableDates.ranges.length > 0) {
|
|
4168
|
+
enabledRange = findEnabledRangeForDate(clickedDate, disableDates);
|
|
4169
|
+
if (enabledRange) {
|
|
4170
|
+
// Range bulundu, range'in tamamını seç
|
|
4171
|
+
startDate = enabledRange.start;
|
|
4172
|
+
// endDate'i direkt range'in end'i olarak kullan
|
|
4173
|
+
// Range'in end'i zaten son günü temsil ediyor (inclusive)
|
|
4174
|
+
endDate = enabledRange.end;
|
|
4175
|
+
}
|
|
4176
|
+
}
|
|
4177
|
+
|
|
4178
|
+
// Eğer range bulunamadıysa, dates array'inde tek tek tarih var mı kontrol et
|
|
4179
|
+
if (!enabledRange && disableDates.dates && disableDates.dates.length > 0) {
|
|
4180
|
+
const clickedDateOnly = new Date(clickedDate.getFullYear(), clickedDate.getMonth(), clickedDate.getDate());
|
|
4181
|
+
const foundDate = disableDates.dates.find(d => {
|
|
4182
|
+
const dObj = parseDate(d);
|
|
4183
|
+
const dOnly = new Date(dObj.getFullYear(), dObj.getMonth(), dObj.getDate());
|
|
4184
|
+
return dOnly.getTime() === clickedDateOnly.getTime();
|
|
4185
|
+
});
|
|
4186
|
+
if (foundDate) {
|
|
4187
|
+
// Tek bir tarih bulundu, o tarihi seç (1 günlük event)
|
|
4188
|
+
const foundDateObj = parseDate(foundDate);
|
|
4189
|
+
startDate = new Date(foundDateObj.getFullYear(), foundDateObj.getMonth(), foundDateObj.getDate());
|
|
4190
|
+
endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); // 1 gün sonrası
|
|
4191
|
+
enabledRange = {
|
|
4192
|
+
start: startDate,
|
|
4193
|
+
end: startDate
|
|
4194
|
+
}; // Tek gün için range oluştur
|
|
4195
|
+
}
|
|
4167
4196
|
}
|
|
4168
4197
|
}
|
|
4169
4198
|
|
|
@@ -5957,10 +5986,18 @@ const Timeline_Timeline_Timeline = _ref => {
|
|
|
5957
5986
|
// Özelleştirilebilir tuş haritası
|
|
5958
5987
|
|
|
5959
5988
|
// Disable Dates
|
|
5960
|
-
disableDates = null
|
|
5989
|
+
disableDates = null,
|
|
5990
|
+
// { mode: 'exclude' | 'include', dates: [], ranges: [] }
|
|
5961
5991
|
// mode: 'exclude' = belirtilen tarihler disabled, 'include' = belirtilen tarihler enabled (diğerleri disabled)
|
|
5962
5992
|
// dates: ['2025-01-15', '2025-01-20', ...] veya [Date, Date, ...] - Tekil tarihler
|
|
5963
5993
|
// ranges: [{ start: '2025-01-15', end: '2025-01-20' }, ...] veya [{ start: Date, end: Date }, ...] - Tarih aralıkları
|
|
5994
|
+
|
|
5995
|
+
// Auto Select Enabled Range
|
|
5996
|
+
autoSelectEnabledRange = false,
|
|
5997
|
+
// true = belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
5998
|
+
autoSelectRanges = null // [{ start: '2025-12-31', end: '2026-01-05' }, ...] - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
5999
|
+
// autoSelectRanges tanımlı olduğunda, tıklanan tarih bu range'lerden birinin içindeyse otomatik olarak tüm range seçilir
|
|
6000
|
+
// autoSelectRanges: null ise ve disableDates mode: 'include' ise, disableDates.ranges kullanılır (geriye dönük uyumluluk)
|
|
5964
6001
|
} = _ref;
|
|
5965
6002
|
// ---------------------------------------------------------
|
|
5966
6003
|
// 1) timelineData oluştur (dates, monthHeaders vs.)
|
|
@@ -6338,7 +6375,9 @@ const Timeline_Timeline_Timeline = _ref => {
|
|
|
6338
6375
|
eventBadgeResolver: eventBadgeResolver,
|
|
6339
6376
|
isLoading: isLoading,
|
|
6340
6377
|
loadingType: loadingType,
|
|
6341
|
-
disableDates: disableDates
|
|
6378
|
+
disableDates: disableDates,
|
|
6379
|
+
autoSelectEnabledRange: autoSelectEnabledRange,
|
|
6380
|
+
autoSelectRanges: autoSelectRanges
|
|
6342
6381
|
}), selectedEvent && /*#__PURE__*/external_react_default().createElement(Timeline_EventTooltip, {
|
|
6343
6382
|
event: selectedEvent,
|
|
6344
6383
|
position: tooltipPosition,
|
|
@@ -127,6 +127,12 @@ const Timeline = ({
|
|
|
127
127
|
// mode: 'exclude' = belirtilen tarihler disabled, 'include' = belirtilen tarihler enabled (diğerleri disabled)
|
|
128
128
|
// dates: ['2025-01-15', '2025-01-20', ...] veya [Date, Date, ...] - Tekil tarihler
|
|
129
129
|
// ranges: [{ start: '2025-01-15', end: '2025-01-20' }, ...] veya [{ start: Date, end: Date }, ...] - Tarih aralıkları
|
|
130
|
+
|
|
131
|
+
// Auto Select Enabled Range
|
|
132
|
+
autoSelectEnabledRange = false, // true = belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
133
|
+
autoSelectRanges = null, // [{ start: '2025-12-31', end: '2026-01-05' }, ...] - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
134
|
+
// autoSelectRanges tanımlı olduğunda, tıklanan tarih bu range'lerden birinin içindeyse otomatik olarak tüm range seçilir
|
|
135
|
+
// autoSelectRanges: null ise ve disableDates mode: 'include' ise, disableDates.ranges kullanılır (geriye dönük uyumluluk)
|
|
130
136
|
}) => {
|
|
131
137
|
// ---------------------------------------------------------
|
|
132
138
|
// 1) timelineData oluştur (dates, monthHeaders vs.)
|
|
@@ -541,6 +547,8 @@ const Timeline = ({
|
|
|
541
547
|
isLoading={isLoading}
|
|
542
548
|
loadingType={loadingType}
|
|
543
549
|
disableDates={disableDates}
|
|
550
|
+
autoSelectEnabledRange={autoSelectEnabledRange}
|
|
551
|
+
autoSelectRanges={autoSelectRanges}
|
|
544
552
|
|
|
545
553
|
/>
|
|
546
554
|
|
|
@@ -70,6 +70,10 @@ const TimelineContent = ({
|
|
|
70
70
|
|
|
71
71
|
// Disable Dates
|
|
72
72
|
disableDates = null, // { mode: 'exclude' | 'include', dates: [], ranges: [] }
|
|
73
|
+
|
|
74
|
+
// Auto Select Enabled Range
|
|
75
|
+
autoSelectEnabledRange = false, // true = belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
76
|
+
autoSelectRanges = null, // [{ start: '2025-12-31', end: '2026-01-05' }, ...] - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
73
77
|
}) => {
|
|
74
78
|
// ------------------- HOOKS & STATE -------------------
|
|
75
79
|
const containerRef = useRef(null);
|
|
@@ -221,19 +225,40 @@ const TimelineContent = ({
|
|
|
221
225
|
}
|
|
222
226
|
}
|
|
223
227
|
|
|
224
|
-
// Eğer disableDates mode: 'include' ise
|
|
228
|
+
// Eğer disableDates mode: 'include' ise, tıklanan tarihin range'ini veya date'ini bul
|
|
225
229
|
let startDate = clickedDate;
|
|
226
230
|
let endDate = new Date(clickedDate.getTime() + 24 * 60 * 60 * 1000); // Varsayılan: 1 gün
|
|
227
231
|
let enabledRange = null;
|
|
228
232
|
|
|
229
|
-
if (disableDates && disableDates.mode === 'include'
|
|
230
|
-
|
|
231
|
-
if (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
233
|
+
if (disableDates && disableDates.mode === 'include') {
|
|
234
|
+
// Önce ranges'te ara
|
|
235
|
+
if (disableDates.ranges && disableDates.ranges.length > 0) {
|
|
236
|
+
enabledRange = findEnabledRangeForDate(clickedDate, disableDates);
|
|
237
|
+
if (enabledRange) {
|
|
238
|
+
// Range bulundu, range'in tamamını seç
|
|
239
|
+
startDate = enabledRange.start;
|
|
240
|
+
// endDate'i direkt range'in end'i olarak kullan
|
|
241
|
+
// Range'in end'i zaten son günü temsil ediyor (inclusive)
|
|
242
|
+
endDate = enabledRange.end;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Eğer range bulunamadıysa, dates array'inde tek tek tarih var mı kontrol et
|
|
247
|
+
if (!enabledRange && disableDates.dates && disableDates.dates.length > 0) {
|
|
248
|
+
const clickedDateOnly = new Date(clickedDate.getFullYear(), clickedDate.getMonth(), clickedDate.getDate());
|
|
249
|
+
const foundDate = disableDates.dates.find((d) => {
|
|
250
|
+
const dObj = parseDate(d);
|
|
251
|
+
const dOnly = new Date(dObj.getFullYear(), dObj.getMonth(), dObj.getDate());
|
|
252
|
+
return dOnly.getTime() === clickedDateOnly.getTime();
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
if (foundDate) {
|
|
256
|
+
// Tek bir tarih bulundu, o tarihi seç (1 günlük event)
|
|
257
|
+
const foundDateObj = parseDate(foundDate);
|
|
258
|
+
startDate = new Date(foundDateObj.getFullYear(), foundDateObj.getMonth(), foundDateObj.getDate());
|
|
259
|
+
endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); // 1 gün sonrası
|
|
260
|
+
enabledRange = { start: startDate, end: startDate }; // Tek gün için range oluştur
|
|
261
|
+
}
|
|
237
262
|
}
|
|
238
263
|
}
|
|
239
264
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akfatimeline",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.5",
|
|
4
4
|
"description": "A customizable timeline component for React applications with disableDates, custom header buttons, and past date protection features",
|
|
5
5
|
"main": "./src/library.js",
|
|
6
6
|
"module": "./src/library.js",
|
package/src/App.js
CHANGED
|
@@ -55,6 +55,23 @@ const App = () => {
|
|
|
55
55
|
],
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
+
// Auto Select Enabled Range - Belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
59
|
+
const [autoSelectEnabledRange, setAutoSelectEnabledRange] = useState(true); // true = aktif, false = pasif
|
|
60
|
+
|
|
61
|
+
// Auto Select Ranges - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
62
|
+
// Bu range'lere tıklandığında otomatik olarak tüm range seçilir
|
|
63
|
+
const autoSelectRanges = [
|
|
64
|
+
{
|
|
65
|
+
start: '2025-12-31', // 31 Aralık 2025
|
|
66
|
+
end: '2026-01-05', // 5 Ocak 2026
|
|
67
|
+
},
|
|
68
|
+
// İstediğiniz kadar range ekleyebilirsiniz
|
|
69
|
+
// {
|
|
70
|
+
// start: '2026-02-01',
|
|
71
|
+
// end: '2026-02-10',
|
|
72
|
+
// },
|
|
73
|
+
];
|
|
74
|
+
|
|
58
75
|
// Cell Tooltip için örnek fiyat verisi
|
|
59
76
|
// Her gün için farklı fiyatlar tanımlanabilir
|
|
60
77
|
const getCellTooltipContent = (resource, dateObj) => {
|
|
@@ -450,6 +467,9 @@ const resources = [
|
|
|
450
467
|
<button onClick={() => setIsLoading(!isLoading)}>
|
|
451
468
|
Loading: {isLoading ? "Açık" : "Kapalı"}
|
|
452
469
|
</button>
|
|
470
|
+
<button onClick={() => setAutoSelectEnabledRange(!autoSelectEnabledRange)}>
|
|
471
|
+
Auto Select Enabled Range: {autoSelectEnabledRange ? "Açık" : "Kapalı"}
|
|
472
|
+
</button>
|
|
453
473
|
<button onClick={handleToday}>Bugüne Git</button>
|
|
454
474
|
<button onClick={handleRetreat}>5 Gün Geri</button>
|
|
455
475
|
<button onClick={handleAdvance}>5 Gün İleri</button>
|
|
@@ -561,6 +581,8 @@ const resources = [
|
|
|
561
581
|
/>
|
|
562
582
|
}
|
|
563
583
|
disableDates={disableDates}
|
|
584
|
+
autoSelectEnabledRange={autoSelectEnabledRange}
|
|
585
|
+
autoSelectRanges={autoSelectRanges}
|
|
564
586
|
|
|
565
587
|
/>
|
|
566
588
|
</div>
|
|
@@ -127,6 +127,12 @@ const Timeline = ({
|
|
|
127
127
|
// mode: 'exclude' = belirtilen tarihler disabled, 'include' = belirtilen tarihler enabled (diğerleri disabled)
|
|
128
128
|
// dates: ['2025-01-15', '2025-01-20', ...] veya [Date, Date, ...] - Tekil tarihler
|
|
129
129
|
// ranges: [{ start: '2025-01-15', end: '2025-01-20' }, ...] veya [{ start: Date, end: Date }, ...] - Tarih aralıkları
|
|
130
|
+
|
|
131
|
+
// Auto Select Enabled Range
|
|
132
|
+
autoSelectEnabledRange = false, // true = belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
133
|
+
autoSelectRanges = null, // [{ start: '2025-12-31', end: '2026-01-05' }, ...] - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
134
|
+
// autoSelectRanges tanımlı olduğunda, tıklanan tarih bu range'lerden birinin içindeyse otomatik olarak tüm range seçilir
|
|
135
|
+
// autoSelectRanges: null ise ve disableDates mode: 'include' ise, disableDates.ranges kullanılır (geriye dönük uyumluluk)
|
|
130
136
|
}) => {
|
|
131
137
|
// ---------------------------------------------------------
|
|
132
138
|
// 1) timelineData oluştur (dates, monthHeaders vs.)
|
|
@@ -541,6 +547,8 @@ const Timeline = ({
|
|
|
541
547
|
isLoading={isLoading}
|
|
542
548
|
loadingType={loadingType}
|
|
543
549
|
disableDates={disableDates}
|
|
550
|
+
autoSelectEnabledRange={autoSelectEnabledRange}
|
|
551
|
+
autoSelectRanges={autoSelectRanges}
|
|
544
552
|
|
|
545
553
|
/>
|
|
546
554
|
|
|
@@ -70,6 +70,10 @@ const TimelineContent = ({
|
|
|
70
70
|
|
|
71
71
|
// Disable Dates
|
|
72
72
|
disableDates = null, // { mode: 'exclude' | 'include', dates: [], ranges: [] }
|
|
73
|
+
|
|
74
|
+
// Auto Select Enabled Range
|
|
75
|
+
autoSelectEnabledRange = false, // true = belirtilen range'lere tıklandığında otomatik olarak tüm range'i seç
|
|
76
|
+
autoSelectRanges = null, // [{ start: '2025-12-31', end: '2026-01-05' }, ...] - Auto-select için range'ler (disableDates'ten bağımsız)
|
|
73
77
|
}) => {
|
|
74
78
|
// ------------------- HOOKS & STATE -------------------
|
|
75
79
|
const containerRef = useRef(null);
|
|
@@ -221,19 +225,40 @@ const TimelineContent = ({
|
|
|
221
225
|
}
|
|
222
226
|
}
|
|
223
227
|
|
|
224
|
-
// Eğer disableDates mode: 'include' ise
|
|
228
|
+
// Eğer disableDates mode: 'include' ise, tıklanan tarihin range'ini veya date'ini bul
|
|
225
229
|
let startDate = clickedDate;
|
|
226
230
|
let endDate = new Date(clickedDate.getTime() + 24 * 60 * 60 * 1000); // Varsayılan: 1 gün
|
|
227
231
|
let enabledRange = null;
|
|
228
232
|
|
|
229
|
-
if (disableDates && disableDates.mode === 'include'
|
|
230
|
-
|
|
231
|
-
if (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
233
|
+
if (disableDates && disableDates.mode === 'include') {
|
|
234
|
+
// Önce ranges'te ara
|
|
235
|
+
if (disableDates.ranges && disableDates.ranges.length > 0) {
|
|
236
|
+
enabledRange = findEnabledRangeForDate(clickedDate, disableDates);
|
|
237
|
+
if (enabledRange) {
|
|
238
|
+
// Range bulundu, range'in tamamını seç
|
|
239
|
+
startDate = enabledRange.start;
|
|
240
|
+
// endDate'i direkt range'in end'i olarak kullan
|
|
241
|
+
// Range'in end'i zaten son günü temsil ediyor (inclusive)
|
|
242
|
+
endDate = enabledRange.end;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Eğer range bulunamadıysa, dates array'inde tek tek tarih var mı kontrol et
|
|
247
|
+
if (!enabledRange && disableDates.dates && disableDates.dates.length > 0) {
|
|
248
|
+
const clickedDateOnly = new Date(clickedDate.getFullYear(), clickedDate.getMonth(), clickedDate.getDate());
|
|
249
|
+
const foundDate = disableDates.dates.find((d) => {
|
|
250
|
+
const dObj = parseDate(d);
|
|
251
|
+
const dOnly = new Date(dObj.getFullYear(), dObj.getMonth(), dObj.getDate());
|
|
252
|
+
return dOnly.getTime() === clickedDateOnly.getTime();
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
if (foundDate) {
|
|
256
|
+
// Tek bir tarih bulundu, o tarihi seç (1 günlük event)
|
|
257
|
+
const foundDateObj = parseDate(foundDate);
|
|
258
|
+
startDate = new Date(foundDateObj.getFullYear(), foundDateObj.getMonth(), foundDateObj.getDate());
|
|
259
|
+
endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); // 1 gün sonrası
|
|
260
|
+
enabledRange = { start: startDate, end: startDate }; // Tek gün için range oluştur
|
|
261
|
+
}
|
|
237
262
|
}
|
|
238
263
|
}
|
|
239
264
|
|