Skip to content

Commit

Permalink
style: start using :focus-visible, Safari support has caught up
Browse files Browse the repository at this point in the history
  • Loading branch information
Robbert committed Oct 6, 2024
1 parent 5d0203d commit e177ced
Show file tree
Hide file tree
Showing 17 changed files with 99 additions and 300 deletions.
13 changes: 13 additions & 0 deletions .changeset/three-emus-juggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"@utrecht/map-control-button-css": patch
"@utrecht/top-task-link-css": patch
"@utrecht/pagination-css": patch
"@utrecht/textarea-css": patch
"@utrecht/textbox-css": patch
"@utrecht/button-css": patch
"@utrecht/select-css": patch
"@utrecht/link-css": patch
"@utrecht/components": patch
---

Start using `:focus-visible`, Safari support has caught up.
34 changes: 6 additions & 28 deletions components/button/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -43,34 +43,12 @@
@include utrecht-button--focus;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-button:focus {
/* Show focus ring even for disabled :focus-visible buttons. *
/* For example: <button disabled tabindex="0"> */
@include utrecht-focus-ring;
}

.utrecht-button:focus:not(:disabled, [aria-disabled="true"], .utrecht-button--disabled) {
@include utrecht-button--focus;
@include utrecht-button--focus-visible;
}

/* override the `:focus` selector above */
/* stylelint-disable-next-line no-descending-specificity */
.utrecht-button:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-button:focus-visible {
@include utrecht-button--focus-visible;
}

.utrecht-button:focus:not(:disabled, [aria-disabled="true"], .utrecht-button--disabled) {
@include utrecht-button--focus;
}
.utrecht-button:focus-visible {
@include utrecht-button--focus-visible;
}

.utrecht-button:focus:not(:disabled, [aria-disabled="true"], .utrecht-button--disabled) {
@include utrecht-button--focus;
}

.utrecht-button--hover:not(:disabled, .utrecht-button--disabled),
Expand Down
2 changes: 1 addition & 1 deletion components/checkbox/src/_mixin.scss
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,5 @@ $utrecht-support-prince-xml: false !default;
@include utrecht-checkbox--disabled;
}

@include utrecht-focus-pseudo-classes-backwards-compatible;
@include utrecht-focus-pseudo-classes;
}
2 changes: 1 addition & 1 deletion components/checkbox/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@
@include utrecht-checkbox--disabled;
}

@include utrecht-focus-pseudo-classes-backwards-compatible;
@include utrecht-focus-pseudo-classes;
}
26 changes: 6 additions & 20 deletions components/link/src/_mixin.scss
Original file line number Diff line number Diff line change
Expand Up @@ -210,25 +210,11 @@ however browsers don't seem to have implemented great looking supixel tweening y
@include utrecht-link--active;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
&:any-link:focus {
@include utrecht-link--focus;
@include utrecht-link--focus-visible;
}

&:any-link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
&:any-link:focus {
@include utrecht-link--focus;
}

&:any-link:focus-visible {
@include utrecht-link--focus-visible;
}
&:any-link:focus {
@include utrecht-link--focus;
}

&:any-link:focus-visible {
@include utrecht-link--focus-visible;
}
}
24 changes: 5 additions & 19 deletions components/link/src/html/_mixin.scss
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,12 @@
@include utrecht-link--active;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
a:focus {
@include utrecht-link--focus;
@include utrecht-link--focus-visible;
}

a:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
a:focus {
@include utrecht-link--focus;
}
a:focus {
@include utrecht-link--focus;
}

a:focus-visible {
@include utrecht-link--focus-visible;
}
a:focus-visible {
@include utrecht-link--focus-visible;
}

