Skip to content

Commit a1cc8ad

Browse files
t-hamanoclaude
andcommitted
CollapsibleCard: Apply the header focus ring via the mixin instead of shared classes
Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4a82f21 commit a1cc8ad

5 files changed

Lines changed: 14 additions & 17 deletions

File tree

‎packages/ui/src/collapsible-card/content.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { forwardRef } from '@wordpress/element';
22
import clsx from 'clsx';
33
import * as Card from '../card';
44
import * as Collapsible from '../collapsible';
5-
import styles from './style.module.css';
5+
import styles from './style.module.scss';
66
import type { ContentProps } from './types';
77

88
/**

‎packages/ui/src/collapsible-card/header-description.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { forwardRef, useContext, useEffect, useId } from '@wordpress/element';
33
import { HeaderDescriptionIdContext } from './context';
44
import type { HeaderDescriptionProps } from './types';
55
import { Text } from '../text';
6-
import styles from './style.module.css';
6+
import styles from './style.module.scss';
77

88
const DEFAULT_TAG = <div />;
99

‎packages/ui/src/collapsible-card/header.tsx‎

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ import { chevronDown } from '@wordpress/icons';
1212
import * as Card from '../card';
1313
import * as Collapsible from '../collapsible';
1414
import { Icon } from '../icon';
15-
import styles from './style.module.css';
15+
import styles from './style.module.scss';
1616
import defenseStyles from '../utils/css/global-css-defense.module.css';
17-
import focusStyles from '../utils/css/focus.module.scss';
1817
import { HeaderDescriptionIdContext } from './context';
1918
import type { HeaderProps } from './types';
2019

@@ -123,10 +122,7 @@ export const Header = forwardRef< HTMLDivElement, HeaderProps >(
123122
children: (
124123
<HeaderDescriptionIdContext.Provider value={ contextValue }>
125124
<Collapsible.Trigger
126-
className={ clsx(
127-
styles.header,
128-
focusStyles[ 'outset-ring-parent' ]
129-
) }
125+
className={ styles.header }
130126
render={ <Card.Header /> }
131127
nativeButton={ false }
132128
aria-describedby={ ariaDescribedBy }
@@ -145,13 +141,7 @@ export const Header = forwardRef< HTMLDivElement, HeaderProps >(
145141
<div
146142
className={ clsx(
147143
styles[ 'header-trigger-wrapper' ],
148-
defenseStyles.div,
149-
// While the interactive trigger element is the whole header,
150-
// the focus ring will be displayed only on the icon to visually
151-
// emulate it being the button.
152-
focusStyles[
153-
'outset-ring--focus-parent-visible'
154-
]
144+
defenseStyles.div
155145
) }
156146
>
157147
<Icon

packages/ui/src/collapsible-card/style.module.css renamed to packages/ui/src/collapsible-card/style.module.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@use "../utils/css/mixins";
2+
13
@layer wp-ui {
24
@layer utilities, components, compositions, overrides;
35

@@ -52,6 +54,12 @@
5254
border-radius: var(--wpds-border-radius-sm);
5355
}
5456

57+
/* The whole header is the trigger, but the focus ring is shown only
58+
on the icon to visually emulate it being the button. */
59+
.header:focus-visible .header-trigger-wrapper {
60+
@include mixins.focus-ring();
61+
}
62+
5563
.header-trigger {
5664
@media not (prefers-reduced-motion) {
5765
transition: rotate 0.15s ease-out;

‎packages/ui/src/utils/css/focus.module.scss‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
*/
1111
.outset-ring--focus:focus,
1212
.outset-ring--focus-visible:focus-visible,
13-
.outset-ring--focus-within:focus-within,
14-
.outset-ring-parent:focus-visible .outset-ring--focus-parent-visible {
13+
.outset-ring--focus-within:focus-within {
1514
@include mixins.focus-ring();
1615
}
1716

0 commit comments

Comments
 (0)