Исправлена проблема с центрированием выбранной даты: теперь выбранная дата остается в центре при клике, включая даты за пределами видимой области

This commit is contained in:
2025-11-07 20:06:21 +03:00
parent 7a725f485a
commit b9665e8761

View File

@@ -56,7 +56,7 @@ class DateCarousel {
* Загрузка выбранной даты из скрытых полей фильтра * Загрузка выбранной даты из скрытых полей фильтра
*/ */
loadSelectedDate() { loadSelectedDate() {
// Если есть выбранная дата в фильтре, не центрируем на ней - пусть остается в том же положении // Если есть выбранная дата в фильтре, центрируем на ней, чтобы она была видна
if (this.minInput.value && this.maxInput.value && if (this.minInput.value && this.maxInput.value &&
this.minInput.value === this.maxInput.value) { this.minInput.value === this.maxInput.value) {
const parts = this.minInput.value.split('-'); const parts = this.minInput.value.split('-');
@@ -68,8 +68,9 @@ class DateCarousel {
); );
selectedDate.setHours(0, 0, 0, 0); selectedDate.setHours(0, 0, 0, 0);
// Не изменяем центральную дату, просто оставим как есть // Центрируем на выбранной дате, чтобы она всегда была видна
console.log(`Selected date: ${this.formatDate(selectedDate)}, not centering`); this.centerDate = selectedDate;
console.log(`Centering on selected date: ${this.formatDate(selectedDate)}`);
} }
} else { } else {
// Если фильтра нет, центрируем на сегодняшнем дне // Если фильтра нет, центрируем на сегодняшнем дне
@@ -251,6 +252,10 @@ class DateCarousel {
this.minInput.value = formattedDate; this.minInput.value = formattedDate;
this.maxInput.value = formattedDate; this.maxInput.value = formattedDate;
// Обновляем центральную дату, чтобы выбранная дата была в центре
this.centerDate = new Date(date);
this.centerDate.setHours(0, 0, 0, 0);
// Визуальная обратная связь // Визуальная обратная связь
btn.classList.add('clicked'); btn.classList.add('clicked');
setTimeout(() => btn.classList.remove('clicked'), 300); setTimeout(() => btn.classList.remove('clicked'), 300);