a[rel~="external" i] {
Expand Down
37 changes: 10 additions & 27 deletions components/link/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -36,33 +36,16 @@
@include utrecht-link--focus-visible;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
/* `:focus` should only apply to links with `href`, not on disabled links */
.utrecht-link--html-span:focus,
.utrecht-link--html-a:any-link:focus {
@include utrecht-link--focus;
@include utrecht-link--focus-visible;
}

.utrecht-link--html-span:focus:not(:focus-visible),
.utrecht-link--html-a:any-link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
/* The `:focus-visible` styling for the focus should apply disabled links too, in case of `tabindex="0"` */
.utrecht-link--html-span:focus-visible,
.utrecht-link--html-a:focus-visible {
@include utrecht-link--focus-visible;
}

/* `:focus` should only apply to links with `href`, not on disabled links */
.utrecht-link--html-span:focus,
.utrecht-link--html-a:any-link:focus {
@include utrecht-link--focus;
}
/* The `:focus-visible` styling for the focus should apply disabled links too, in case of `tabindex="0"` */
.utrecht-link--html-span:focus-visible,
.utrecht-link--html-a:focus-visible {
@include utrecht-link--focus-visible;
}

/* `:focus` should only apply to links with `href`, not on disabled links */
.utrecht-link--html-span:focus,
.utrecht-link--html-a:any-link:focus {
@include utrecht-link--focus;
}

.utrecht-link--html-span:active,
Expand Down
30 changes: 7 additions & 23 deletions components/mapcontrolbutton/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -46,30 +46,14 @@
--utrecht-icon-color: var(--utrecht-mapcontrolbutton-focus-color, var(--utrecht-mapcontrolbutton-color));
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-mapcontrolbutton:focus:not(:disabled, [aria-disabled="true"], .utrecht-mapcontrolbutton--disabled) {
@extend .utrecht-mapcontrolbutton--focus;
@extend .utrecht-mapcontrolbutton--focus-visible;
}

/* override the `:focus` selector above */
/* stylelint-disable-next-line no-descending-specificity */
.utrecht-mapcontrolbutton:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-mapcontrolbutton:focus:not(:disabled, [aria-disabled="true"], .utrecht-mapcontrolbutton--disabled) {
@extend .utrecht-mapcontrolbutton--focus;
}
.utrecht-mapcontrolbutton:focus:not(:disabled, [aria-disabled="true"], .utrecht-mapcontrolbutton--disabled) {
@extend .utrecht-mapcontrolbutton--focus;
}

/* override the `:focus` selector above */
/* stylelint-disable-next-line no-descending-specificity */
.utrecht-mapcontrolbutton:focus-visible {
@extend .utrecht-mapcontrolbutton--focus-visible;
}
/* override the `:focus` selector above */
/* stylelint-disable-next-line no-descending-specificity */
.utrecht-mapcontrolbutton:focus-visible {
@extend .utrecht-mapcontrolbutton--focus-visible;
}

.utrecht-mapcontrolbutton--hover:not(:disabled),
Expand Down
24 changes: 5 additions & 19 deletions components/menulijst/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,10 @@
@include utrecht-focus-visible;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-menulijst__link:focus {
@extend .utrecht-menulijst__link--focus;
@extend .utrecht-menulijst__link--focus-visible;
}

.utrecht-menulijst__link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-menulijst__link:focus {
@extend .utrecht-menulijst__link--focus;
}
.utrecht-menulijst__link:focus {
@extend .utrecht-menulijst__link--focus;
}

.utrecht-menulijst__link:focus-visible {
@extend .utrecht-menulijst__link--focus-visible;
}
.utrecht-menulijst__link:focus-visible {
@extend .utrecht-menulijst__link--focus-visible;
}
24 changes: 5 additions & 19 deletions components/navigatie sidenav/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -210,24 +210,10 @@
}
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-sidenav__link:focus {
@extend .utrecht-sidenav__link--focus;
@extend .utrecht-sidenav__link--focus-visible;
}

.utrecht-sidenav__link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-sidenav__link:focus {
@extend .utrecht-sidenav__link--focus;
}
.utrecht-sidenav__link:focus {
@extend .utrecht-sidenav__link--focus;
}

.utrecht-sidenav__link:focus-visible {
@extend .utrecht-sidenav__link--focus-visible;
}
.utrecht-sidenav__link:focus-visible {
@extend .utrecht-sidenav__link--focus-visible;
}
24 changes: 5 additions & 19 deletions components/navigatie topnav/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -68,24 +68,10 @@
@include utrecht-focus-visible;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-topnav__link:focus {
@extend .utrecht-topnav__link--focus;
@extend .utrecht-topnav__link--focus-visible;
}

.utrecht-topnav__link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-topnav__link:focus {
@extend .utrecht-topnav__link--focus;
}
.utrecht-topnav__link:focus {
@extend .utrecht-topnav__link--focus;
}

.utrecht-topnav__link:focus-visible {
@extend .utrecht-topnav__link--focus-visible;
}
.utrecht-topnav__link:focus-visible {
@extend .utrecht-topnav__link--focus-visible;
}
30 changes: 7 additions & 23 deletions components/pagination/src/_mixin.scss
Original file line number Diff line number Diff line change
Expand Up @@ -97,28 +97,12 @@
color: var(--utrecht-pagination-page-link-hover-color, var(--utrecht-pagination-page-link-color));
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-pagination__page-link:focus,
.utrecht-pagination__relative-link:focus {
@include utrecht-focus;
@include utrecht-focus-ring;
}

.utrecht-pagination__page-link:focus:not(:focus-visible),
.utrecht-pagination__relative-link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-pagination__page-link:focus,
.utrecht-pagination__relative-link:focus {
@include utrecht-focus;
}
.utrecht-pagination__page-link:focus,
.utrecht-pagination__relative-link:focus {
@include utrecht-focus;
}

.utrecht-pagination__page-link:focus-visible,
.utrecht-pagination__relative-link:focus-visible {
@include utrecht-focus-visible;
}
.utrecht-pagination__page-link:focus-visible,
.utrecht-pagination__relative-link:focus-visible {
@include utrecht-focus-visible;
}
30 changes: 7 additions & 23 deletions components/pagination/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -52,28 +52,12 @@
@include utrecht-pagination__page-link--hover;
}

// The workaround for missing `:focus-visible` support makes the code quite complex,
// keep the ideal version around to restore it easily when browser support improves.

@if $utrecht-focus-visible-fallback {
.utrecht-pagination__page-link:focus,
.utrecht-pagination__relative-link:focus {
@include utrecht-focus;
@include utrecht-focus-ring;
}

.utrecht-pagination__page-link:focus:not(:focus-visible),
.utrecht-pagination__relative-link:focus:not(:focus-visible) {
@include utrecht-focus-ring-reset;
}
} @else {
.utrecht-pagination__page-link:focus,
.utrecht-pagination__relative-link:focus {
@include utrecht-focus;
}
.utrecht-pagination__page-link:focus,
.utrecht-pagination__relative-link:focus {
@include utrecht-focus;
}

.utrecht-pagination__page-link:focus-visible,
.utrecht-pagination__relative-link:focus-visible {
@include utrecht-focus-visible;
}
.utrecht-pagination__page-link:focus-visible,
.utrecht-pagination__relative-link:focus-visible {
@include utrecht-focus-visible;
}
Loading

0 comments on commit e177ced

Please sign in to comment.