Skip to content

Commit 15cc0b4

Browse files
authored
fix: make checkbox and radio button marker color work in Safari 17 (#10501)
1 parent 42a8389 commit 15cc0b4

File tree

13 files changed

+8
-10
lines changed

13 files changed

+8
-10
lines changed
3 Bytes
Loading
-8 Bytes
Loading
-9 Bytes
Loading

packages/checkbox/src/styles/vaadin-checkbox-base-styles.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,14 @@ import { field } from '@vaadin/field-base/src/styles/field-base-styles.js';
1010

1111
const checkbox = css`
1212
[part='checkbox'] {
13-
color: var(
14-
--vaadin-checkbox-checkmark-color,
15-
var(--vaadin-checkbox-marker-color, var(--vaadin-input-field-text-color, var(--vaadin-text-color)))
16-
);
13+
color: var(--vaadin-checkbox-checkmark-color, var(--_color));
1714
}
1815
1916
[part='checkbox']::after {
2017
inset: 0;
2118
mask: var(--_vaadin-icon-checkmark) 50% /
2219
var(--vaadin-checkbox-checkmark-size, var(--vaadin-checkbox-marker-size, 100%)) no-repeat;
20+
filter: var(--vaadin-checkbox-checkmark-color, var(--_filter));
2321
}
2422
2523
:host([readonly]) {
-7 Bytes
Loading
2 Bytes
Loading
-16 Bytes
Loading
-4 Bytes
Loading

packages/field-base/src/styles/checkable-base-styles.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ export const checkable = (part, propName = part) => css`
9898
--_border-width: var(--vaadin-${unsafeCSS(propName)}-border-width, var(--vaadin-input-field-border-width, 1px));
9999
border-width: var(--_border-width);
100100
box-sizing: border-box;
101-
color: var(--vaadin-${unsafeCSS(propName)}-marker-color, var(--vaadin-input-field-text-color, var(--vaadin-text-color)));
101+
--_color: var(--vaadin-${unsafeCSS(propName)}-marker-color, var(--vaadin-${unsafeCSS(propName)}-background, var(--vaadin-background-color)));
102+
color: var(--_color);
102103
height: var(--vaadin-${unsafeCSS(propName)}-size, 1lh);
103104
width: var(--vaadin-${unsafeCSS(propName)}-size, 1lh);
104105
position: relative;
@@ -111,7 +112,6 @@ export const checkable = (part, propName = part) => css`
111112
:host(:is([checked], [indeterminate])) {
112113
--vaadin-${unsafeCSS(propName)}-background: var(--vaadin-text-color);
113114
--vaadin-${unsafeCSS(propName)}-border-color: transparent;
114-
--vaadin-${unsafeCSS(propName)}-marker-color: oklch(from var(--vaadin-${unsafeCSS(propName)}-background) clamp(0, (0.62 - l) * 1000, 1) 0 0);
115115
}
116116
117117
:host([disabled]) {
@@ -143,6 +143,8 @@ export const checkable = (part, propName = part) => css`
143143
border-radius: inherit;
144144
display: flex;
145145
align-items: center;
146+
--_filter: var(--vaadin-${unsafeCSS(propName)}-marker-color, saturate(0) invert(1) hue-rotate(180deg) contrast(100) brightness(100));
147+
filter: var(--_filter);
146148
}
147149
148150
:host(:not([checked], [indeterminate])) [part='${unsafeCSS(part)}']::after {

packages/radio-group/src/styles/vaadin-radio-button-base-styles.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,14 @@ import { field } from '@vaadin/field-base/src/styles/field-base-styles.js';
1010
const radioButton = css`
1111
[part='radio'] {
1212
border-radius: 50%;
13-
color: var(
14-
--vaadin-radio-button-dot-color,
15-
var(--vaadin-radio-button-marker-color, var(--vaadin-input-field-text-color, var(--vaadin-text-color)))
16-
);
13+
color: var(--vaadin-radio-button-dot-color, var(--_color));
1714
}
1815
1916
[part='radio']::after {
2017
width: var(--vaadin-radio-button-dot-size, var(--vaadin-radio-button-marker-size, 50%));
2118
height: var(--vaadin-radio-button-dot-size, var(--vaadin-radio-button-marker-size, 50%));
2219
border-radius: 50%;
20+
filter: var(--vaadin-radio-button-dot-color, var(--_filter));
2321
}
2422
`;
2523

0 commit comments

Comments
 (0)