UnitGroup.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. } else {
  17. this.setState({ expanded: false });
  18. }
  19. }
  20. onToggleChildren = () => {
  21. this.setState(prevState => ({
  22. expanded: !prevState.expanded,
  23. }));
  24. };
  25. render() {
  26. const { children, label } = this.props;
  27. const { expanded } = this.state;
  28. return (
  29. <div className="width-21 unit-picker-group" style={{ marginBottom: '5px' }}>
  30. <div className="unit-picker-group-item" onClick={this.onToggleChildren}>
  31. <span style={{ textTransform: 'capitalize' }}>{label}</span>
  32. <i className={`fa ${expanded ? 'fa-minus' : 'fa-plus'}`} />{' '}
  33. </div>
  34. {expanded && children}
  35. </div>
  36. );
  37. }
  38. }