diff --git a/packages/clay-css/src/scss/cadmin/variables/_popovers.scss b/packages/clay-css/src/scss/cadmin/variables/_popovers.scss index e7f0a998a0..7a95db6a43 100644 --- a/packages/clay-css/src/scss/cadmin/variables/_popovers.scss +++ b/packages/clay-css/src/scss/cadmin/variables/_popovers.scss @@ -80,6 +80,10 @@ $cadmin-popover: map-deep-merge( word-spacing: normal, word-wrap: break-word, z-index: $cadmin-zindex-popover, + focus: ( + box-shadow: $cadmin-component-focus-box-shadow, + outline: 0, + ), arrow: ( display: block, height: $cadmin-popover-arrow-height, diff --git a/packages/clay-css/src/scss/mixins/_popovers.scss b/packages/clay-css/src/scss/mixins/_popovers.scss index 14f0d00c24..88e63aec35 100644 --- a/packages/clay-css/src/scss/mixins/_popovers.scss +++ b/packages/clay-css/src/scss/mixins/_popovers.scss @@ -90,6 +90,31 @@ @if (type-of($map) == 'map') { $enabled: setter(map-get($map, enabled), true); + $_enable-focus-visible: if( + variable-exists(enable-focus-visible), + $enable-focus-visible, + if( + variable-exists(cadmin-enable-focus-visible), + $cadmin-enable-focus-visible, + true + ) + ); + + $_c-prefers-focus-selector: if( + $_enable-focus-visible, + '.c-prefers-focus &:focus', + '' + ); + + @if (variable-exists(cadmin-enable-focus-visible)) and + ($_enable-focus-visible) + { + $_c-prefers-focus-selector: clay-insert-before( + '.cadmin', + '.c-prefers-focus ' + ); + } + @if ($enabled) { @include clay-css($map); @@ -122,6 +147,14 @@ .close { @include clay-close(map-get($map, close)); } + + @at-root { + &.focus, + #{$focus-visible-selector}, + #{$_c-prefers-focus-selector} { + @include clay-popover-variant(map-get($map, focus)); + } + } } } } diff --git a/packages/clay-css/src/scss/variables/_popovers.scss b/packages/clay-css/src/scss/variables/_popovers.scss index ee25b92a40..5f84d8454a 100644 --- a/packages/clay-css/src/scss/variables/_popovers.scss +++ b/packages/clay-css/src/scss/variables/_popovers.scss @@ -80,6 +80,10 @@ $popover: map-deep-merge( word-spacing: normal, word-wrap: break-word, z-index: $zindex-popover, + focus: ( + box-shadow: $component-focus-box-shadow, + outline: 0, + ), arrow: ( display: block, height: $popover-arrow-height, diff --git a/packages/clay-popover/src/__tests__/__snapshots__/index.tsx.snap b/packages/clay-popover/src/__tests__/__snapshots__/index.tsx.snap index 06457f64ed..5fda0d7d62 100644 --- a/packages/clay-popover/src/__tests__/__snapshots__/index.tsx.snap +++ b/packages/clay-popover/src/__tests__/__snapshots__/index.tsx.snap @@ -72,6 +72,7 @@ exports[`ClayPopover renders without scroll 1`] = `