boldr/boldr-ui

View on GitHub
src/Accordion/AccordionItemTitle.js

Summary

Maintainability
A
0 mins
Test Coverage
/* @flow */
import * as React from 'react';

type Props = {
  id: string,
  isExpanded: boolean,
  onClick: Function,
  ariaControls: string,
  children: Array<React.Node>,
  role: string,
};

class AccordionItemTitle extends React.PureComponent<Props, *> {
  static defaultProps = {
    id: '',
    isExpanded: false,
    onClick: () => {},
    ariaControls: '',
    role: '',
  };

  handleKeyPress = (e: Event) => {
    const { onClick } = this.props;
    if (e.charCode === 13 || e.charCode === 32) {
      onClick();
    }
  };
  props: Props;
  render() {
    const { id, isExpanded, ariaControls, onClick, children, role } = this.props;
    return (
      <div // eslint-disable-line jsx-a11y/no-static-element-interactions
        id={id}
        aria-expanded={isExpanded}
        aria-controls={ariaControls}
        className="boldrui-accordion__title"
        onClick={onClick}
        role={role}
        onKeyPress={this.handleKeyPress}
      >
        {children}
      </div>
    );
  }
}

export default AccordionItemTitle;