diff --git a/packages/main/src/RadioButton.hbs b/packages/main/src/RadioButton.hbs
index 785d49d83a7d..951ba6e13463 100644
--- a/packages/main/src/RadioButton.hbs
+++ b/packages/main/src/RadioButton.hbs
@@ -14,8 +14,8 @@
diff --git a/packages/main/src/RadioButton.js b/packages/main/src/RadioButton.js
index 32df9171f94b..83bef6818e05 100644
--- a/packages/main/src/RadioButton.js
+++ b/packages/main/src/RadioButton.js
@@ -1,5 +1,4 @@
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
-import { getCompactSize } from "@ui5/webcomponents-base/dist/config/CompactSize.js";
import { getRTL } from "@ui5/webcomponents-base/dist/config/RTL.js";
import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
@@ -167,21 +166,6 @@ const metadata = {
invalidateOnContentDensityChange: true,
};
-const SVGConfig = {
- "compact": {
- x: 16,
- y: 16,
- rInner: 3,
- rOuter: 8,
- },
- "default": {
- x: 22,
- y: 22,
- rInner: 5,
- rOuter: 11,
- },
-};
-
/**
* @class
*
@@ -404,10 +388,6 @@ class RadioButton extends UI5Element {
return this.valueState === "None" ? "1" : "2";
}
- get circle() {
- return getCompactSize() ? SVGConfig.compact : SVGConfig.default;
- }
-
get rtl() {
return getRTL() ? "rtl" : undefined;
}
diff --git a/packages/main/src/themes/RadioButton.css b/packages/main/src/themes/RadioButton.css
index 4e79c609833d..7003fa17714c 100644
--- a/packages/main/src/themes/RadioButton.css
+++ b/packages/main/src/themes/RadioButton.css
@@ -5,6 +5,7 @@
}
:host {
+ min-width: var(--_ui5_radiobutton_min_width);
max-width: 100%;
text-overflow: ellipsis;
overflow: hidden;
@@ -62,22 +63,27 @@
fill: var(--sapField_ReadOnly_Background);
stroke: var(--sapField_ReadOnly_BorderColor);
}
+/* State */
+:host([value-state="Error"]) .ui5-radio-svg-outer,
+:host([value-state="Warning"]) .ui5-radio-svg-outer {
+ stroke-width: 2;
+}
/* Error state */
-:host([value-state="Error"][selected]) .ui5-radio-root .ui5-radio-svg-inner {
+:host([value-state="Error"][selected]) .ui5-radio-svg-inner {
fill: var(--_ui5_radiobutton_selected_error_fill);
}
-:host([value-state="Error"]) .ui5-radio-root .ui5-radio-svg-outer,
+:host([value-state="Error"]) .ui5-radio-svg-outer,
:host([value-state="Error"]) .ui5-radio-root:hover .ui5-radio-inner.ui5-radio-inner--hoverable:hover .ui5-radio-svg-outer {
stroke: var(--sapField_InvalidColor);
fill: var(--sapField_InvalidBackground);
}
/* Warning state */
-:host([value-state="Warning"][selected]) .ui5-radio-root .ui5-radio-svg-inner {
+:host([value-state="Warning"][selected]) .ui5-radio-svg-inner {
fill: var(--_ui5_radiobutton_selected_warning_fill);
}
-:host([value-state="Warning"]) .ui5-radio-root .ui5-radio-svg-outer,
+:host([value-state="Warning"]) .ui5-radio-svg-outer,
:host([value-state="Warning"]) .ui5-radio-root:hover .ui5-radio-inner.ui5-radio-inner--hoverable:hover .ui5-radio-svg-outer {
stroke: var(--sapField_WarningColor);
fill: var(--sapField_WarningBackground);
@@ -99,12 +105,15 @@
/* Inner */
.ui5-radio-inner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
width: 2.75rem;
height: 2.75rem;
font-size: 1rem; /* override font size of the message dialog */
pointer-events: none;
vertical-align: top;
- display: inline-block;
}
.ui5-radio-inner:focus {
@@ -112,9 +121,13 @@
}
.ui5-radio-inner input {
- margin: 0; /* FF puts margin */
+ -webkit-appearance: none;
visibility: hidden;
width: 0;
+ left: 0;
+ position: absolute;
+ font-size: inherit;
+ margin: 0; /* FF puts margin */
}
/* Label */
@@ -143,21 +156,32 @@ ui5-label.ui5-radio-label {
/* SVG */
.ui5-radio-svg {
- height: 2.75rem;
- width: 2.75rem;
+ height: 1.375rem;
+ width: 1.375rem;
+ overflow: visible;
pointer-events: none;
}
-.ui5-radio-svg .ui5-radio-svg-outer {
+.ui5-radio-svg-outer {
fill: var(--sapField_Background);
stroke: currentColor;
+ stroke-width: 1;
}
-.ui5-radio-svg .ui5-radio-svg-inner {
+.ui5-radio-svg-inner {
fill: none;
}
+.ui5-radio-svg-outer,
+.ui5-radio-svg-inner {
+ flex-shrink: 0;
+}
+
/* Compact size */
+:host([data-ui5-compact-size]) {
+ min-width: var(--_ui5_radiobutton_min_width_compact);
+}
+
:host([data-ui5-compact-size]) .ui5-radio-root {
height : 2rem;
}
@@ -166,6 +190,11 @@ ui5-label.ui5-radio-label {
height: auto;
}
+:host([data-ui5-compact-size]) .ui5-radio-svg {
+ height: 1rem;
+ width: 1rem;
+}
+
:host([data-ui5-compact-size][wrap][text]) ui5-label.ui5-radio-label {
padding-top: .5rem;
padding-bottom: .5rem;
@@ -190,11 +219,6 @@ ui5-label.ui5-radio-label {
justify-content: center;
}
-:host([data-ui5-compact-size]) .ui5-radio-root .ui5-radio-inner .ui5-radio-svg {
- height: 2rem;
- width: 2rem;
-}
-
:host([data-ui5-compact-size]) .ui5-radio-root ui5-label.ui5-radio-label {
width: calc(100% - 2rem + 1px);
}
@@ -214,4 +238,4 @@ ui5-label.ui5-radio-label {
/* ListItem Context */
:host(.ui5-li-singlesel-radiobtn) .ui5-radio-root .ui5-radio-inner .ui5-radio-svg-outer {
fill: var(--sapList_Background);
-}
+}
\ No newline at end of file
diff --git a/packages/main/src/themes/base/RadioButton-parameters.css b/packages/main/src/themes/base/RadioButton-parameters.css
index c581143dc161..d2b4bdcc629d 100644
--- a/packages/main/src/themes/base/RadioButton-parameters.css
+++ b/packages/main/src/themes/base/RadioButton-parameters.css
@@ -1,4 +1,6 @@
:root {
+ --_ui5_radiobutton_min_width: 2.75rem;
+ --_ui5_radiobutton_min_width_compact: 2rem;
--_ui5_radiobutton_hover_fill: var(--sapField_Hover_Background);
--_ui5_radiobutton_border_width: 1px;
--_ui5_radiobutton_selected_fill: var(--sapSelectedColor);