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 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 // { mode: 'exclude' | 'include', dates: [], ranges: [] }
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 ve ranges varsa, tıklanan tarihin range'ini bul
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' && disableDates.ranges && disableDates.ranges.length > 0) {
4160
- enabledRange = findEnabledRangeForDate(clickedDate, disableDates);
4161
- if (enabledRange) {
4162
- // Range bulundu, range'in tamamını seç
4163
- startDate = enabledRange.start;
4164
- // endDate'i direkt range'in end'i olarak kullan
4165
- // Range'in end'i zaten son günü temsil ediyor (inclusive)
4166
- endDate = enabledRange.end;
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 // { mode: 'exclude' | 'include', dates: [], ranges: [] }
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 ve ranges varsa, tıklanan tarihin range'ini bul
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' && disableDates.ranges && disableDates.ranges.length > 0) {
230
- enabledRange = findEnabledRangeForDate(clickedDate, disableDates);
231
- if (enabledRange) {
232
- // Range bulundu, range'in tamamını seç
233
- startDate = enabledRange.start;
234
- // endDate'i direkt range'in end'i olarak kullan
235
- // Range'in end'i zaten son günü temsil ediyor (inclusive)
236
- endDate = enabledRange.end;
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",
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 ve ranges varsa, tıklanan tarihin range'ini bul
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' && disableDates.ranges && disableDates.ranges.length > 0) {
230
- enabledRange = findEnabledRangeForDate(clickedDate, disableDates);
231
- if (enabledRange) {
232
- // Range bulundu, range'in tamamını seç
233
- startDate = enabledRange.start;
234
- // endDate'i direkt range'in end'i olarak kullan
235
- // Range'in end'i zaten son günü temsil ediyor (inclusive)
236
- endDate = enabledRange.end;
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