diff --git a/src/shiftings/shifts/forms/shift.py b/src/shiftings/shifts/forms/shift.py index 147e851..9070ab2 100644 --- a/src/shiftings/shifts/forms/shift.py +++ b/src/shiftings/shifts/forms/shift.py @@ -36,6 +36,8 @@ def clean(self) -> Dict[str, Any]: start = cleaned_data.get('start') end = cleaned_data.get('end') if start and end and start > end: + self.add_error('end', ValidationError("")) + self.add_error('start', ValidationError("")) raise ValidationError(_('End time must be after start time')) ## TODO: raise form error if not valid, but first implement proper error display in template diff --git a/src/shiftings/shifts/templates/shifts/create_shift.html b/src/shiftings/shifts/templates/shifts/create_shift.html index 9b5b425..c41abad 100644 --- a/src/shiftings/shifts/templates/shifts/create_shift.html +++ b/src/shiftings/shifts/templates/shifts/create_shift.html @@ -29,6 +29,16 @@

Update Shift "{{ name }} for {{ organization }}"

{% csrf_token %} + {% if form.non_field_errors %} + + {% endif %} {% bootstrap_field form.name %} {% bootstrap_field form.place %}
@@ -87,4 +97,4 @@

{% trans "Create from Template" %}

{% endif %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/shiftings/static/css/base.css b/src/shiftings/static/css/base.css index 839d25b..1280c26 100644 --- a/src/shiftings/static/css/base.css +++ b/src/shiftings/static/css/base.css @@ -97,6 +97,36 @@ nav .dropdown { border-color: var(--bs-body-color) !important; } +.form-control.is-valid:not([required]), +.form-control-color.is-valid:not([required]) { + border-color: var(--bs-gray-700); + box-shadow: none; + background-image: none; + padding-right: .75rem; +} + +.form-select.is-valid { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-position: right .75rem center; + background-size: 16px 12px; +} + +.form-select.is-valid:not([required]) { + border-color: var(--bs-gray-700); + box-shadow: none; + padding-right: 2.25rem; +} + +.form-check-input.is-valid:not([required]) { + border-color: var(--bs-body-color) !important; + background-color: transparent; + box-shadow: none; +} + +.form-check-input.is-valid:not([required]) ~ .form-check-label { + color: var(--bs-body-color) !important; +} + .plain-link, .link, .link-remove { cursor: pointer; text-decoration: none;