Skip to content

Commit 83a051f

Browse files
Merge pull request #754 from adobe/perf-improvement-focus-ring
Perf improvement focus ring
2 parents 0be7447 + 42424dd commit 83a051f

File tree

8 files changed

+37
-11
lines changed

8 files changed

+37
-11
lines changed

components/button/index.css

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ governing permissions and limitations under the License.
9696
max-block-size: 100%;
9797
flex-shrink: 0;
9898
}
99-
10099
}
101100

102101
%spectrum-ButtonWithFocusRing {
@@ -111,7 +110,7 @@ governing permissions and limitations under the License.
111110
top: 0;
112111
margin: calc(var(--spectrum-alias-focus-ring-gap) * -1);
113112

114-
transition: box-shadow var(--spectrum-global-animation-duration-100) ease-out,
113+
transition: opacity var(--spectrum-global-animation-duration-100) ease-out,
115114
margin var(--spectrum-global-animation-duration-100) ease-out;
116115
}
117116

components/button/skin.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ governing permissions and limitations under the License.
1717

1818
.spectrum-LogicButton,
1919
.spectrum-Button {
20+
&:after {
21+
box-shadow: 0 0 0 var(--spectrum-button-primary-focus-ring-size-key-focus) var(--spectrum-button-primary-focus-ring-color-key-focus);
22+
opacity: 0;
23+
}
2024
&:focus-ring,
2125
&.is-focused {
2226
&:after {
23-
box-shadow: 0 0 0 var(--spectrum-button-primary-focus-ring-size-key-focus) var(--spectrum-button-primary-focus-ring-color-key-focus);
27+
opacity: 1;
2428
}
2529
}
2630
}

components/checkbox/index.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ governing permissions and limitations under the License.
160160
top: 0;
161161
margin: var(--spectrum-alias-focus-ring-gap);
162162

163-
transition: box-shadow var(--spectrum-global-animation-duration-100) ease-out,
163+
transition: opacity var(--spectrum-global-animation-duration-100) ease-out,
164164
margin var(--spectrum-global-animation-duration-100) ease-out;
165-
165+
166166
/* force ff to render on the pixel grid */
167167
transform: translate(0, 0);
168168
}

components/checkbox/skin.css

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,18 @@ governing permissions and limitations under the License.
103103

104104
/* Focus */
105105
.spectrum-Checkbox-input {
106+
+ .spectrum-Checkbox-box {
107+
&:after {
108+
box-shadow: 0 0 0 var(--spectrum-checkbox-focus-ring-size-key-focus) var(--spectrum-checkbox-focus-ring-color-key-focus);
109+
opacity: 0;
110+
}
111+
}
106112
&:focus-ring + .spectrum-Checkbox-box {
107113
&:before {
108114
border-color: var(--spectrum-checkbox-box-border-color-key-focus);
109115
}
110116
&:after {
111-
box-shadow: 0 0 0 var(--spectrum-checkbox-focus-ring-size-key-focus) var(--spectrum-checkbox-focus-ring-color-key-focus);
117+
opacity: 1;
112118
}
113119
}
114120
.spectrum-Checkbox.is-indeterminate &,

components/radio/index.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ governing permissions and limitations under the License.
141141
top: 0;
142142
margin: var(--spectrum-alias-focus-ring-gap);
143143

144-
transition: box-shadow var(--spectrum-global-animation-duration-100) ease-out,
144+
transition: opacity var(--spectrum-global-animation-duration-100) ease-out,
145145
margin var(--spectrum-global-animation-duration-100) ease-out;
146146
}
147147
}

components/radio/skin.css

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,23 @@ governing permissions and limitations under the License.
146146
/* Focus Overrides all */
147147
.spectrum-Radio,
148148
.spectrum-Radio--quiet {
149+
& .spectrum-Radio-input,
150+
&:hover .spectrum-Radio-input {
151+
& + .spectrum-Radio-button {
152+
&:after {
153+
box-shadow: 0 0 0 var(--spectrum-radio-focus-ring-size-key-focus) var(--spectrum-radio-focus-ring-color-key-focus);
154+
opacity: 0;
155+
}
156+
}
157+
}
149158
& .spectrum-Radio-input:focus-ring,
150159
&:hover .spectrum-Radio-input:focus-ring {
151160
& + .spectrum-Radio-button {
152161
&:before {
153162
border-color: var(--spectrum-radio-circle-border-color-key-focus);
154163
}
155164
&:after {
156-
box-shadow: 0 0 0 var(--spectrum-radio-focus-ring-size-key-focus) var(--spectrum-radio-focus-ring-color-key-focus);
165+
opacity: 1;
157166
}
158167
}
159168
&:checked + .spectrum-Radio-button {

components/toggle/index.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ governing permissions and limitations under the License.
1616
/* Hardcoded for wrapping study.
1717
Will be a DNA token in https://jira.corp.adobe.com/browse/SDS-4466 */
1818
--spectrum-switch-label-margin-top: var(--spectrum-global-dimension-size-65);
19-
19+
2020
/* Fix for inconsistent line-height between browsers that would push the label 1px below the intended baseline */
2121
/* more info: https://stackoverflow.com/questions/47700568/css-fonts-render-differently-in-firefox-and-chrome */
2222
--spectrum-switch-label-line-height: 1.49;
@@ -148,7 +148,7 @@ governing permissions and limitations under the License.
148148
inset-block-start: 0;
149149
margin: 0;
150150

151-
transition: box-shadow var(--spectrum-global-animation-duration-100) ease-out,
151+
transition: opacity var(--spectrum-global-animation-duration-100) ease-out,
152152
margin var(--spectrum-global-animation-duration-100) ease-out;
153153
}
154154
}

components/toggle/skin.css

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,18 @@ governing permissions and limitations under the License.
128128
/* Key Focus */
129129
.spectrum-ToggleSwitch,
130130
.spectrum-ToggleSwitch:hover {
131-
.spectrum-ToggleSwitch-input:focus-ring {
131+
.spectrum-ToggleSwitch-input {
132132
& + .spectrum-ToggleSwitch-switch {
133133
&:after {
134134
box-shadow: 0 0 0 var(--spectrum-switch-focus-ring-size-key-focus) var(--spectrum-switch-focus-ring-color-key-focus);
135+
opacity: 0;
136+
}
137+
}
138+
}
139+
.spectrum-ToggleSwitch-input:focus-ring {
140+
& + .spectrum-ToggleSwitch-switch {
141+
&:after {
142+
opacity: 1;
135143
}
136144
&:before {
137145
border-color: var(--spectrum-switch-emphasized-handle-border-color-key-focus);

0 commit comments

Comments
 (0)