Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- Added `EuiOverlayMask` directly to `EuiModal` ([#4480](https://github.com/elastic/eui/pull/4480))
- Added `paddingSize` prop to `EuiFlyout` ([#4448](https://github.com/elastic/eui/pull/4448))
- Added `size='l'` prop to `EuiTabs` ([#4501](https://github.com/elastic/eui/pull/4501))
- Added `buttonProps` prop to `EuiAccordion` ([#4510](https://github.com/elastic/eui/pull/4510))

**Bug fixes**

Expand Down
85 changes: 65 additions & 20 deletions src/components/accordion/__snapshots__/accordion.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
exports[`EuiAccordion behavior closes when clicked twice 1`] = `
<EuiAccordion
arrowDisplay="left"
id="12"
id="13"
initialIsOpen={false}
isLoading={false}
isLoadingMessage={false}
Expand All @@ -16,7 +16,7 @@ exports[`EuiAccordion behavior closes when clicked twice 1`] = `
className="euiAccordion__triggerWrapper"
>
<button
aria-controls="12"
aria-controls="13"
aria-expanded={false}
className="euiAccordion__button"
id="generated-id"
Expand Down Expand Up @@ -46,7 +46,7 @@ exports[`EuiAccordion behavior closes when clicked twice 1`] = `
<div
aria-labelledby="generated-id"
className="euiAccordion__childWrapper"
id="12"
id="13"
role="region"
tabIndex={-1}
>
Expand All @@ -67,7 +67,7 @@ exports[`EuiAccordion behavior closes when clicked twice 1`] = `
exports[`EuiAccordion behavior opens when clicked once 1`] = `
<EuiAccordion
arrowDisplay="left"
id="11"
id="12"
initialIsOpen={false}
isLoading={false}
isLoadingMessage={false}
Expand All @@ -80,7 +80,7 @@ exports[`EuiAccordion behavior opens when clicked once 1`] = `
className="euiAccordion__triggerWrapper"
>
<button
aria-controls="11"
aria-controls="12"
aria-expanded={true}
className="euiAccordion__button"
id="generated-id"
Expand Down Expand Up @@ -110,7 +110,7 @@ exports[`EuiAccordion behavior opens when clicked once 1`] = `
<div
aria-labelledby="generated-id"
className="euiAccordion__childWrapper"
id="11"
id="12"
role="region"
tabIndex={-1}
>
Expand Down Expand Up @@ -181,7 +181,7 @@ exports[`EuiAccordion props arrowDisplay none is rendered 1`] = `
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="6"
aria-controls="7"
aria-expanded="false"
class="euiAccordion__button"
id="generated-id"
Expand All @@ -195,7 +195,7 @@ exports[`EuiAccordion props arrowDisplay none is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="6"
id="7"
role="region"
tabindex="-1"
>
Expand All @@ -220,7 +220,7 @@ exports[`EuiAccordion props arrowDisplay right is rendered 1`] = `
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="5"
aria-controls="6"
aria-expanded="false"
class="euiAccordion__button euiAccordion__buttonReverse"
id="generated-id"
Expand All @@ -242,7 +242,7 @@ exports[`EuiAccordion props arrowDisplay right is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="5"
id="6"
role="region"
tabindex="-1"
>
Expand Down Expand Up @@ -349,7 +349,7 @@ exports[`EuiAccordion props buttonContentClassName is rendered 1`] = `
</div>
`;

exports[`EuiAccordion props extraAction is rendered 1`] = `
exports[`EuiAccordion props buttonProps is rendered 1`] = `
<div
class="euiAccordion"
>
Expand All @@ -359,6 +359,51 @@ exports[`EuiAccordion props extraAction is rendered 1`] = `
<button
aria-controls="3"
aria-expanded="false"
aria-label="aria-label"
class="euiAccordion__button testClass1 testClass2"
data-test-subj="test subject string"
id="generated-id"
type="button"
>
<span
class="euiAccordion__iconWrapper"
>
<span
class="euiAccordion__icon"
data-euiicon-type="arrowRight"
/>
</span>
<span
class="euiIEFlexWrapFix"
/>
</button>
</div>
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="3"
role="region"
tabindex="-1"
>
<div>
<div
class=""
/>
</div>
</div>
</div>
`;

exports[`EuiAccordion props extraAction is rendered 1`] = `
<div
class="euiAccordion"
>
<div
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="4"
aria-expanded="false"
class="euiAccordion__button"
id="generated-id"
type="button"
Expand Down Expand Up @@ -386,7 +431,7 @@ exports[`EuiAccordion props extraAction is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="3"
id="4"
role="region"
tabindex="-1"
>
Expand All @@ -407,7 +452,7 @@ exports[`EuiAccordion props forceState is rendered 1`] = `
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="7"
aria-controls="8"
aria-expanded="false"
class="euiAccordion__button"
id="generated-id"
Expand All @@ -429,7 +474,7 @@ exports[`EuiAccordion props forceState is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="7"
id="8"
role="region"
tabindex="-1"
>
Expand All @@ -454,7 +499,7 @@ exports[`EuiAccordion props initialIsOpen is rendered 1`] = `
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="4"
aria-controls="5"
aria-expanded="true"
class="euiAccordion__button"
id="generated-id"
Expand All @@ -476,7 +521,7 @@ exports[`EuiAccordion props initialIsOpen is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="4"
id="5"
role="region"
tabindex="-1"
>
Expand All @@ -501,7 +546,7 @@ exports[`EuiAccordion props isLoading is rendered 1`] = `
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="9"
aria-controls="10"
aria-expanded="false"
class="euiAccordion__button"
id="generated-id"
Expand Down Expand Up @@ -530,7 +575,7 @@ exports[`EuiAccordion props isLoading is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="9"
id="10"
role="region"
tabindex="-1"
>
Expand All @@ -555,7 +600,7 @@ exports[`EuiAccordion props isLoadingMessage is rendered 1`] = `
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="10"
aria-controls="11"
aria-expanded="false"
class="euiAccordion__button"
id="generated-id"
Expand Down Expand Up @@ -584,7 +629,7 @@ exports[`EuiAccordion props isLoadingMessage is rendered 1`] = `
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="10"
id="11"
role="region"
tabindex="-1"
>
Expand Down
10 changes: 10 additions & 0 deletions src/components/accordion/accordion.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,16 @@ describe('EuiAccordion', () => {
});
});

describe('buttonProps', () => {
it('is rendered', () => {
const component = render(
<EuiAccordion id={getId()} buttonProps={requiredProps} />
);

expect(component).toMatchSnapshot();
});
});

describe('extraAction', () => {
it('is rendered', () => {
const component = render(
Expand Down
11 changes: 9 additions & 2 deletions src/components/accordion/accordion.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ export type EuiAccordionProps = CommonProps &
* Class that will apply to the trigger for the accordion.
*/
buttonClassName?: string;
/**
* Apply more props to the triggering button
*/
buttonProps?: CommonProps & HTMLAttributes<HTMLButtonElement>;
/**
* Class that will apply to the trigger content for the accordion.
*/
Expand Down Expand Up @@ -170,6 +174,7 @@ export class EuiAccordion extends Component<
forceState,
isLoading,
isLoadingMessage,
buttonProps,
...rest
} = this.props;

Expand All @@ -196,7 +201,8 @@ export class EuiAccordion extends Component<
{
euiAccordion__buttonReverse: !extraAction && arrowDisplay === 'right',
},
buttonClassName
buttonClassName,
buttonProps?.className
);

const iconClasses = classNames('euiAccordion__icon', {
Expand All @@ -214,7 +220,7 @@ export class EuiAccordion extends Component<

let icon;
let iconButton;
const buttonId = htmlIdGenerator()();
const buttonId = buttonProps?.id || htmlIdGenerator()();
Comment thread
cchaos marked this conversation as resolved.
Outdated
if (extraAction && arrowDisplay === 'right') {
iconButton = (
<button
Expand Down Expand Up @@ -267,6 +273,7 @@ export class EuiAccordion extends Component<
<div className={classes} {...rest}>
<div className="euiAccordion__triggerWrapper">
<button
{...buttonProps}
id={buttonId}
aria-controls={id}
aria-expanded={isOpen}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,72 @@ exports[`EuiCollapsibleNavGroup throws a warning if iconType is passed without a
</div>
`;

exports[`EuiCollapsibleNavGroup when isCollapsible is true accepts accordion props 1`] = `
<div
aria-label="aria-label"
class="euiAccordion euiCollapsibleNavGroup euiCollapsibleNavGroup--withHeading testClass1 testClass2"
data-test-subj="test subject string"
>
<div
class="euiAccordion__triggerWrapper"
>
<button
aria-controls="id"
aria-expanded="false"
aria-label="aria-label"
class="euiAccordion__button euiAccordion__buttonReverse euiCollapsibleNavGroup__heading testClass1 testClass2"
data-test-subj="test subject string"
id="generated-id"
type="button"
>
<span
class="euiAccordion__iconWrapper"
>
<span
class="euiAccordion__icon"
data-euiicon-type="arrowRight"
/>
</span>
<span
class="euiIEFlexWrapFix"
>
<div
class="euiFlexGroup euiFlexGroup--gutterMedium euiFlexGroup--alignItemsCenter euiFlexGroup--directionRow"
>
<div
class="euiFlexItem"
>
<h3
class="euiTitle euiTitle--xxsmall euiCollapsibleNavGroup__title"
id="id__title"
>
Title
</h3>
</div>
</div>
</span>
</button>
</div>
<div
aria-labelledby="generated-id"
class="euiAccordion__childWrapper"
id="id"
role="region"
tabindex="-1"
>
<div>
<div
class=""
>
<div
class="euiCollapsibleNavGroup__children"
/>
</div>
</div>
</div>
</div>
`;

exports[`EuiCollapsibleNavGroup when isCollapsible is true will render an accordion 1`] = `
<div
class="euiAccordion euiCollapsibleNavGroup euiCollapsibleNavGroup--withHeading"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,21 @@ describe('EuiCollapsibleNavGroup', () => {

expect(component).toMatchSnapshot();
});

test('accepts accordion props', () => {
const component = render(
<EuiCollapsibleNavGroup
isCollapsible={true}
initialIsOpen={false}
title="Title"
id="id"
{...requiredProps}
buttonProps={requiredProps}
/>
);

expect(component).toMatchSnapshot();
});
});

describe('throws a warning', () => {
Expand Down