UnitGroup.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. componentDidMount() {
  14. const value = this.props.selectProps.value[this.props.selectProps.value.length - 1].value;
  15. console.log(value);
  16. if (value && this.props.options.some(option => option.value === value)) {
  17. this.setState({ expanded: true });
  18. }
  19. }
  20. componentDidUpdate(nextProps) {
  21. if (nextProps.selectProps.inputValue !== '') {
  22. this.setState({ expanded: true });
  23. }
  24. }
  25. onToggleChildren = () => {
  26. this.setState(prevState => ({
  27. expanded: !prevState.expanded,
  28. }));
  29. };
  30. render() {
  31. const { children, label } = this.props;
  32. const { expanded } = this.state;
  33. return (
  34. <div className="width-21 unit-picker-group" style={{ marginBottom: '5px' }}>
  35. <div className="unit-picker-group-item" onClick={this.onToggleChildren}>
  36. <span style={{ textTransform: 'capitalize' }}>{label}</span>
  37. <i className={`fa ${expanded ? 'fa-minus' : 'fa-plus'}`} />{' '}
  38. </div>
  39. {expanded && children}
  40. </div>
  41. );
  42. }
  43. }