diff --git a/packages/main/cypress/specs/CheckBox.cy.tsx b/packages/main/cypress/specs/CheckBox.cy.tsx
index c8db82a08613..b9af06906ec9 100644
--- a/packages/main/cypress/specs/CheckBox.cy.tsx
+++ b/packages/main/cypress/specs/CheckBox.cy.tsx
@@ -369,6 +369,47 @@ describe("CheckBox general interaction", () => {
});
});
+describe("Font-size scaling", () => {
+ it("scales inner box size when font-size is set on the host", () => {
+ cy.mount( );
+
+ cy.get("[ui5-checkbox]")
+ .shadow()
+ .find(".ui5-checkbox-inner")
+ .then($inner => {
+ const size = $inner[0].getBoundingClientRect();
+ expect(size.width).to.be.greaterThan(22);
+ expect(size.height).to.be.greaterThan(22);
+ });
+ });
+
+ it("scales checkmark icon size when font-size is set on the host", () => {
+ cy.mount( );
+
+ cy.get("[ui5-checkbox]")
+ .shadow()
+ .find(".ui5-checkbox-icon")
+ .then($icon => {
+ const size = $icon[0].getBoundingClientRect();
+ expect(size.width).to.be.greaterThan(16);
+ expect(size.height).to.be.greaterThan(16);
+ });
+ });
+
+ it("scales display-only icon size when font-size is set on the host", () => {
+ cy.mount( );
+
+ cy.get("[ui5-checkbox]")
+ .shadow()
+ .find(".ui5-checkbox-display-only-icon-inner")
+ .then($inner => {
+ const size = $inner[0].getBoundingClientRect();
+ expect(size.width).to.be.greaterThan(22);
+ expect(size.height).to.be.greaterThan(22);
+ });
+ });
+});
+
describe("Accessibility", () => {
it("should announce the associated label when CheckBox is focused", () => {
cy.mount(
diff --git a/packages/main/src/themes/CheckBox.css b/packages/main/src/themes/CheckBox.css
index 17a8b03cdba0..20f3c70cd995 100644
--- a/packages/main/src/themes/CheckBox.css
+++ b/packages/main/src/themes/CheckBox.css
@@ -3,7 +3,8 @@
@import "./FormComponents.css";
:host(:not([hidden])) {
- display: inline-block;
+ display: inline-flex;
+ align-items: center;
}
:host([required]) {
@@ -11,7 +12,6 @@
}
:host {
- overflow: hidden;
max-width: 100%;
outline: none;
border-radius: var(--_ui5_checkbox_border_radius);
@@ -21,6 +21,7 @@
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
+ font-size: var(--sapFontSize);
}
/* disabled */
@@ -49,11 +50,7 @@
/* wrap */
:host(:not([wrapping-type="None"])[text]) .ui5-checkbox-root {
- min-height: auto;
- box-sizing: border-box;
align-items: flex-start;
- padding-top: var(--_ui5_checkbox_root_side_padding);
- padding-bottom: var(--_ui5_checkbox_root_side_padding);
}
:host(:not([wrapping-type="None"])[text]) .ui5-checkbox-root .ui5-checkbox-label {
@@ -120,16 +117,15 @@
position: relative;
display: inline-flex;
align-items: center;
+ overflow: hidden;
max-width: 100%;
- min-height: var(--_ui5_checkbox_width_height);
- min-width: var(--_ui5_checkbox_width_height);
- padding: 0 var(--_ui5_checkbox_wrapper_padding);
+ padding-block: var(--_ui5_checkbox_root_side_padding);
+ padding-inline: var(--_ui5_checkbox_wrapper_padding);
box-sizing: border-box;
outline: none;
transition: var(--_ui5_checkbox_transition);
border: var(--_ui5_checkbox_default_focus_border);
border-radius: var(--_ui5_checkbox_border_radius);
- box-sizing: border-box;
}
/* focused */
@@ -201,6 +197,7 @@
max-width: var(--_ui5_checkbox_inner_width_height);
height: var(--_ui5_checkbox_inner_width_height);
max-height: var(--_ui5_checkbox_inner_width_height);
+ flex-shrink: 0;
border: var(--_ui5_checkbox_inner_border);
border-radius: var(--_ui5_checkbox_inner_border_radius);
background: var(--_ui5_checkbox_inner_background);
@@ -237,6 +234,7 @@
overflow: hidden;
pointer-events: none;
color: var(--_ui5_checkbox_label_color);
+ font-size: inherit;
}
.ui5-checkbox-icon {
@@ -257,6 +255,8 @@
:host([display-only]) .ui5-checkbox-display-only-icon-inner [ui5-icon] {
color: var(--sapTextColor);
+ width: var(--_ui5_checkbox_icon_size);
+ height: var(--_ui5_checkbox_icon_size);
}
:host([display-only]) .ui5-checkbox-display-only-icon-inner {
diff --git a/packages/main/src/themes/base/CheckBox-parameters.css b/packages/main/src/themes/base/CheckBox-parameters.css
index bf1340f90d8a..dc2a466f4f94 100644
--- a/packages/main/src/themes/base/CheckBox-parameters.css
+++ b/packages/main/src/themes/base/CheckBox-parameters.css
@@ -14,7 +14,7 @@
--_ui5_checkbox_focus_outline: var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);
--_ui5_checkbox_focus_border_radius: 0;
--_ui5_checkbox_outer_hover_background: transparent;
- --_ui5_checkbox_inner_width_height: 1.375rem;
+ --_ui5_checkbox_inner_width_height: 1.5714em; /* 1.375rem */
--_ui5_checkbox_inner_border: solid .125rem var(--sapField_BorderColor);
--_ui5_checkbox_inner_hover_border_color: var(--sapField_HoverBorderColor);
--_ui5_checkbox_inner_hover_checked_border_color: var(--sapField_HoverBorderColor);
@@ -36,7 +36,7 @@
--_ui5_checkbox_wrapped_focus_inset_block: var(--_ui5_checkbox_focus_position);
--_ui5_checkbox_compact_wrapper_padding: .5rem;
--_ui5_checkbox_compact_width_height: 2rem;
- --_ui5_checkbox_compact_inner_size: 1rem;
+ --_ui5_checkbox_compact_inner_size: 1.1429em; /* 1rem */
--_ui5_checkbox_compact_focus_position: .375rem;
--_ui5_checkbox_label_color: var(--sapContent_LabelColor);
--_ui5_checkbox_label_offset: var(--_ui5_checkbox_wrapper_padding);
diff --git a/packages/main/src/themes/base/sizes-parameters.css b/packages/main/src/themes/base/sizes-parameters.css
index 57d6495524ce..465302dd831a 100644
--- a/packages/main/src/themes/base/sizes-parameters.css
+++ b/packages/main/src/themes/base/sizes-parameters.css
@@ -14,8 +14,8 @@
--_ui5_calendar_overlay_width: 16rem;
--_ui5_checkbox_root_side_padding: .6875rem;
- --_ui5_checkbox_icon_size: 1rem;
- --_ui5_checkbox_partially_icon_size: .75rem;
+ --_ui5_checkbox_icon_size: 1.1429em; /* 1rem */
+ --_ui5_checkbox_partially_icon_size: 0.8571em; /* 0.75rem */
--_ui5_custom_list_item_rb_min_width: 2.75rem;
--_ui5_day_picker_item_width: 2.25rem;
--_ui5_day_picker_item_height: 2.875rem;
@@ -200,8 +200,8 @@
--_ui5_checkbox_focus_position: var(--_ui5_checkbox_compact_focus_position);
--_ui5_checkbox_wrapped_focus_inset_block: var(--_ui5_checkbox_focus_position);
--_ui5_checkbox_inner_width_height: var(--_ui5_checkbox_compact_inner_size);
- --_ui5_checkbox_icon_size: .75rem;
- --_ui5_checkbox_partially_icon_size: .5rem;
+ --_ui5_checkbox_icon_size: 0.8571em; /* 0.75rem */
+ --_ui5_checkbox_partially_icon_size: 0.5714em; /* 0.5rem */
/* ColorPicker */
--_ui5_color_picker_slider_progress_container_height: 1.125rem;
diff --git a/packages/main/src/themes/sap_horizon/CheckBox-parameters.css b/packages/main/src/themes/sap_horizon/CheckBox-parameters.css
index ad17ea3d8f27..7be479d64099 100644
--- a/packages/main/src/themes/sap_horizon/CheckBox-parameters.css
+++ b/packages/main/src/themes/sap_horizon/CheckBox-parameters.css
@@ -3,7 +3,7 @@
:host {
--_ui5_checkbox_wrapper_padding: .6875rem;
--_ui5_checkbox_width_height: 2.75rem;
- --_ui5_checkbox_icon_size: 1rem;
+ --_ui5_checkbox_icon_size: 1.1429em; /* 1rem */
--_ui5_checkbox_label_color: var(--sapField_TextColor);
/* default checkbox*/
--_ui5_checkbox_inner_border: solid var(--sapField_BorderWidth) var(--sapField_BorderColor);
diff --git a/packages/main/src/themes/sap_horizon_dark/CheckBox-parameters.css b/packages/main/src/themes/sap_horizon_dark/CheckBox-parameters.css
index ad17ea3d8f27..7be479d64099 100644
--- a/packages/main/src/themes/sap_horizon_dark/CheckBox-parameters.css
+++ b/packages/main/src/themes/sap_horizon_dark/CheckBox-parameters.css
@@ -3,7 +3,7 @@
:host {
--_ui5_checkbox_wrapper_padding: .6875rem;
--_ui5_checkbox_width_height: 2.75rem;
- --_ui5_checkbox_icon_size: 1rem;
+ --_ui5_checkbox_icon_size: 1.1429em; /* 1rem */
--_ui5_checkbox_label_color: var(--sapField_TextColor);
/* default checkbox*/
--_ui5_checkbox_inner_border: solid var(--sapField_BorderWidth) var(--sapField_BorderColor);
diff --git a/packages/main/src/themes/sap_horizon_hcb/CheckBox-parameters.css b/packages/main/src/themes/sap_horizon_hcb/CheckBox-parameters.css
index 67080c9f1b7d..0d6c87e4624d 100644
--- a/packages/main/src/themes/sap_horizon_hcb/CheckBox-parameters.css
+++ b/packages/main/src/themes/sap_horizon_hcb/CheckBox-parameters.css
@@ -3,7 +3,7 @@
:host {
--_ui5_checkbox_wrapper_padding: .6875rem;
--_ui5_checkbox_width_height: 2.75rem;
- --_ui5_checkbox_icon_size: 1rem;
+ --_ui5_checkbox_icon_size: 1.1429em; /* 1rem */
--_ui5_checkbox_label_color: var(--sapField_TextColor);
/* default checkbox*/
--_ui5_checkbox_inner_border: solid var(--sapField_BorderWidth) var(--sapField_BorderColor);
diff --git a/packages/main/src/themes/sap_horizon_hcw/CheckBox-parameters.css b/packages/main/src/themes/sap_horizon_hcw/CheckBox-parameters.css
index 67080c9f1b7d..0d6c87e4624d 100644
--- a/packages/main/src/themes/sap_horizon_hcw/CheckBox-parameters.css
+++ b/packages/main/src/themes/sap_horizon_hcw/CheckBox-parameters.css
@@ -3,7 +3,7 @@
:host {
--_ui5_checkbox_wrapper_padding: .6875rem;
--_ui5_checkbox_width_height: 2.75rem;
- --_ui5_checkbox_icon_size: 1rem;
+ --_ui5_checkbox_icon_size: 1.1429em; /* 1rem */
--_ui5_checkbox_label_color: var(--sapField_TextColor);
/* default checkbox*/
--_ui5_checkbox_inner_border: solid var(--sapField_BorderWidth) var(--sapField_BorderColor);
diff --git a/packages/main/test/pages/CheckBox.html b/packages/main/test/pages/CheckBox.html
index 4a4fb9f660b9..3d9bd444e8e2 100644
--- a/packages/main/test/pages/CheckBox.html
+++ b/packages/main/test/pages/CheckBox.html
@@ -13,6 +13,65 @@
+
+
@@ -171,6 +230,61 @@
formValidationMessage.design = isValid ? "Positive" : "Negative";
}
+
+
+
+
+
+
+
+
Customization 1 — font-size scaling (20px)
+
Set font-size on the host element. The box, icon, and label all scale proportionally. Works with and without text, and in display-only mode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Customization 2 — reduced padding via ::part(root) + focus ring fix (20px, 4px padding)
+
Override padding on the root part to tighten the hit area. Apply inset: 0 on the focus ::before so the ring follows the new bounds. Tab to see the focus ring.
+
+
+
+
+
+
+
+
+
+
+
Customization 3 — wrapping label with big font (24px, 300px wide)
+
Block padding and label alignment both scale correctly when the label wraps to multiple lines.
+
+
+
+
+
+
+
+
Customization 4 — value states at big size (20px)
+
Value state colors and borders scale correctly at any font-size.
+
+
+
+
+
+
+
+