From aebac16f3f0c5307f37df030e5f4094910203dde Mon Sep 17 00:00:00 2001 From: "Ahmad K. Bawaneh" Date: Sun, 22 Dec 2024 15:46:26 +0300 Subject: [PATCH] fix #458 RadioGroup ignores setValue in readOnly-mode --- .../main/java/org/dominokit/domino/ui/forms/Radio.java | 9 +++++++-- .../css/domino-ui/dui-components/domino-ui-forms.css | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/domino-ui/src/main/java/org/dominokit/domino/ui/forms/Radio.java b/domino-ui/src/main/java/org/dominokit/domino/ui/forms/Radio.java index 3083d7b37..4bd030ec9 100644 --- a/domino-ui/src/main/java/org/dominokit/domino/ui/forms/Radio.java +++ b/domino-ui/src/main/java/org/dominokit/domino/ui/forms/Radio.java @@ -93,7 +93,7 @@ public Radio(T value, String label) { withValue(value); EventListener listener = evt -> { - if (isEnabled() && !isChecked()) { + if (isEnabled() && !isChecked() && !isReadOnly()) { check(); } }; @@ -273,7 +273,7 @@ private Radio setChecked(boolean value, boolean silent) { return this; } if (nonNull(radioGroup)) { - if (!(radioGroup.isReadOnly() || radioGroup.isDisabled())) { + if (!radioGroup.isDisabled()) { T oldValue = (T) radioGroup.getValue(); radioGroup.getRadios().stream() .filter(Radio::isChecked) @@ -758,4 +758,9 @@ public T withRadioGroup(ChildHandler, RadioGroup> handler) { handler.apply(this, radioGroup); return (T) this; } + + @Override + public boolean isReadOnly() { + return super.isReadOnly() || radioGroup.isReadOnly(); + } } diff --git a/domino-ui/src/main/resources/org/dominokit/domino/ui/public/css/domino-ui/dui-components/domino-ui-forms.css b/domino-ui/src/main/resources/org/dominokit/domino/ui/public/css/domino-ui/dui-components/domino-ui-forms.css index 1d3a608b4..36357087e 100644 --- a/domino-ui/src/main/resources/org/dominokit/domino/ui/public/css/domino-ui/dui-components/domino-ui-forms.css +++ b/domino-ui/src/main/resources/org/dominokit/domino/ui/public/css/domino-ui/dui-components/domino-ui-forms.css @@ -534,10 +534,15 @@ textarea.dui-field-input { --dui-accent-d-2: var(--dui-form-field-disabled-color-darker); pointer-events: none; } + .dui-form-radio[disabled] .dui-radio-label{ color: var(--dui-form-field-disabled-color); } +.dui-form-radio-group[readonly] .dui-form-radio, +.dui-form-radio[readonly] { + pointer-events: none; +} .dui-form-radio { position: relative;