diff --git a/myproject/orders/static/orders/js/date_filter.js b/myproject/orders/static/orders/js/date_filter.js index 2182aeb..c950165 100644 --- a/myproject/orders/static/orders/js/date_filter.js +++ b/myproject/orders/static/orders/js/date_filter.js @@ -365,6 +365,50 @@ class DateCarousel { this.boundClearDate = this.clearDate.bind(this); clearBtn.addEventListener('click', this.boundClearDate); } + + // Календарный выбор даты + const calendarBtn = filterContainer.querySelector('.calendar-picker-btn'); + const calendarInput = filterContainer.querySelector('.calendar-picker-input'); + if (calendarBtn && calendarInput) { + calendarBtn.removeEventListener('click', this.boundOpenCalendar); + this.boundOpenCalendar = () => { + if (calendarInput.showPicker) { + calendarInput.showPicker(); + } else { + calendarInput.click(); + } + }; + calendarBtn.addEventListener('click', this.boundOpenCalendar); + + calendarInput.removeEventListener('change', this.boundCalendarSelect); + this.boundCalendarSelect = this.selectFromCalendar.bind(this); + calendarInput.addEventListener('change', this.boundCalendarSelect); + } + } + + /** + * Выбор даты через календарь + */ + selectFromCalendar(event) { + const selectedDate = event.target.value; + if (!selectedDate) return; + + const date = new Date(selectedDate); + date.setHours(0, 0, 0, 0); + + const formattedDate = this.formatDate(date); + this.minInput.value = formattedDate; + this.maxInput.value = formattedDate; + + this.centerDate = date; + this.saveCenterDate(); + this.render(); + this.attachTodayHandler(); + + const form = this.minInput.closest('form'); + if (form) { + form.submit(); + } } /** diff --git a/myproject/orders/templates/orders/components/date_range_filter.html b/myproject/orders/templates/orders/components/date_range_filter.html index 96746b1..d9ec9fb 100644 --- a/myproject/orders/templates/orders/components/date_range_filter.html +++ b/myproject/orders/templates/orders/components/date_range_filter.html @@ -32,6 +32,14 @@ title="Завтра"> Завтра + +