UnitGroup.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React, { PureComponent } from 'react';
  2. import { GroupProps } from 'react-select/lib/components/Group';
  3. interface ExtendedGroupProps extends GroupProps<any> {
  4. data: any;
  5. }
  6. interface State {
  7. expanded: boolean;
  8. }
  9. export default class UnitGroup extends PureComponent<ExtendedGroupProps, State> {
  10. state = {
  11. expanded: false,
  12. };
  13. componentDidUpdate(nextProps) {
  14. if (nextProps.selectProps.inputValue !== '') {
  15. this.setState({ expanded: true });
  16. }
  17. }
  18. onToggleChildren = () => {
  19. this.setState(prevState => ({
  20. expanded: !prevState.expanded,
  21. }));
  22. };
  23. render() {
  24. const { children, label } = this.props;
  25. const { expanded } = this.state;
  26. return (
  27. <div className="width-21 unit-picker-group" style={{ marginBottom: '5px' }}>
  28. <div className="unit-picker-group-item" onClick={this.onToggleChildren}>
  29. <span style={{ textTransform: 'capitalize' }}>{label}</span>
  30. <i className={`fa ${expanded ? 'fa-minus' : 'fa-plus'}`} />{' '}
  31. </div>
  32. {expanded && children}
  33. </div>
  34. );
  35. }
  36. }