From 4950ba8d0366933d09d84218e6d3f7d26e799fe4 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 6 May 2025 13:00:14 +0200 Subject: [PATCH] add has-error for coloring error-messages --- src/pretix/static/pretixpresale/js/ui/main.js | 10 +++++++++- src/pretix/static/pretixpresale/scss/_forms.scss | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/pretix/static/pretixpresale/js/ui/main.js b/src/pretix/static/pretixpresale/js/ui/main.js index 3b5a72aec8..c38b1c8c27 100644 --- a/src/pretix/static/pretixpresale/js/ui/main.js +++ b/src/pretix/static/pretixpresale/js/ui/main.js @@ -83,7 +83,8 @@ var form_handlers = function (el) { Math.abs(+new Date(opts.minDate) - new Date()) < Math.abs(+new Date(opts.maxDate) - new Date()) ) ? opts.minDate : opts.maxDate; } - var alert = $('label[for=' + this.id + '] .label-alert'); + var container = $(this).closest(".form-group"); + var alert = $('.label-alert', container); $(this).datetimepicker(opts).on("dp.hide", function() { // when min/max is used in datetimepicker, closing and re-opening the picker opens at the wrong date // therefore keep the current viewDate and re-set it after datetimepicker is done hiding @@ -93,6 +94,7 @@ var form_handlers = function (el) { $dtp.viewDate(currentViewDate); }, 50); }).on('dp.error', function (e) { + container.addClass("has-error"); if (e.date) { if (e.date.isBefore(opts["minDate"])) { alert.text(gettext("The date you entered is too early.")); @@ -107,7 +109,13 @@ var form_handlers = function (el) { self.focus(); }, 50); }).on('dp.change', function (e) { + container.removeClass("has-error"); alert.text(""); + }).on('blur', function (e) { + if (!this.value) { + container.removeClass("has-error"); + alert.text(""); + } }); diff --git a/src/pretix/static/pretixpresale/scss/_forms.scss b/src/pretix/static/pretixpresale/scss/_forms.scss index 95ca46ba76..ad9ae3ca6b 100644 --- a/src/pretix/static/pretixpresale/scss/_forms.scss +++ b/src/pretix/static/pretixpresale/scss/_forms.scss @@ -154,6 +154,10 @@ output { font-size: 85%; color: $text-muted; } +.has-error .label-required, +.has-error .label-alert { + color: inherit; +} .label-required { &:before { content: " (";