Перемещены поля адреса доставки под кнопки выбора типа доставки

- Все поля ввода адреса доставки теперь расположены под кнопками "С ДОСТАВКОЙ" / "САМОВЫВОЗ"
- Поля адреса скрыты когда выбран вариант "САМОВЫВОЗ"
- Поля адреса видны только когда выбрана "С ДОСТАВКОЙ"
- Переименован div с id="delivery-fields" на id="delivery-mode-fields" для лучшей организации
- Обновлена функция syncDeliveryType() для управления видимостью полей доставки
- Улучшена структура формы для лучшей UX

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-11 11:31:07 +03:00
parent 8044c4f0c0
commit 2b652253fe

View File

@@ -207,36 +207,34 @@
<!-- Скрытое поле для передачи значения is_delivery --> <!-- Скрытое поле для передачи значения is_delivery -->
<input type="hidden" id="{{ form.is_delivery.id_for_label }}" name="{{ form.is_delivery.name }}" value="on"> <input type="hidden" id="{{ form.is_delivery.id_for_label }}" name="{{ form.is_delivery.name }}" value="on">
<div class="row"> <!-- Кнопки выбора типа доставки -->
<div class="col-md-6"> <div class="mb-3">
<!-- Кнопки выбора типа доставки --> <label class="form-label d-block mb-2">Тип доставки</label>
<div class="mb-3"> <div class="btn-group w-100" role="group">
<label class="form-label d-block mb-2">Тип доставки</label> <input type="radio" class="btn-check" name="delivery-type" id="delivery-type-delivery" value="delivery" checked>
<div class="btn-group w-100" role="group"> <label class="btn btn-outline-primary" for="delivery-type-delivery">
<input type="radio" class="btn-check" name="delivery-type" id="delivery-type-delivery" value="delivery" checked> <i class="bi bi-truck"></i> С ДОСТАВКОЙ
<label class="btn btn-outline-primary" for="delivery-type-delivery"> </label>
<i class="bi bi-truck"></i> С ДОСТАВКОЙ
</label>
<input type="radio" class="btn-check" name="delivery-type" id="delivery-type-pickup" value="pickup"> <input type="radio" class="btn-check" name="delivery-type" id="delivery-type-pickup" value="pickup">
<label class="btn btn-outline-primary" for="delivery-type-pickup"> <label class="btn btn-outline-primary" for="delivery-type-pickup">
<i class="bi bi-shop"></i> САМОВЫВОЗ <i class="bi bi-shop"></i> САМОВЫВОЗ
</label> </label>
</div>
</div>
<!-- Чекбокс "Покупатель = получатель" -->
<div class="mb-3 form-check">
{{ form.customer_is_recipient }}
<label class="form-check-label" for="{{ form.customer_is_recipient.id_for_label }}">
Покупатель является получателем
</label>
</div>
</div> </div>
</div> </div>
<!-- Поля получателя (показываются когда покупатель != получатель) --> <!-- Поля доставки (показываются только если выбрана доставка) -->
<div class="row" id="recipient-fields" style="display: none;"> <div id="delivery-mode-fields" style="display: block;">
<!-- Чекбокс "Покупатель = получатель" -->
<div class="mb-3 form-check">
{{ form.customer_is_recipient }}
<label class="form-check-label" for="{{ form.customer_is_recipient.id_for_label }}">
Покупатель является получателем
</label>
</div>
<!-- Поля получателя (показываются когда покупатель != получатель) -->
<div class="row" id="recipient-fields" style="display: none;">
<div class="col-md-6"> <div class="col-md-6">
<div class="mb-3"> <div class="mb-3">
<label for="{{ form.recipient_name.id_for_label }}" class="form-label"> <label for="{{ form.recipient_name.id_for_label }}" class="form-label">
@@ -259,10 +257,10 @@
{% endif %} {% endif %}
</div> </div>
</div> </div>
</div> </div>
<div class="row" id="delivery-fields">
<!-- Способ указания адреса --> <!-- Способ указания адреса -->
<div class="row">
<div class="col-12"> <div class="col-12">
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ form.address_mode.label }}</label> <label class="form-label">{{ form.address_mode.label }}</label>
@@ -408,16 +406,17 @@
</div> </div>
</div> </div>
<div class="row" id="pickup-fields" style="display: none;"> <div class="row" id="pickup-fields" style="display: none;">
<div class="col-md-6"> <div class="col-md-6">
<div class="mb-3"> <div class="mb-3">
<label for="{{ form.pickup_shop.id_for_label }}" class="form-label"> <label for="{{ form.pickup_shop.id_for_label }}" class="form-label">
Точка самовывоза Точка самовывоза
</label> </label>
{{ form.pickup_shop }} {{ form.pickup_shop }}
{% if form.pickup_shop.errors %} {% if form.pickup_shop.errors %}
<div class="text-danger">{{ form.pickup_shop.errors }}</div> <div class="text-danger">{{ form.pickup_shop.errors }}</div>
{% endif %} {% endif %}
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -984,7 +983,7 @@ if (typeof $ !== 'undefined') {
// === УПРАВЛЕНИЕ ТИПОМ ДОСТАВКИ (КНОПКИ) === // === УПРАВЛЕНИЕ ТИПОМ ДОСТАВКИ (КНОПКИ) ===
const deliveryTypeRadios = document.querySelectorAll('input[name="delivery-type"]'); const deliveryTypeRadios = document.querySelectorAll('input[name="delivery-type"]');
const isDeliveryCheckbox = document.getElementById('{{ form.is_delivery.id_for_label }}'); const isDeliveryCheckbox = document.getElementById('{{ form.is_delivery.id_for_label }}');
const deliveryFields = document.getElementById('delivery-fields'); const deliveryModeFields = document.getElementById('delivery-mode-fields');
const pickupFields = document.getElementById('pickup-fields'); const pickupFields = document.getElementById('pickup-fields');
function syncDeliveryType() { function syncDeliveryType() {
@@ -993,14 +992,14 @@ if (typeof $ !== 'undefined') {
if (selectedType === 'delivery') { if (selectedType === 'delivery') {
// Доставка // Доставка
isDeliveryCheckbox.checked = true; isDeliveryCheckbox.checked = true;
deliveryFields.style.display = ''; deliveryModeFields.style.display = 'block';
pickupFields.style.display = 'none'; pickupFields.style.display = 'none';
console.log('[DELIVERY TYPE] Delivery selected'); console.log('[DELIVERY TYPE] Delivery selected');
} else { } else {
// Самовывоз // Самовывоз
isDeliveryCheckbox.checked = false; isDeliveryCheckbox.checked = false;
deliveryFields.style.display = 'none'; deliveryModeFields.style.display = 'none';
pickupFields.style.display = ''; pickupFields.style.display = 'block';
console.log('[DELIVERY TYPE] Pickup selected'); console.log('[DELIVERY TYPE] Pickup selected');
} }
} }