feat(ui): улучшения UX для промокодов и форм заказа
- Добавлена кнопка копирования промокода в клипборд с визуальной обратной связью - Улучшено отображение ошибок валидации в форме заказа (is-invalid класс) - Добавлен флаг _draftFieldsFilled для корректной обработки пустого черновика - Убран value="1" для quantity чтобы избежать конфликтов с draft-data Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -459,7 +459,7 @@ class OrderItemForm(forms.ModelForm):
|
||||
fields = ['product', 'product_kit', 'sales_unit', 'quantity', 'price', 'is_custom_price', 'is_from_showcase']
|
||||
# ВАЖНО: НЕ включаем 'id' в fields - это предотвращает ошибку валидации
|
||||
widgets = {
|
||||
'quantity': forms.NumberInput(attrs={'min': 1, 'value': 1}),
|
||||
'quantity': forms.NumberInput(attrs={'min': 1}),
|
||||
# Скрываем поля product и product_kit - они будут заполняться через JS
|
||||
'product': forms.HiddenInput(),
|
||||
'product_kit': forms.HiddenInput(),
|
||||
@@ -474,7 +474,11 @@ class OrderItemForm(forms.ModelForm):
|
||||
# Bootstrap классы
|
||||
for field_name, field in self.fields.items():
|
||||
if not isinstance(field.widget, forms.HiddenInput):
|
||||
field.widget.attrs.update({'class': 'form-control'})
|
||||
css_class = 'form-control'
|
||||
# Добавляем is-invalid если есть ошибки в поле
|
||||
if self.errors.get(field_name):
|
||||
css_class += ' is-invalid'
|
||||
field.widget.attrs.update({'class': css_class})
|
||||
|
||||
# Поля product и product_kit опциональны
|
||||
self.fields['product'].required = False
|
||||
|
||||
Reference in New Issue
Block a user