diff --git a/src/components/accordion/__snapshots__/accordion.test.tsx.snap b/src/components/accordion/__snapshots__/accordion.test.tsx.snap index 020d001c37e..3f7b526ec94 100644 --- a/src/components/accordion/__snapshots__/accordion.test.tsx.snap +++ b/src/components/accordion/__snapshots__/accordion.test.tsx.snap @@ -44,8 +44,11 @@ exports[`EuiAccordion behavior closes when clicked twice 1`] = `
{ expect(onToggleHandler).toBeCalled(); expect(onToggleHandler).toBeCalledWith(false); }); + + it('moves focus to the content when expanded', () => { + const component = mount(); + const accordionClass = component.instance(); + const childWrapper = accordionClass.childWrapper; + + expect(childWrapper).not.toBeFalsy(); + expect(childWrapper).not.toBe(document.activeElement); + + // click button + component.find('button').simulate('click'); + + expect(childWrapper).toBe(document.activeElement); + }); }); }); diff --git a/src/components/accordion/accordion.tsx b/src/components/accordion/accordion.tsx index 6d3ec3c84ef..e7cc1efa8a1 100644 --- a/src/components/accordion/accordion.tsx +++ b/src/components/accordion/accordion.tsx @@ -142,6 +142,9 @@ export class EuiAccordion extends Component< isOpen: !prevState.isOpen, }), () => { + if (this.state.isOpen && this.childWrapper) { + this.childWrapper.focus(); + } this.props.onToggle && this.props.onToggle(this.state.isOpen); } ); @@ -288,6 +291,9 @@ export class EuiAccordion extends Component< ref={(node) => { this.childWrapper = node; }} + tabIndex={-1} + role="region" + aria-labelledby={buttonId} id={id}> {(resizeRef) => ( diff --git a/src/components/collapsible_nav/collapsible_nav_group/__snapshots__/collapsible_nav_group.test.tsx.snap b/src/components/collapsible_nav/collapsible_nav_group/__snapshots__/collapsible_nav_group.test.tsx.snap index 71d8af929ce..c2af89b47d8 100644 --- a/src/components/collapsible_nav/collapsible_nav_group/__snapshots__/collapsible_nav_group.test.tsx.snap +++ b/src/components/collapsible_nav/collapsible_nav_group/__snapshots__/collapsible_nav_group.test.tsx.snap @@ -278,8 +278,11 @@ exports[`EuiCollapsibleNavGroup when isCollapsible is true will render an accord